'Man'-Seite ist zu eng (ohne Terminalgröße)

7

Ich mache meine erste "Man" -Seite und benutze es groff, um es zu tun. Wenn ich es jedoch "kompiliere" und ansehe, nimmt es nur eine bestimmte Anzahl von Spalten in meinem Terminal ein. Ich habe versucht, andere Manpages für alle Fälle anzuzeigen, und sie erstrecken sich mit der Breite meines Terminals. Für ein visuelles Beispiel:

---------------------------------------
| stuff(1)             stuff(1)         |
|                                       |
| NAME                                  |
|       a tool to do stuff but          |
|       it isn't really working         |
|                                       |
| DESCRIPTION                           |
|       yadadyadyadyadyadyadydy         |
|       segfwefwefwefwe                 |
|                                       |
|       srgswrgwrg                      |
 ---------------------------------------

... und so weiter, hoffentlich kommen Sie auf die Idee. Die meisten Manpages haben die volle Breite.

Nachdem ich meine Manpage in eine Textdatei geschrieben habe (unter Verwendung der groff / nroff "Syntax"), mache ich das jetzt so:

groff -Tascii -man ./path/to/man | more
n0pe
quelle
Sie sollten die genauen Schritte angeben, mit denen Sie Ihre Manpage "kompilieren".
Wfaulk
@wfaulk, mein schlechtes Ich dachte, ich hätte es hinzugefügt
n0pe
hm, übrigens, was ist mit der Änderung der Überschrift dieser Frage in eine echte Frage? Zum Beispiel: "Wie ändere ich die Breite einer Manpage mit groff?" Oder so ähnlich ...
maxschlepzig
Es geht nicht wirklich auf Ihre eigentliche Frage ein, aber ich denke, es lohnt sich darauf hinzuweisen, dass Sie mit so etwas echte * nix- manSeiten erhalten können, ohne den Schmerz der alten Toolchain ronn. Ich erinnere mich auch daran, dass die OpenBSD-Toolchain für manSeiten anders ist (ich habe jedoch keine wirkliche Vergleichsbasis). Hier istman mdoc
Hank Gay

Antworten:

9

Ich habe groffbeim Aufrufen überprüft, welcher Aufruf ausgeführt wird man man(wobei die gesamte Breite verwendet wird):

$ strace -o log -f -v -s 1024 -e trace=process man man

Das Suchen nach dem groffAnruf führt zu folgenden Ergebnissen:

$ grep groff log | sed 's/\], \[.*//' 
28721 execve("/usr/bin/groff", ["groff", "-mtty-char", "-Tutf8", "-mandoc",
                                         "-rLL=171n", "-rLT=171n"

Jetzt ändere ich die Größe meines xterm:

$ strace -o log2 -f -v -s 1024 -e trace=process  man man
$ grep groff log2 | sed 's/\], \[.*//'
28852 execve("/usr/bin/groff", ["groff", "-mtty-char", "-Tutf8", "-mandoc",
                                         "-rLL=119n", "-rLT=119n"

Daher gehe ich davon aus, dass die Argumente -rLLund -rLTbeeinflussen, welche Terminalbreite groffbeim Kompilieren verwendet wird.

maxschlepzig
quelle
Interessant, ich habe die groffManpage durchgesehen und sie erwähnt nichts über -rLLoder -rLT. Ich habe troffnur für den Fall nachgesehen , weil ich weiß, groffdass es anruft. Dann habe ich nur versucht, die Flags mit hinzuzufügen, 119nund es hat funktioniert, aber es gibt immer noch etwas Platz und es scheint sich nicht zu "dehnen" und der Terminalgröße zu entsprechen, eher wie eine statische Einstellung.
n0pe
Vielen Dank für die
Beschreibung
@MaxMackie, ja, es ist statisch - bestimmt mannur 'dynamisch' die aktuelle Terminalbreite und liefert sie - dh bei meinem ersten Anruf war mein Terminal 171 Spalten breit und beim zweiten Anruf 119 Spalten breit.
Maxschlepzig
Okay, ich denke mein Verständnis davon, was Groff tatsächlich tut, ist dann fehlerhaft. Meine "Quell" -Datei (Klartext mit Makros) ist die Man-Datei? Oder erstellt groff eine neue Datei für mich? Wenn ich eine Manpage erstellen und auf meinem System installieren würde, könnte mir groff dabei helfen oder übernimmt sie nur die Formatierung? Könnte ich zum Beispiel groff -Tascii -man ./path > /man/file?
n0pe
1
@MaxMackie, die man - Seiten auf meinem System installiert sind troff Dateien Markup, zB gunzip -c /usr/share/man/man1/man.1.gz > man.1, file man.1 man.1: troff or preprocessor input text. Dies bedeutet, dass der groffBefehl bei manjedem Aufruf sofort vom Befehl aufgerufen wird. Möglicherweise gibt es Systeme, die die Troff-Ausgabe zwischenspeichern (und möglicherweise nur die Ausgabe mit 80 Spalten unterstützen ...).
Maxschlepzig
1

Ich glaube, die meisten aktuellen Versionen von mando DoTheRightThing ™, wenn Sie Ihre Manpage als Argument mit einem Schrägstrich angeben:

man ./stuff.1

wfaulk
quelle