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 (with support for wide-character locales), XHTML, HTML, PostScript, and PDF. It also includes preconv, for recoding multibyte manuals; and mandocdb, for indexing manuals. 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 modern system (mandocdb requires Berkeley Database, installed by default on all BSD UNIX operating systems).
To compile mdocml, run make
, then make install
to install into
/usr/local. Be aware: if you have an existing groff installation, this may overwrite its preconv binary. The mandocdb utility is not yet linked to the build: you must run make mandocdb
to
build it (it does not install).
Distributed Win32 binaries are compiled using mingw32. They are distributed in a ZIP archive consisting of binaries, manuals, and other installable media.
The most current version of mdocml is @VERSION@, dated @VDATE@.
Source archive | /snapshots/mdocml.tar.gz (md5) |
Online source | cvsweb |
Win32 binary archive | /binaries/mdocml-win32.zip |
DragonFly BSD | usr.bin/mandoc |
FreeBSD | ports/textproc/mdocml |
NetBSD | src/external/bsd/mdocml |
OpenBSD | src/usr.bin/mandoc |
Source archive | /snapshots/ |
Binary archive | /binaries/ |
These manuals are generated automatically and refer to the current snapshot.
mandoc(1) | format and display UNIX manuals (text | xhtml | pdf | postscript) |
mandocdb(8) | index UNIX manuals (text | xhtml | pdf | postscript) |
preconv(1) | recode multibyte 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) |
24-07-2011: version 1.11.5
Significant eqn improvements. mdocml can now parse arbitrary eqn input (although few GNU extensions are accepted, nor is mixing low-level roff with eqn). See the eqn manual for details. For the time being, equations are rendered as simple in-line text. The equation parser satisfies the language specified in the Second Edition User's Guide.
This is also the first release featuring a distributed Windows binary, available at /binaries/mdocml-win32.zip.
12-07-2011: version 1.11.4
Bug-fixes and clean-ups across all systems, especially in mandocdb makewhatis (note: still not
connected to the general build and must be compiled with make mandocdb
) and the man parser. This release was significantly assisted by participants in OpenBSD's c2k11. Thanks!
make makewhatis
26-05-2011: version 1.11.3
Introduce locale-encoding of output with the -Tlocale output option and Unicode escaped-character input. See mandoc and mandoc_char, respectively, for details. This allows for non-ASCII characters (e.g., \[u5000]) to be rendered in the locale's encoding, if said environment supports wide-character encoding (if it does not, -Tascii is used instead). Locale support can be turned off at compile time by removing -DUSE_WCHAR in the Makefile, in which case -Tlocale is always a synonym for -Tascii.
Furthermore, multibyte-encoded documents, such as those in UTF-8, may be on-the-fly recoded into mandoc input by using the newly-added preconv utility. Note: in the future, this feature may be integrated into mandoc.
12-05-2011: version 1.11.2
Corrected some installation issues in version 1.11.1.
Further migration to libmandoc.
Initial public release (this utility is very much under development) of mandocdbmakewhatis,
initially named mandoc-db.
This utility produces keyword databases of manual content
mandoc-cgi,
mandoc-tools,
which features semantic querying of manual content.
See cvsweb for historical notes.
Copyright © 2008–2011 Kristaps Dzonsons, $Date$