¿Cómo producir un pdf en formato A4 de una página de manual?

Sé que man -t ls | open -f -a /Applications/Preview.appproduce un pdf de la página de manual del lscomando.

Pero el pdf producido está en tamaño carta de EE. UU. (21,59 cm x 27,94 cm).

La página de manual de mandice que la -topción se usa internamente /usr/bin/groff -Tps -mandoc -c.

Entonces, según el groffhombre, probé esto para obtener el tamaño A4 (21 cm x 29,7 cm) en el pdf (el tamaño A4 se usa ampliamente en Europa):

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

Obtengo el tamaño A4 deseado, pero el formato es feo (sin negrita, cursiva, caracteres duplicados, subrayados)...

¿Cómo tener el buen formato (como en el primer comando) Y el tamaño correcto (como en el último comando)?

Respuestas (2)

En este momento, está ejecutando groff dos veces, una como parte de man -t, y otra sola en el archivo PostScript generado por man.

Intentar

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 directamente

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

Para que funcione para todas las páginas del manual accesibles para el hombre, un pequeño script ayudará.

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

Guárdelo como manA4, ejecútelo chmod +x manA4una vez y luego utilícelo como manA4 ls.


En caso de que esté trabajando con páginas de manual comprimidas (que macOS no usa de forma predeterminada), debe descomprimirlas sobre la marcha.

#!/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
Esta solución no funciona con páginas man comprimidas.
@fd0 Me sentí tentado a dejar esto como un ejercicio para el lector (especialmente porque macOS no funciona con páginas man comprimidas de manera predeterminada) :-)
Cierto, pero en man.conf, /usr/local/share/manestá mapeado, lo que puede tener páginas man comprimidas.
es ps2pdfun comando? Hago man ps2pdfy también entro ps2pdfen un aviso y recibo mensajes de error.
@DavidAnderson tal vez lo instalé a través de Homebrew o como parte de TeX. Pero no es necesario de todos modos, Preview puede leer y renderizar archivos Postscript directamente.

Edite /private/etc/man.conf comentando la línea

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

luego agrega esta linea

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

Ahora man -tescribirá archivos ps en tamaño de papel A4.

man -t ls | open .......
Y no olvide repetir esto después de cada actualización de macOS...