Me gustaría convertir algunas páginas de manual de Linux a HTML sin usar groff. Mi prejuicio contra groff se debe a algunos problemas de representación PNG que me está dando que parece estar localizado en Sabayon (ya que estos problemas no parecen ocurrir en mis máquinas virtuales VirtualBox para otras distribuciones). Me doy cuenta de que esto es un error, pero parece que no habrá una solución en el futuro cercano, por lo que me gustaría preguntar si hay otras formas de convertir páginas de manual de Linux a HTML. El uso de las páginas HTML en http://linux.die.net/man no es una solución aceptable ya que algunas de las páginas de manual que me interesan no están allí (por ejemplo, emerge(1)
no están allí).
man
conversion
html
BH2017
fuente
fuente
troff
? Es gratis.warning: can't find font `b'
mensaje; esa puede ser la causa, ya que los archivos png creados tienden a ser solo texto en formato gráfico. posiblemente falta un paquete de fuentes que necesita ser instalado.Respuestas:
Hay muchas alternativas como roffit , troff , man2html . También hay navegadores de páginas de manual en línea basados en Perl, como manServer .
Mi favorito es
pandoc
, aunque lamentablemente no parece admitir la entrada ROFF de forma predeterminada (aunque probablemente pueda usarlo si necesita encadenar múltiples filtros de transformación juntos).Ejemplo de man2html:
roffit ejemplo:
Otras herramientas:
troff
: voy a probar http://heirloom.sourceforge.net/doctools.html . Sospecho que schily tiene OpenSolaris y sus amigos en mente :-).fuente
man2html
ejemplo? ¿Y por qué redirigir a un archivo/var/www/html
? No hay necesidad de un servidor web, solo redirija a un archivo local y puede apuntar su navegador a él. Además, ¿verificaste tuman2html
salida? Lo probé en mi Arch y no produce resultados formateados..bz2
formato en lugar de.gz
, ¿podría reescribir su respuesta en consecuencia? Como modificar las líneas zcat con las que funcionarán con páginas man comprimidas con bzip2.Este primer bit es un desgarro desvergonzado del sitio web oficial :
pacman
me informa que mimdocml
tamaño de paquete instalado localmente es 3.28mb, y que incluye los siguientes/usr/bin
binarios ubicados:Con ella puedo hacer:
Puede aplicar sus propias hojas de estilo a su gusto. Toda la documentación también está en línea . Y todo eso, como creo, también se compila
mandoc
.fuente
mandoc
.En primer lugar, debe tenerse en cuenta que hay más de un programa llamado
man2html
.Una utilidad llamada
man2html
es 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 detroff
onroff
salida. Este programa se agregó a la suite de hombre de Frederico Lucifredi.El programa entiende la semántica de la
man
ymandoc
macros, y emite una estructura HTML razonable. Por ejemplo, cuando usa párrafos sangrados, así: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
):Cuando necesitaba convertir esto a HTML, hace unos cinco años, lo único que encontré que hizo un trabajo razonable fue el
man2html
programa 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
troff
macros. 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é unM2
registro mediante el cual puede escribir código que detecta que se está ejecutandoman2html
y puede hacer condicionalmente algunas cosas de manera diferente (desplácese hacia abajo para ver un ejemplo). Además, agregué un.M2SS
comando que le permite emitir una sección de encabezado HTML personalizado.Mi página de manual grande está alojada aquí . Esto se produce con
man2html
postprocesado por migenman.txr
programa, 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
:Para ver un ejemplo de cómo la salida es condicionalmente diferente entre HTML y
nroff
podemos ver una sección de laman
salida: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:
que son todas las macros personalizadas definidas en el mismo documento. Debajo
.mets
,< b
mediasb
es una variable meta-sintáctica.>> a b
significaa
es una sintaxis concreta, junto a la cual está la meta-sintaxisb
sin ningún espacio intermedio, y<> a b c
significab
es una meta- sintaxis crujida entrea
yc
literales.Mi versión mejorada de
man2html
comprende 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
man2html
comprende.fuente
Desde que OpenSolaris se puso a disposición como OSS, existe una versión gratuita
troff
.Aquí hay un conjunto de fuentes portadas:
http://heirloom.sourceforge.net/doctools.html
pero Heirloom es un proyecto muerto desde aprox. 2007. Puede que desee consultar
https://github.com/nt-roff/heirloom-doctools
donde algunas personas continúan el proyecto de la herencia muerta.
Junto con
man2html
, troff le permite crear automáticamente páginas de manual html agradables.Consulte, por ejemplo, las páginas de manual de SchilliX:
http://schillix.sourceforge.net/man/
con el Schily Bourne Shell:
http://schillix.sourceforge.net/man/man1/bosh.1.html
Estoy contento con esto y con las opciones correctas, obtienes páginas man vinculadas a otra documentación del mismo grupo. Yo uso, por ejemplo, este comando:
eso es parte del sistema de archivos make en las herramientas schily. Tenga en cuenta los archivos
../conf/pre.html
y../conf/post.html
del schily makefilesystem que se necesitan para el título y otros. Es posible que desee cambiar estas cuatro necesidades.Un mejorado
man2thml
es parte de las herramientas inteligentes (ver la parte inferior de labosh
página del manual).Por cierto: una información divertida: el
troff
código fuente completo más todas las fuentes para todos los programas auxiliares comosoelim
,tbl
... más laman
fuente del programa es solo la mitad del código que necesita para elmandoc
programa ymandoc
tiene solo untbl
soporte muy limitado que rompe la mayoría del hombre de Solaris páginasSi necesita soporte para
mandoc
fuentes de troff formateadas de FreeBSD y similares, creé un conjunto de macros mandoc que funcionantroff
. Consulte las fuentes de SchilliX en: https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/ El código en cuestión está en los archivosandoc
ydoc*
.Las
man
fuentes del programa en SchilliX-ON se han cambiado para llamar ennroff -mandoc
lugar denroff -man
.fuente
heirloom-doctools
también. Tuve que tocar el violínmk.config
:-).Los problemas de OP con los archivos PNG coinciden con mi experiencia al usar groff para la página del manual de xterm y la documentación de las secuencias de control. El problema es que Groff está tratando de representar tablas como una imagen recortada del archivo PDF, y que ha tenido errores durante varios años. Si bien he usado el script manlhtml de Perl desde la década de 1990 para la documentación de ncurses, para otros programas me resultó más sencillo generar archivos html y pdf ad hoc utilizando groff. Los archivos PDF funcionan bien; los archivos html no.
Al mismo tiempo, el script de Perl tenía sus propios problemas.
Como ninguno de los dos iba a desaparecer (y debido a que las alternativas sugeridas no han sido una mejora, debido a la adición de dependencias o la introducción de otras limitaciones), resolví el problema haciendo mejoras en man2html (además de las que había hecho en el transcurso de varios años) y agregó una nueva opción de script de configuración para cada programa para permitir el uso de groff como una página de manual predeterminada para el convertidor html, pero usando man2html cuando configuro la opción. Una vez hecho esto, eliminé todos los archivos html generados por groff este año de mi sitio web . Hay una página "man2html" en el sitio web que documenta esto; el script real está disponible en mi página de varios scripts .
Parece que algunas de las sugerencias y comentarios no han notado que hay (al menos) dos programas llamados man2html:
El programa C tiene su propio formato, no se basa en nroff / groff / lo que sea. Se puede leer una página de manual de la entrada estándar, o como un archivo real (entre otras cosas - véase la página del manual ). Dada una página de manual de sintaxis nroff "foo.1", puede formatearla usando cualquiera de estos comandos:
El script de Perl lee páginas de manual formateadas , por ejemplo, de
nroff
(que para la pregunta de OP es un contenedorgroff
). Podrías usarlo así:Investigué el uso del programa C como alternativa al script Perl, pero lo descarté porque
Por cierto, maneja los múltiples redireccionamientos utilizados en este archivo (lo cual es un problema con troff heredado, la razón por la cual las instrucciones de instalación de ncurses han aconsejado usar groff durante los últimos 20 años).
fuente
man2html
toma la salida nroff como entrada, por lo tanto, no puede darle un archivo fuente de página de manual como entrada.man2html
que estés hablando.