mandoc (historically called mdocml) is a utility used for formatting
man pages in
BSD Operating Systems (e.g.
NetBSD
NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is a ...
), 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 , mandoc focuses specifically on manuals and is not suitable for general-purpose
type-setting
Typesetting is the composition of text by means of arranging physical ''type'' (or ''sort'') in mechanical systems or ''glyphs'' in digital systems representing ''characters'' (letters and other symbols).Dictionary.com Unabridged. Random Ho ...
.
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.
[ It does not support other macro sets such as ''mm'' and ''ms'', or any typesetting features like hyphenation, fonts and alignment.][ Simple styling such as bold and italics are supported, but italicized text is replaced by underlined text on the terminal.
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.][
]
History
Development began in November 2008 specifically to produce CSS
Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML (including XML dialects such as SVG, MathML or XHTML). CSS is a cornerstone techno ...
-enabled HTML forms of manuals in response to the limitations of groff. mandoc gained initial text-mode output in February 2009. It was then showcased at AsiaBSDCon-2009. In summer of 2010, mandoc was the subject of a NetBSD
NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is a ...
-mentored Google Summer of Code project for producing PostScript
PostScript (PS) is a page description language in the electronic publishing and desktop publishing realm. It is a dynamically typed, concatenative programming language. It was created at Adobe Systems by John Warnock, Charles Geschke, Doug Br ...
and PDF
Portable Document Format (PDF), standardized as ISO 32000, is a file format developed by Adobe in 1992 to present documents, including text formatting and images, in a manner independent of application software, hardware, and operating systems. ...
output alongside the existing text, HTML, and XHTML outputs. This work was completed in August 2010. mandoc became the default formatter of manuals for OpenBSD
OpenBSD is a security-focused, free and open-source, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by forking NetBSD 1.0. According to the website, the OpenBSD project em ...
4.8, released in November 2010. It later became the default formatter in NetBSD
NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is a ...
, FreeBSD
FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
, illumos, Void Linux, Alpine Linux and macOS, and is also included in DragonFlyBSD, MINIX 3, Debian
Debian (), also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of D ...
, Ubuntu, Gentoo, and Fedora
A fedora () is a hat with a soft brim and indented crown.Kilgour, Ruth Edwards (1958). ''A Pageant of Hats Ancient and Modern''. R. M. McBride Company. It is typically creased lengthwise down the crown and "pinched" near the front on both sides ...
. Its advantages were stated as high speed, license, and clean reimplementation.
Sample usage
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.
# 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.[
# Page wide-character manual to the terminal.
$ mandoc -l foo.jp.1
The included apropos implementation can use semantic information in search:]
# Search for all functions starting with 'str' having return type size_t:
$ apropos -s 3 Ft=size_t -a Nm~^str
Other features
* mandoc
supports HTML 5, PostScript, and PDF output via the parameter.[
* ]man.cgi
is a CGI program designed to display manual pages on the web. OpenBSD
OpenBSD is a security-focused, free and open-source, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by forking NetBSD 1.0. According to the website, the OpenBSD project em ...
uses it to format all its manual pages.
References
External links
The mandoc UNIX manpage compiler toolset
OpenBSD online manpages
generated by mandoc's man.cgi program
Undeadly article on mandoc
Google Summer of Code mandoc_ps project site
- work on PostScript support
Freecode page for mandoc
- used until 1.12.2
{{OpenBSD
BSD software
OpenBSD software using the ISC license