En primer lugar, debe tenerse en cuenta que hay más de un programa llamado man2html.
Una utilidad llamada man2htmles un programa en C originalmente escrito a fines de la década de 1990 por Richard Verhoeven en la Universidad Tecnológica de Eindhoven a fines de la década de 1990. El programa tiene partes internas sustancialmente extravagantes. Sin embargo, tiene la ventaja de que funciona con la fuente de página del manual de crudo, en lugar de troffo nroffsalida. Este programa se agregó a la suite de hombre de Frederico Lucifredi.
El programa entiende la semántica de la many mandocmacros, y emite una estructura HTML razonable. Por ejemplo, cuando usa párrafos sangrados, así:
Palabra .IP
Definicion de
palabra.
.RS
el programa publicará una lista de definiciones HTML.
Mantengo una página de manual muy grande (la mayoría de un megabyte de fuente, y casi 400 páginas de largo, cuando se convierte a PDF de tamaño carta por groff):
$ ls -l txr.1
-rw-rw-r-- 1 kaz kaz 980549 3 de enero 11:38 txr.1
Cuando necesitaba convertir esto a HTML, hace unos cinco años, lo único que encontré que hizo un trabajo razonable fue el man2htmlprograma C, más el procesamiento posterior de su salida a "temporada al gusto".
Eventualmente, quería un documento HTML de mejor calidad, así que comencé a escribir troffmacros. Las limitaciones del programa C se volvieron dolorosamente aparentes, así que lo bifurqué. En mi sitio de git, puede encontrar un repositorio de git con 30 parches para man2html . Estos parches corrigen una serie de errores y mejoran el programa con una capacidad mucho mejor para interpretar macros de troff, condicionales, bucles y otras construcciones. También agregué un M2registro mediante el cual puede escribir código que detecta que se está ejecutando man2htmly puede hacer condicionalmente algunas cosas de manera diferente (desplácese hacia abajo para ver un ejemplo). Además, agregué un .M2SScomando que le permite emitir una sección de encabezado HTML personalizado.
Mi página de manual grande está alojada aquí . Esto se produce con man2htmlpostprocesado por mi genman.txrprograma, que reorganiza las secciones y agrega hipervínculos en todo el documento. También reescribe los enlaces internos en la tabla de contenido para que sean URL estables (basadas en hashing en lugar de enumeración arbitraria) y hace que la tabla de contenido se pueda contraer mediante algún Javascript.
Los comandos exactos utilizados por mi Makefile:
man2html txr.1 | ./txr genman.txr -> txr-manpage.html
tbl txr.1 | pdfroff -man --no-toc -> txr-manpage.pdf
Para ver un ejemplo de cómo la salida es condicionalmente diferente entre HTML y nroffpodemos ver una sección de la mansalida:
9.19.4 Macrodestrucción
Sintaxis:
(defstruct {<name> | (<name> <arg> *)} <super>
<slot-specifier> *)
La macro defstruct define un nuevo tipo de estructura y registra
debajo de <nombre>, que debe ser un símbolo enlazable, de acuerdo con
La función enlazable. Del mismo modo, el nombre de cada <slot> debe
también sea un símbolo enlazable.
Arriba, observe cómo se denotan los parámetros <angle> <brackets>. En la versión HTML, aparecen en cursiva .
La sección de sintaxis aparece en el código fuente de esta manera:
.coNP Macro @ defstruct
.synb
.mets (defstruct >> {nombre | >> (nombre << arg *)} <super
.mets \ \ << especificador de ranura *)
.syne
que son todas las macros personalizadas definidas en el mismo documento. Debajo .mets, < bmedias bes una variable meta-sintáctica. >> a bsignifica aes una sintaxis concreta, junto a la cual está la meta-sintaxis bsin ningún espacio intermedio, y <> a b csignifica bes una meta- sintaxis crujida entre ay cliterales.
Mi versión mejorada de man2htmlcomprende la macro bastante complicada que implementa estas convenciones de marcado.
Además, tenga en cuenta cómo el manual ha numerado automáticamente las secciones: todo esto se hace por código troff, que man2htmlcomprende.
troff? Es gratis.