Wie erstelle ich eine Manpage im A4-Format als PDF?

Ich weiß, man -t ls | open -f -a /Applications/Preview.appdass eine PDF-Datei der Manpage des lsBefehls erstellt wird.

Das erzeugte PDF ist jedoch im US-Letter-Format (21,59 cm x 27,94 cm).

Die Manpage von manbesagt, dass die -tOption intern verwendet wird /usr/bin/groff -Tps -mandoc -c.

Also, laut dem groffMann, habe ich das versucht, um das A4-Format (21 cm x 29,7 cm) im PDF zu erhalten (A4-Format ist in Europa weit verbreitet):

man -t ls | /usr/bin/groff -Tps -mandoc -c -P-pa4 | open -f -a /Applications/Preview.app.

Ich erhalte wie gewünscht das A4-Format, aber die Formatierung ist unschön (kein Fett, Kursiv, Zeichen verdoppelt, Unterstrich)...

Wie bekommt man die gute Formatierung (wie im ersten Befehl) UND die richtige Größe (wie im späteren Befehl)?

Antworten (2)

Im Moment führen Sie groff zweimal aus, einmal als Teil von man -t, einmal allein für die von generierte PostScript-Datei man.

Versuchen

groff -Tps -mandoc -c -P-pa4 /usr/share/man/man1/ls.1 >out.ps
ps2pdf out.ps man-ls.pdf
open man-ls.pdf

oder direkt

groff -Tps -mandoc -c -P-pa4 /usr/share/man/man1/ls.1 | 
    open -f -a /Applications/Preview.app

Damit es für alle für Menschen zugänglichen Manpages funktioniert, hilft ein kleines Skript.

#!/bin/sh
page=$(man -W $1)
if [ -r "$page" ]; then
    groff -Tps -mandoc -c -P-pa4 "$page" | open -f -a Preview.app
fi

Speichern Sie es als manA4, führen Sie es chmod +x manA4einmal aus und verwenden Sie es dann als manA4 ls.


Falls Sie mit komprimierten Manpages arbeiten (die macOS standardmäßig nicht verwendet), müssen Sie diese spontan dekomprimieren.

#!/bin/bash
page=$(man -W $1)
if [ -r "$page" ]; then
    if [[ "$page" =~ .*.gz$ ]]; then
        gzcat "$page" | groff -Tps -mandoc -c -P-pa4 | open -f -a Preview.app
    else
        groff -Tps -mandoc -c -P-pa4 "$page" | open -f -a Preview.app
    fi
fi
Diese Lösung funktioniert nicht mit komprimierten Handbuchseiten.
@fd0 Ich war versucht, dies dem Leser als Übung zu überlassen (insbesondere, weil macOS standardmäßig nicht mit komprimierten Manpages arbeitet) :-)
Stimmt, aber in man.confist /usr/local/share/manabgebildet, was komprimierte Manpages haben kann.
Ist ps2pdfein Befehl? Ich mache ein man ps2pdfund gebe auch ps2pdfan einer Eingabeaufforderung ein und erhalte Fehlermeldungen.
@DavidAnderson vielleicht habe ich es über Homebrew oder als Teil von TeX installiert. Aber es ist sowieso nicht erforderlich, Preview kann Postscript-Dateien direkt lesen und rendern.

Bearbeiten Sie /private/etc/man.conf, indem Sie die Zeile auskommentieren

TROFF       /usr/bin/groff -Tps -mandoc -c

fügen Sie dann diese Zeile hinzu

TROFF       /usr/bin/groff -Tps -mandoc -c -P-pa4

Jetzt man -twerden PS-Dateien in A4-Papiergröße geschrieben.

man -t ls | open .......
Und vergessen Sie nicht, dies nach jedem macOS-Upgrade zu wiederholen ...