mdocml – mdoc macro compiler, current version @VERSION@ (@VDATE@)

Sources: current, cvsweb (archives) | Binaries: windows 32-bit, windows 64-bit, mac os x (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; and apropos, for semantic search of manual content (both mandocdb and apropos are still experimental). It is a BSD.lv project.

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

Sources

mdocml is in plain-old ANSI C and should build and run on any modern system; however, you'll need libdb to build apropos and mandocdb (this is installed by default on BSD UNIX systems — see the Makefile if you're running Linux). To build and install into /usr/local/, just run make install. Be careful: the preconv and apropos binary names are usually taken by existing utilities.

Binaries

Binary archives consist of pre-compiled binaries, manuals, and other necessary files. Universal (Mac OS X) binaries are compiled for the PCC, i386, and x86_64 architectures. Windows binaries are compiled with MingW for the 32-bit (i686) and 64-bit (x86_64) architectures.

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

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 (text | xhtml | pdf | ps)
demandoc(1) emit only text of UNIX manuals (text | xhtml | pdf | ps)
mandoc(1) format and display UNIX manuals (text | xhtml | pdf | ps)
preconv(1) recode multibyte UNIX manuals (text | xhtml | pdf | ps)
mandoc(3) mandoc macro compiler library (text | xhtml | pdf | ps)
man(7) man language reference (text | xhtml | pdf | ps)
eqn(7) eqn-mandoc language reference (text | xhtml | pdf | ps)
mandoc_char(7) mandoc special characters (text | xhtml | pdf | ps)
mdoc(7) mdoc language reference (text | xhtml | pdf | ps)
roff(7) roff-mandoc language reference (text | xhtml | pdf | ps)
tbl(7) tbl-mandoc language reference (text | xhtml | pdf | ps)
mandocdb(8) index UNIX manuals (text | xhtml | pdf | ps)

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.

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

News

08-10-2011: version 1.12.0

This version features a new, work-in-progress mandoc output mode: -Tman. This mode allows a system maintainer to distribute man media for older systems that may not natively support mdoc, such as old Solaris systems. The -Ofragment option was added to mandoc's -Thtml and -Txhtml modes.

While adding features, an apropos utility has been merged from the mandoc-tools sandbox. This interfaces with mandocdb for semantic search of manual content. apropos is different from the traditional apropos primarily in allowing keyword search (such as for functions, utilities, etc.) and regular expressions. Note that the calling syntax for apropos is likely to change as it settles down.

In documentation news, the mdoc and man manuals have been made considerably more readable by adding MACRO OVERVIEW sections, by moving the gory details of the LANGUAGE SYNTAX to the roff manual, and by moving the very technical MACRO SYNTAX sections down to the bottom of the page.

Furthermore, for tbl, the -Tascii mode horizontal spacing of tables was rewritten completely. It is now compatible with groff, both with and without frames and rulers. Nesting of indented blocks is now supported in man, and several bugs were fixed regarding indentation and alignment. The page headers in mdoc are now nicer for very long titles.

02-09-2011: version 1.11.7

Added demandoc utility for stripping away macros and escapes. This replaces the historical deroff utility. Also improved the mdoc and man manuals.

16-08-2011: version 1.11.6

Handling of tr macro in roff implemented. This makes Perl documentation much more readable. Hyphenation is also now enabled in man format documents. Many other general improvements have been implemented. Furthermore, a 64-bit Windows binary is now available at mdocml-win64.zip and a Mac OS X universal binary is available at mdocml-macosx.zip.

See cvsweb for historical notes.

Copyright © 2008–2011 Kristaps Dzonsons, $Date$