Come produrre un pdf in formato A4 di una pagina man?

6

So che man -t ls | open -f -a /Applications/Preview.app produce un pdf della pagina man del comando ls .

Ma il pdf prodotto è in formato Lettera USA (21,59 cm x 27,94 cm).

La pagina man di man dice che l'opzione -t usa internamente /usr/bin/groff -Tps -mandoc -c .

Quindi, secondo il groff man, ho provato questo per ottenere dimensioni A4 (21 cm x 29,7 cm) nel pdf (il formato A4 è ampiamente usato in Europa):

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

Ottengo la dimensione A4 come desiderato, ma la formattazione è brutta (senza grassetto, corsivo, caratteri raddoppiati, sottolineati) ...

Come avere la buona formattazione (come nel primo comando) E la giusta dimensione (come nel comando successivo)?

    
posta quark67 28.10.2017 - 00:08
fonte

2 risposte

7

In questo momento stai eseguendo groff due volte, una volta come parte di man -t , una volta sul proprio file PostScript generato da man .

Prova

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

o direttamente

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

Per far sì che funzioni per tutte le pagine man accessibili all'uomo, un piccolo script aiuterà.

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

Salvalo come manA4 , esegui chmod +x manA4 una volta e poi usalo come manA4 ls .

Se lavori con pagine man compresse (che macOS usa not per impostazione predefinita) devi decomprimerle al volo.

#!/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
    
risposta data 28.10.2017 - 00:49
fonte
2

Modifica /private/etc/man.conf commentando la riga

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

quindi aggiungi questa linea

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

Ora man -t scriverà file ps in formato A4.

man -t ls | open .......
    
risposta data 29.10.2017 - 16:04
fonte

Leggi altre domande sui tag