mdocml – mdoc macro compiler

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 libmdoc, libman, and libroff validating compilers; and mandoc, which interfaces with the compiler libraries to format output for UNIX terminals, XHTML, HTML, PostScript, and PDF. It is a BSD.lv project.

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

SOURCES

mdocml is architecture- and system-neutral, written in plain-old C. The most current version is @VERSION@, dated @VDATE@. A full ChangeLog (txt) is written with each release.

Current

Source archive /snapshots/mdocml.tar.gz (md5)
Online source cvsweb

Downstream

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

Historical

Source archive /snapshots/

DOCUMENTATION

These manuals are generated automatically and refer to the current snapshot.

mandoc(1) format and display UNIX manuals (text | xhtml | pdf | postscript)
man(3) man macro compiler library (text | xhtml | pdf | postscript)
mdoc(3) mdoc macro compiler library (text | xhtml | pdf | postscript)
roff(3) roff macro compiler library (text | xhtml | pdf | postscript)
man(7) man language reference (text | xhtml | pdf | postscript)
mandoc_char(7) mandoc special characters (text | xhtml | pdf | postscript)
mdoc(7) mdoc language reference (text | xhtml | pdf | postscript)
roff(7) roff-mandoc language reference (text | xhtml | pdf | postscript)
tbl(7) tbl-mandoc language reference (text | xhtml | pdf | postscript)

See Writing UNIX Manual Pages for a general introduction to manpages and mdoc.

CONTACT

Please use the mailing lists for bug-reports, patches, questions, etc. (these require subscription). 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

07-01-2011: version 1.10.9

Many back-end fixes have been implemented: argument handling (quoting), man improvements, error/warning classes, and many more.

Initial tbl functionality (see the TS, TE, and T& macros in the roff manual) has been merged from tbl.bsd.lv. Output is still minimal, especially for -Thtml and -Txhtml, but manages to at least display data. This means that mandoc now has built-in support for two troff preprocessors via libroff: soelim and tbl.

24-12-2010: version 1.10.8

Significant improvements merged from OpenBSD downstream, including

  • many new roff components,
  • in-line implementation of troff's soelim,
  • broken-block handling,
  • overhauled error classifications, and
  • cleaned up handling of error conditions.

Also overhauled the -Thtml and -Txhtml output modes. They now display readable output in arbitrary browsers, including text-based ones like lynx. See HTML and XHTML manuals in the DOCUMENTATION section for examples. Attention: available style-sheet classes have been considerably changed! See the example.style.css file for details. Lastly, libmdoc and libman have been cleaned up and reduced in size and complexity.

See cvsweb for historical notes.

Copyright © 2008–2011 Kristaps Dzonsons, $Date$