1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
5 <LINK REL="stylesheet" HREF="index.css" TYPE="text/css" MEDIA="all">
6 <TITLE>mdocml | UNIX manpage compiler</TITLE>
10 <A HREF="http://www.openbsd.org/"><IMG SRC="puffy.gif" ALT="Puffy" WIDTH="100" HEIGHT="91" STYLE="float: right"></A>
11 <B>mdocml</B> – UNIX manpage compiler, current version @VERSION@ (@VDATE@)
14 Sources: <A HREF="/snapshots/mdocml.tar.gz">current</A>,
15 <A HREF="/cgi-bin/cvsweb/?cvsroot=mdocml">cvsweb</A>
16 (<A HREF="/snapshots/">archives</A>)
19 <A NAME="description">Description</A>
22 <SPAN CLASS="nm">mdocml</SPAN> is a suite of tools compiling <I><A HREF="mdoc.7.html">mdoc</A></I>, the roff macro
23 package of choice for BSD manual pages, and <I><A HREF="man.7.html">man</A></I>, the predominant historical package for
25 It is small, ISO C, <A CLASS="external" HREF="http://www.isc.org/software/license">ISC</A>-licensed, and quite fast.
28 The tool set features <A HREF="mandoc.1.html">mandoc</A>,
29 based on the <A HREF="mandoc.3.html">libmandoc</A> validating compiler,
30 to format output for UNIX terminals (with
31 support for wide-character locales), XHTML, HTML, PostScript, and PDF.
32 It also includes <A HREF="preconv.1.html">preconv</A>, for recoding multibyte manuals;
33 <A HREF="demandoc.1.html">demandoc</A>, for emitting only text parts of manuals;
34 <A HREF="mandocdb.8.html">mandocdb</A>, for indexing manuals; and
35 <A HREF="apropos.1.html">apropos</A>, <A HREF="whatis.1.html">whatis</A>, and
36 <A HREF="man.cgi.7.html">man.cgi</A> (via <A HREF="catman.8.html">catman</A>) for semantic search of manual content.
39 <SPAN CLASS="nm">mdocml</SPAN> has predominantly been developed on OpenBSD
40 and is both an <A CLASS="external" HREF="http://www.openbsd.org/">OpenBSD</A>
41 and a <A CLASS="external" HREF="http://bsd.lv/">BSD.lv</A> project.
42 We strive to support all interested free operating systems, in particular
43 <A CLASS="external" HREF="http://www.dragonflybsd.org/">DragonFly</A>,
44 <A CLASS="external" HREF="http://www.netbsd.org/">NetBSD</A>,
45 <A CLASS="external" HREF="http://www.freebsd.org/">FreeBSD</A>,
46 <A CLASS="external" HREF="http://www.minix3.org/">Minix 3</A>,
47 and <A CLASS="external" HREF="http://www.gnu.org/">GNU</A>/Linux,
48 as well as all systems running the <A CLASS="external" HREF="http://www.pkgsrc.org/">pkgsrc</A> portable package build system.
49 All of these projects have helped to make <SPAN CLASS="nm">mdocml</SPAN> better, by providing feedback and advice,
50 bug reports, and patches.
53 <I>Disambiguation</I>: <SPAN CLASS="nm">mdocml</SPAN> is often referred to by its installed binary, <Q>mandoc</Q>.
56 <A NAME="sources">Sources</A>
59 <SPAN CLASS="nm">mdocml</SPAN> should build and run on any modern system with
60 <A HREF="http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html">libdb</A>
61 (this is installed by default on BSD UNIX systems — see the <I>Makefile</I> if you're running Linux).
62 To build and install into <I>/usr/local/</I>, just run <CODE>make install</CODE>.
63 Be careful: the <B>preconv</B>, <B>apropos</B>, and <B>whatis</B> installed binary names
64 may be taken by existing utilities.
70 Several systems come bundled with <SPAN CLASS="nm">mdocml</SPAN> utilities.
71 If your system does not appear below, the maintainers have not contacted me and it should not be considered
72 <Q>official</Q>, so please <A HREF="#contact">contact us</A> if you plan on maintaining a downstream version!
74 <TABLE WIDTH="100%" SUMMARY="Downstream Sources">
79 <TD>DragonFly BSD</TD>
81 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/contrib/mdocml" CLASS="external">contrib/mdocml</A> (1.12.3 sources)
82 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/lib/libmandoc" CLASS="external">lib/libmandoc</A>
83 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/usr.bin/mandoc" CLASS="external">usr.bin/mandoc</A> (build system)
87 <TD>FreeBSD 10.0, -CURRENT</TD>
89 <A HREF="http://svnweb.freebsd.org/base/head/contrib/mdocml/" CLASS="external">contrib/mdocml</A> (1.12.1 sources)
90 <A HREF="http://svnweb.freebsd.org/base/head/usr.bin/mandoc/" CLASS="external">usr.bin/mandoc</A> (build system)
94 <TD>FreeBSD 9.x, 8.x</TD>
96 <A HREF="http://svnweb.freebsd.org/ports/head/textproc/mdocml/" CLASS="external">ports/textproc/mdocml</A> (1.12.2 port)
102 <A HREF="http://cvsweb.netbsd.org/bsdweb.cgi/src/external/bsd/mdocml/" CLASS="external">src/external/bsd/mdocml</A> (1.12.1 sources plus patches and build system)
108 <A HREF="http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/mandoc/" CLASS="external">src/usr.bin/mandoc</A> (1.12.3 sources under active development and build system)
114 <A HREF="http://pkgsrc.se/textproc/mdocml" CLASS="external">textproc/mdocml</A> (1.12.2 port)
120 <A HREF="http://git.minix3.org/?p=minix.git;a=tree;f=external/bsd/mdocml" CLASS="external">external/bsd/mdocml</A> (1.10.9 sources and build system)
124 <TD>Alpine Linux</TD>
126 <A HREF="http://git.alpinelinux.org/cgit/aports/tree/main/mdocml" CLASS="external">aports/main/mdocml</A> (1.12.2 port)
132 <A NAME="documentation">Documentation</A>
135 These manuals are generated automatically and refer to the current release.
136 They are the authoritative documentation for the <SPAN CLASS="nm">mdocml</SPAN> system.
139 <TABLE WIDTH="100%" SUMMARY="Documentation">
144 <TD VALIGN="top"><A HREF="apropos.1.html">apropos(1)</A></TD>
146 search the manual page database
150 <TD VALIGN="top"><A HREF="demandoc.1.html">demandoc(1)</A></TD>
152 emit only text of UNIX manuals
156 <TD VALIGN="top"><A HREF="mandoc.1.html">mandoc(1)</A></TD>
158 format and display UNIX manuals
162 <TD VALIGN="top"><A HREF="preconv.1.html">preconv(1)</A></TD>
164 recode multibyte UNIX manuals
168 <TD VALIGN="top"><A HREF="whatis.1.html">whatis(1)</A></TD>
170 search the manual page database
174 <TD VALIGN="top"><A HREF="mandoc.3.html">mandoc(3)</A></TD>
176 mandoc macro compiler library
180 <TD VALIGN="top"><A HREF="tbl.3.html">tbl(3)</A></TD>
182 roff table parser library for mandoc
186 <TD VALIGN="top"><A HREF="eqn.7.html">eqn(7)</A></TD>
188 eqn-mandoc language reference
192 <TD VALIGN="top"><A HREF="man.7.html">man(7)</A></TD>
194 man language reference
198 <TD VALIGN="top"><A HREF="man.cgi.7.html">man.cgi(7)</A></TD>
200 cgi for manpage query and display
204 <TD VALIGN="top"><A HREF="mandoc_char.7.html">mandoc_char(7)</A></TD>
206 mandoc special characters
210 <TD VALIGN="top"><A HREF="mdoc.7.html">mdoc(7)</A></TD>
212 mdoc language reference
216 <TD VALIGN="top"><A HREF="roff.7.html">roff(7)</A></TD>
218 roff-mandoc language reference
222 <TD VALIGN="top"><A HREF="tbl.7.html">tbl(7)</A></TD>
224 tbl-mandoc language reference
228 <TD VALIGN="top"><A HREF="catman.8.html">catman(8)</A></TD>
230 update a man.cgi manpage cache
234 <TD VALIGN="top"><A HREF="mandocdb.8.html">mandocdb(8)</A></TD>
242 <A NAME="links">Supplementary Information</A>
246 <A HREF="http://manpages.bsd.lv/">Practical UNIX Manuals</A>: mdoc tutorial by Kristaps Dzonsons
249 <A HREF="http://www.openbsd.org/faq/ports/specialtopics.html#Mandoc" CLASS="external">OpenBSD porting guide</A>
250 chapter regarding manual pages
253 <A HREF="press.html">Publications and media coverage</A>
254 concerning mdocml and mandoc
257 <A HREF="http://manpages.bsd.lv/history.html">History of UNIX Manpages</A>: a comprehensive overview by Kristaps Dzonsons
261 <A NAME="contact">Contact</A>
264 Use the mailing lists for bug-reports, patches, questions, etc. Please check the
265 <A HREF="http://mdocml.bsd.lv/cgi-bin/cvsweb/TODO?cvsroot=mdocml">TODO</A> for known issues
266 before posting. All lists are subscription-only: send a blank e-mail to the listed address to subscribe. Beyond that,
267 contact Kristaps at <A HREF="http://mailhide.recaptcha.net/d?k=01M6h_w7twDp58ZgH57eWC_w==&c=Q2DBUt401ePlSeupJFrq_Q==" TITLE="Reveal
268 this e-mail address">kris...</A>@bsd.lv. Archives are available at <A HREF="http://gmane.org/" CLASS="external">Gmane</A>.
270 <TABLE WIDTH="100%" SUMMARY="Mailing Lists">
276 disc<A CLASS="external" TITLE="Reveal this e-mail address"
277 HREF="http://www.google.com/recaptcha/mailhide/d?k=01KQ80PFH5n3BBNpF5Gs4sRg==&c=EV1QytpQqTHSItc2IXvZyocgYLPnG5K0JKw_gwMC9yc=">...</A>@mdocml.bsd.lv
280 bug-reports, general questions, and announcements
285 tec<A CLASS="external" TITLE="Reveal this e-mail address"
286 HREF="http://www.google.com/recaptcha/mailhide/d?k=01qDX_iV0RlUOarEvb6mR28g==&c=gRXsTjza0NNCFPaYu-Taj2tF0pmYZSc90EZkFkhkxgo=">...</A>@mdocml.bsd.lv
289 patches and system discussions
294 sou<A CLASS="external" TITLE="Reveal this e-mail address"
295 HREF="http://www.google.com/recaptcha/mailhide/d?k=01prQrAZhhl2EbIwVcRfABsQ==&c=KtTW4Yic9xk-8g40KzJoca4fR3MYXv28g8NC6OQV-T8=">...</A>@mdocml.bsd.lv
298 source commit messages
304 <A NAME="news">News</A>
307 31-12-2013: version 1.12.3
310 In the <A HREF="mdoc.7.html">mdoc(7)</A> SYNOPSIS, line breaks and hanging indentation
311 now work correctly for .Fo/.Fa/.Fc and .Fn blocks.
312 Thanks to Franco Fichtner for doing part of the work.
315 The <A HREF="mdoc.7.html">mdoc(7)</A> .Bk macro got some addititonal bugfixes.
318 In <A HREF="mdoc.7.html">mdoc(7)</A> macro arguments, double quotes can now be quoted
319 by doubling them, just like in <A HREF="man.7.html">man(7)</A>.
320 Thanks to Tsugutomo ENAMI for the patch.
323 At the end of <A HREF="man.7.html">man(7)</A> macro lines, end-of-sentence spacing
324 now works. Thanks to Franco Fichtner for the patch.
327 For backward compatibility, the <A HREF="man.7.html">man(7)</A> parser now supports the
328 man-ext .UR/.UE (uniform resource identifier) block macros.
331 The <A HREF="man.7.html">man(7)</A> parser now handles closing blocks that are not open
335 The <A HREF="man.7.html">man(7)</A> parser now ignores blank lines right after .SH and .SS.
338 In the <A HREF="man.7.html">man(7)</A> formatter, reset indentation when leaving a block,
339 not just when entering the next one.
342 The <A HREF="roff.7.html">roff(7)</A> .nr request now supports incrementing and decrementing
343 number registers and stops parsing the number right before the first non-digit character.
346 The <A HREF="roff.7.html">roff(7)</A> parser now supports the alternative escape sequence
347 syntax \C'uXXXX' for Unicode characters.
350 The <A HREF="roff.7.html">roff(7)</A> parser now parses and ignores the .fam (font family)
351 and .hw (hyphenation points) requests and the \d and \u escape sequences.
354 The <A HREF="roff.7.html">roff(7)</A> manual got a new ESCAPE SEQUENCE REFERENCE.
357 05-10-2013: version 1.12.2
360 The <A HREF="mdoc.7.html">mdoc(7)</A> to <A HREF="man.7.html">man(7)</A> converter,
361 to be called as <CODE>mandoc -Tman</CODE>, is now fully functional.
364 The <A HREF="mandoc.1.html">mandoc(1)</A> utility now supports the <CODE>-Ios</CODE> (default operating system)
365 input option, and the <CODE>-Tutf8</CODE> output mode now actually works.
368 The <A HREF="mandocdb.8.html">mandocdb(8)</A> utility no longer truncates existing databases when starting to build new ones,
369 but only replaces them when the build actually succeeds.
372 The <A HREF="man.7.html">man(7)</A> parser now supports the <EM>PD</EM> macro (paragraph distance),
373 and (for GNU man-ext compatibility only) <EM>EX</EM> (example block) and <EM>EE</EM> (example end).
374 Plus several bugfixes regarding indentation, line breaks, and vertical spacing,
375 and regarding <EM>RS</EM> following <EM>TP</EM>.
378 The <A HREF="roff.7.html">roff(7)</A> parser now supports the <EM>\f(BI</EM> (bold+italic) font escape,
379 the <EM>\z</EM> (zero cursor advance) escape and the <EM>cc</EM> (change control character)
380 and <EM>it</EM> (input line trap) requests.
381 Plus bugfixes regarding the <EM>\t</EM> (tab) escape, nested escape sequences, and conditional requests.
384 In <A HREF="mdoc.7.html">mdoc(7)</A>, several bugs were fixed related to UTF-8 output of quoting enclosures,
385 delimiter handling, list indentation and horizontal and vertical spacing,
386 formatting of the <EM>Lk</EM>, <EM>%U</EM>, and <EM>%C</EM> macros,
387 plus some bugfixes related to the handling of syntax errors like badly nested font blocks,
388 stray <EM>Ta</EM> macros outside column lists, unterminated <EM>It Xo</EM> blocks,
389 and non-text children of <EM>Nm</EM> blocks.
392 In <A HREF="tbl.7.html">tbl(7)</A>, the width of horizontal spans and the vertical spacing around tables was corrected,
393 and in <A HREF="man.7.html">man(7)</A> files, a crash was fixed that was triggered by some particular unclosed <EM>T{</EM> macros.
396 For mandoc developers, we now provide a <A HREF="tbl.3.html">tbl(3)</A> library manual and <CODE>gmdiff</CODE>,
397 a very small, very simplistic groff-versus-mandoc output comparison tool.
404 <A HREF="NEWS">Release notes</A> going back to release 1.9.15, February 18, 2010.
405 Briefly explaining the most important changes in each release in relatively easy terms.
406 Very many changes are not mentioned here.
409 <A HREF="history.html">Development history</A> going back to the beginning of the project, November 22, 2008.
410 One-line entries for important commits, releases, merges, hackathons and talks.
411 Makes it easy to find out who did what, and when, and when it became available where.
412 However, this is still incomplete, mentioning only a small fraction of all commits,
413 and to keep the size down, the individual entries are extremely terse and technical.
414 Feel free to look up more details and longer explanations about individual entries
415 in the ChangeLog or in CVS.
418 <A HREF="ChangeLog">CVS ChangeLog</A> going back to the beginning of the project.
419 Very technical information of varying quality, strictly chronological.
420 All commits are mentioned, but some messages neglect to mention some changes.
421 Partly terse, partly detailed and verbose. In any case, the ChangeLog is very long -
422 more than 25,000 lines, more than 700 kB.
425 <A HREF="/cgi-bin/cvsweb/?cvsroot=mdocml">CVS</A> web interface, going back to the beginning of the project.
426 Source code, diffs and commit messages for each source file. The real thing.
431 Copyright © 2008–2011
432 <A CLASS="external" HREF="http://kristaps.bsd.lv">Kristaps Dzonsons</A>,
433 © 2013 Ingo Schwarze,