mandoc (históricamente llamado mdocml ) es una utilidad utilizada para formatear páginas de manual en sistemas operativos BSD (por ejemplo, NetBSD ), específicamente aquellas escritas en los lenguajes de macros mdoc y man . A diferencia de groff y las herramientas más antiguas troff y nroff que se utilizan predominantemente para este propósito en herramientas como , mandoc se centra específicamente en manuales y no es adecuado para la composición tipográfica de propósito general .man
mandoc
se utiliza principalmente para dar formato a los manuales mdoc utilizados en los sistemas operativos BSD , pero también implementa la mayoría de las macros man utilizadas en las distribuciones de Linux , así como un subconjunto de comandos roff ocasionalmente entremezclados con las macros man . [2] [1] : 1.14.5 No admite otros conjuntos de macros como mm y ms , ni ninguna característica de composición tipográfica como separación de palabras, fuentes y alineación. [2] : compatibilidad Se admiten estilos simples como negrita y cursiva, pero el texto en cursiva se reemplaza por texto subrayado en la terminal. [3] [4]
mandoc tiene soporte integrado para el preprocesador troff soelim (inclusión) y soporte integrado parcial para tbl y eqn . Tiene un fuerte soporte para salida UTF-8. También puede usar la información semántica en los manuales de mdoc para implementar la búsqueda semántica , que antes de la versión 1.4.1, dependía de sqlite . [1] : 1.4.1
El desarrollo comenzó en noviembre de 2008 específicamente para producir formatos HTML de manuales habilitados para CSS en respuesta a las limitaciones de groff . mandoc obtuvo una salida inicial en modo texto en febrero de 2009. [5] Luego se exhibió en AsiaBSDCon-2009. [6] [7] [8] En el verano de 2010, mandoc fue el tema de un proyecto Google Summer of Code guiado por NetBSD [9] para producir salida PostScript y PDF junto con las salidas de texto, HTML y XHTML existentes . Este trabajo se completó en agosto de 2010. [10] mandoc se convirtió en el formateador predeterminado de los manuales para OpenBSD 4.8, publicado en noviembre de 2010. [11] [12] Más tarde se convirtió en el formateador predeterminado en NetBSD , FreeBSD , illumos , Void Linux , Alpine Linux y macOS , y también se incluye en DragonFlyBSD , MINIX 3 , Debian , Ubuntu , Gentoo y Fedora . [13] Sus ventajas se indicaron como alta velocidad, [14] licencia y reimplementación limpia.
A continuación se muestra cómo ejecutarse mandoc
por sí solo. Normalmente, se llamaría a través de la utilidad man . En este ejemplo, foo.1
es el nombre de un manual de UNIX mdoc . [15]
$ # Manual de página a la terminal. $ mandoc -l foo.1 $ # Salida HTML con una hoja de estilos. $ mandoc -Thtml -Ostyle = style.css >foo.1.html
Los manuales multibyte (localizados) también se pueden reproducir sin preprocesamiento. En este ejemplo, foo.jp.1
se trata de un manual en japonés codificado en UTF-8 . Mandoc detectará automáticamente la codificación. [15]
$ # Manual de caracteres anchos de página para la terminal. $ mandoc -l foo.jp.1
La implementación apropiada incluida puede usar información semántica en la búsqueda: [16]
$ # Busca todas las funciones que comiencen con 'str' y tengan el tipo de retorno size_t: $ apropos -s 3 Ft = size_t -a Nm~^str
mandoc
Admite salida HTML 5, PostScript y PDF a través del -T
parámetro. [15]man.cgi
es un programa CGI diseñado para mostrar páginas de manual en la web. OpenBSD lo utiliza para dar formato a todas sus páginas de manual. [17]