mdocml – mdoc macro compiler
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, XHTML, HTML, PostScript, and PDF. It is a BSD.lv project.
Disambiguation: mdocml is often referred to by its installed binary, mandoc
.
mdocml is in plain-old ANSI C and should build and run on any UNIX system. The most current
version is @VERSION@, dated @VDATE@. If your system doesn't come
with mdocml (see Downstream
), run make
to compile and make
install
to install into /usr/local.
Note that mandoc-db is not yet linked to the build. You must run make
mandoc-db
to build it.
Source archive | /snapshots/mdocml.tar.gz (md5) |
Online source | cvsweb |
DragonFly BSD | usr.bin/mandoc |
FreeBSD | ports/textproc/mdocml |
NetBSD | src/external/bsd/mdocml |
OpenBSD | src/usr.bin/mandoc |
Source archive | /snapshots/ |
These manuals are generated automatically and refer to the current snapshot.
mandoc(1) | format and display UNIX manuals (text | xhtml | pdf | postscript) |
mandoc-db(1) | index UNIX manuals (text | xhtml | pdf | postscript) |
mandoc(3) | mandoc macro compiler library (text | xhtml | pdf | postscript) |
man(7) | man language reference (text | xhtml | pdf | postscript) |
eqn(7) | eqn-mandoc 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) |
Use the mailing lists for bug-reports, patches, questions, etc. (these require subscription). Please check the TODO for known issues before posting. 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) |
04-04-2011: version 1.11.1
The earlier libroff, libmdoc, and libman soup have been merged into a single library, libmandoc, which manages all aspects of parsing real manuals (from line-handling to tbl parsing).
Beyond this structural change, initial eqn functionality is in place. For the time being, this is limited to the recognition of equation blocks; future version of mdocml will expand upon this framework.
As usual, many general fixes and improvements have also occurred. In particular, a great deal of redundancy and superfluous code has been removed with the merging of the backend libraries.
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
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$