mdocml – UNIX manpage compiler, current version @VERSION@ (@VDATE@)

Sources: current, cvsweb (archives)

Description

mdocml is a suite of tools compiling mdoc, the roff macro package of choice for BSD manual pages, and man, the predominant historical package for UNIX manuals. The mission of mdocml is to deprecate groff, the GNU troff implementation, for displaying mdoc pages whilst providing token support for man.

Why? groff amounts to over 5 MB of source code, most of which is C++ and all of which is GPL. It runs slowly, produces uncertain output, and varies in operation from system to system. mdocml strives to fix this (respectively small, C, ISC-licensed, fast and regular).

mdocml consists of the libmandoc validating compiler and mandoc, which interfaces with the compiler library to format output for UNIX terminals (with support for wide-character locales), XHTML, HTML, PostScript, and PDF. It also includes preconv for recoding multibyte manuals, demandoc for emitting only text parts of manuals, mandocdb for indexing manuals, apropos (includes whatis mode) for indexed manual search, and man.cgi for indexed manual search online. It is a BSD.lv project.

Disambiguation: mdocml is often referred to by its installed binary, mandoc.

Sources

mdocml is in ISO C99 and should build and run on any modern system; however, you'll need sqlite3 to build apropos (links to whatis), man.cgi, and mandocdb. To build and install into /usr/local/, just run make install. Be careful: the preconv, apropos, and whatis binary names are usually taken by existing utilities.

Downstream

Several systems come bundled with mdocml utilities. If your system does not appear below, the maintainers have not contacted me and it should not be considered official. Please contact us if you plan on maintaining a downstream version!

DragonFly BSD usr.bin/mandoc
FreeBSD ports/textproc/mdocml
NetBSD src/external/bsd/mdocml
OpenBSD src/usr.bin/mandoc
pkgsrc textproc/mdocml
Minix3 external/bsd/mdocml

Documentation

These manuals are generated automatically and refer to the current release. They are the authoritative documentation for the mdocml system.

apropos(1) search the manual page database
demandoc(1) emit only text of UNIX manuals
mandoc(1) format and display UNIX manuals
preconv(1) recode multibyte UNIX manuals
mandoc(3) mandoc macro compiler library
man(7) man language reference
man.cgi(7) cgi for manpage query and display
eqn(7) eqn-mandoc language reference
mandoc_char(7) mandoc special characters
mdoc(7) mdoc language reference
roff(7) roff-mandoc language reference
tbl(7) tbl-mandoc language reference
mandocdb(8) index UNIX manuals

Contact

Use the mailing lists for bug-reports, patches, questions, etc. Please check the TODO for known issues before posting. All lists are subscription-only: send a blank e-mail to the listed address to subscribe. Beyond that, contact Kristaps at kris...@bsd.lv. Archives are available at Gmane.

disc...@mdocml.bsd.lv bug-reports, general questions, and announcements
tec...@mdocml.bsd.lv patches and system discussions
sou...@mdocml.bsd.lv source commit messages

News

xx-xx-2012: version 1.12.4

Ingo, can you summarise your changes here?

The mandocdb tools (mandocdb, apropos (absorbing whatis), and man.cgi) have been re-written to use sqlite3 as a database.

See cvsweb for historical notes.

Copyright © 2008–2011 Kristaps Dzonsons, $Date$