mandoc
ReleaseNovember 2008
Stable release
1.14.6 / September 23, 2021; 4 years ago (2021-09-23)[1]
Written inC
TypeTypesetting
LicenseISC license
Websitemandoc.bsd.lv Edit this on Wikidata
Repository

mandoc (historically called mdocml) is a utility used for formatting man pages in BSD Operating Systems (e.g. NetBSD), specifically those written in the mdoc and man macro languages. Unlike the groff and older troff and nroff tools that are predominantly used for this purpose by tools such as man, mandoc focuses specifically on manuals and is not suitable for general-purpose type-setting.

mandoc is mainly used to format the mdoc manuals used in the BSD Operating Systems, but it also implements most of the man macros used in Linux distributions, as well as a subset of roff commands occasionally intermixed with the man macros.[2][1]: 1.14.5  It does not support other macro sets such as mm and ms, or any typesetting features like hyphenation, fonts and alignment.[2]: compatibility  Simple styling such as bold and italics are supported, but italicized text is replaced by underlined text on the terminal.[3][4]

mandoc has built-in support for the troff soelim (inclusion) preprocessor and partial built-in support for tbl and eqn. It has strong support for UTF-8 output. It can also use the semantic information in mdoc manuals to implement semantic search, which before version 1.4.1, relied on sqlite.[1]: 1.4.1 

History

edit

Development began in November 2008 specifically to produce CSS-enabled HTML forms of manuals in response to the limitations of groff. mandoc gained initial text-mode output in February 2009.[5] It was then showcased at AsiaBSDCon-2009.[6][7][8] In summer of 2010, mandoc was the subject of a NetBSD-mentored Google Summer of Code project[9] for producing PostScript and PDF output alongside the existing text, HTML, and XHTML outputs. This work was completed in August 2010.[10] mandoc became the default formatter of manuals for OpenBSD 4.8, released in November 2010.[11][12] It later became the default formatter in NetBSD, FreeBSD, illumos, Void Linux, Alpine Linux and macOS, and is also included in DragonFlyBSD, MINIX 3, Debian, Ubuntu, Gentoo, and Fedora.[13] Its advantages were stated as high speed,[14] license, and clean reimplementation.

Sample usage

edit

The following demonstrates running mandoc on its own. Usually, it would be called via the man utility. In this example, foo.1 is the name of an mdoc UNIX manual.[15]

$ # Page manual to the terminal.
$ mandoc -l foo.1
$ # HTML output with a style-sheet.
$ mandoc -Thtml -Ostyle=style.css >foo.1.html

Multibyte (localised) manuals may also be rendered without preprocessing. In this example, foo.jp.1 is a Japanese manual encoded in UTF-8. mandoc will automatically detect the encoding.[15]

$ # Page wide-character manual to the terminal.
$ mandoc -l foo.jp.1

The included apropos implementation can use semantic information in search:[16]

$ # Search for all functions starting with 'str' having return type size_t:
$ apropos -s 3 Ft=size_t -a Nm~^str

Other features

edit
  • mandoc supports HTML 5, PostScript, and PDF output via the -T parameter.[15]
  • man.cgi is a CGI program designed to display manual pages on the web. OpenBSD uses it to format all its manual pages.[17]

References

edit
  1. ^ a b c "Release notes". September 23, 2021.
  2. ^ a b roff(7) – OpenBSD Miscellaneous Information Manual
  3. ^ "Italics and colour in manual pages on a nosh user-space virtual terminal". jdebp.eu.
  4. ^ mandoc(1) – FreeBSD General Commands Manual. "Font styles are applied by using back-spaced encoding..."
  5. ^ "Source history". Mdocml.bsd.lv. Retrieved 2010-12-18.
  6. ^ "AsiaBSDCon 2009: Deprecating groff for BSD manual display". 2009.asiabsdcon.org. 2009-03-15. Retrieved 2010-12-18.
  7. ^ "Deprecating groff for BSD manual display" (PDF). Retrieved 2010-12-18.
  8. ^ "Video of AsiaBSDCon presentation". Youtube.com. Retrieved 2010-12-18.
  9. ^ "Google Summer of Code: mandoc_ps". Netbsd-soc.sourceforge.net. Retrieved 2010-12-18.
  10. ^ "NetBSD Blog". Blog.netbsd.org. 2010-08-11. Retrieved 2010-12-18.
  11. ^ "OpenBSD 4.8". Openbsd.org. 2010-11-01. Retrieved 2010-12-18.
  12. ^ "groff deleted from tree".
  13. ^ "Availability of the mandoc toolset". Mdocml.bsd.lv.
  14. ^ Unangst, Ted. "mandoc speed benchmarks".
  15. ^ a b c mandoc(1) – OpenBSD General Commands Manual
  16. ^ apropos(1) – OpenBSD General Commands Manual
  17. ^ man.cgi(8) – OpenBSD System Manager's Manual
edit

📚 Artikel Terkait di Wikipedia

Man page

typically uses a formatting program such as nroff with a macro package or mandoc, and also a terminal pager program such as more or less to display its output

Apropos (Unix)

already known. It uses the same database as apropos does. On systems with mandoc, it is a wrapper for apropos -f (search by name only). $ whatis whatis whatis(1)

Maguing ambush

sympathizer Oscar Gandawali along with gang members led by Lomala Baratamo Mandoc ambushed Lanao del Sur governor Mamintal Adiong Jr. in the town of Maguing

Troff

semantically annotated manual pages, which are better adapted to mandoc conversion to other formats. mandoc is a fusion that supports both sets of manual commands

OpenBSD

implementation of the SSL and TLS protocols, forked from OpenSSL 1.0.1g mandoc, a utility used for formatting man pages OpenBGPD, an implementation of

Groff (software)

documentation on Unix and Unix-like systems. OpenBSD has replaced groff with mandoc in the base install, since their 4.9 release, as has macOS Ventura. groff

Eqn (software)

language by adding a number of new keywords such as smallover and accent. mandoc, a specialised compiler for UNIX man pages, also contains a standalone eqn

International Union of Railways

Retrieved 11 January 2014. Mandoc, Dan (2 June 2023). "The second phase of the FRMCS introduction begins". globalrailwayreview.com. Mandoc, Dan; Evanghelou, Jean-Michel