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 <B>mdocml</B> – UNIX manpage compiler, current version @VERSION@ (@VDATE@)
13 Sources: <A HREF="/snapshots/mdocml.tar.gz">current</A>,
14 <A HREF="/cgi-bin/cvsweb/?cvsroot=mdocml">cvsweb</A>
15 (<A HREF="/snapshots/">archives</A>)
18 <A NAME="description">Description</A>
21 <SPAN CLASS="nm">mdocml</SPAN> is a suite of tools compiling <I><A HREF="mdoc.7.html">mdoc</A></I>, the roff macro
22 package of choice for BSD manual pages, and <I><A HREF="man.7.html">man</A></I>, the predominant historical package for
23 UNIX manuals. The mission of <SPAN CLASS="nm">mdocml</SPAN> is to deprecate <A
24 HREF="http://www.gnu.org/software/groff/" CLASS="external">groff</A>, the GNU troff implementation, for displaying <I>mdoc</I>
25 pages whilst providing token support for <I>man</I>.
28 Why? groff amounts to over 5 MB of source code, most of which is C++ and GPL version 3. It runs slowly, produces
29 uncertain output, and varies in operation from system to system. mdocml strives to fix this (respectively small, C, <A
30 CLASS="external" HREF="http://www.isc.org/software/license">ISC</A>-licensed, fast and regular).
33 <SPAN CLASS="nm">mdocml</SPAN> consists of the <A HREF="mandoc.3.html">libmandoc</A> validating compiler and <A
34 HREF="mandoc.1.html">mandoc</A>, which interfaces with the compiler library to format output for UNIX terminals (with
35 support for wide-character locales), XHTML, HTML, PostScript, and PDF.
36 It also includes <A HREF="preconv.1.html">preconv</A> for recoding multibyte manuals,
37 <A HREF="demandoc.1.html">demandoc</A> for emitting only text parts of manuals,
38 <A HREF="mandocdb.8.html">mandocdb</A> for indexing manuals,
39 <A HREF="apropos.1.html">apropos</A> (includes whatis mode) for indexed manual search, and
40 <A HREF="man.cgi.7.html">man.cgi</A> for indexed manual search online.
41 It is a <A CLASS="external" HREF="http://bsd.lv/">BSD.lv</A> project.
44 <I>Disambiguation</I>: <SPAN CLASS="nm">mdocml</SPAN> is often referred to by its installed binary, <Q>mandoc</Q>.
47 <A NAME="sources">Sources</A>
50 <SPAN CLASS="nm">mdocml</SPAN> is in ISO C99 and should build and run on any modern system; however, you'll need <A
51 HREF="http://www.sqlite.org">sqlite3</A> to build <A HREF="apropos.1.html">apropos</A> (links to whatis),
52 <A HREF="man.cgi.7.html">man.cgi</A>, and <A HREF="mandocdb.8.html">mandocdb</A>.
53 To build and install into <I>/usr/local/</I>, just run <CODE>make install</CODE>.
54 Be careful: the <B>preconv</B>, <B>apropos</B>, and <B>whatis</B> binary names are usually taken by existing utilities.
60 Several systems come bundled with <SPAN CLASS="nm">mdocml</SPAN> utilities.
61 If your system does not appear below, the maintainers have not contacted me and it should not be considered
63 Please <A HREF="#contact">contact us</A> if you plan on maintaining a downstream version!
65 <TABLE WIDTH="100%" SUMMARY="Downstream Sources">
70 <TD>DragonFly BSD</TD>
72 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/contrib/mdocml" CLASS="external">contrib/mdocml</A> (1.12.2 sources)
73 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/lib/libmandoc" CLASS="external">lib/libmandoc</A>
74 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/usr.bin/mandoc" CLASS="external">usr.bin/mandoc</A> (build system)
78 <TD>FreeBSD 10.0, -CURRENT</TD>
80 <A HREF="http://svnweb.freebsd.org/base/head/contrib/mdocml/" CLASS="external">contrib/mdocml</A> (1.12.1 sources)
81 <A HREF="http://svnweb.freebsd.org/base/head/usr.bin/mandoc/" CLASS="external">usr.bin/mandoc</A> (build system)
85 <TD>FreeBSD 9.x, 8.x</TD>
87 <A HREF="http://svnweb.freebsd.org/ports/head/textproc/mdocml/" CLASS="external">ports/textproc/mdocml</A> (1.12.1 port)
93 <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)
99 <A HREF="http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/mandoc/" CLASS="external">src/usr.bin/mandoc</A> (1.12.2 sources and build system)
105 <A HREF="http://pkgsrc.se/textproc/mdocml" CLASS="external">textproc/mdocml</A> (1.12.2 port)
111 <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)
115 <TD>Alpine Linux</TD>
117 <A HREF="http://git.alpinelinux.org/cgit/aports/tree/main/mdocml" CLASS="external">aports/main/mdocml</A> (1.12.2 port)
123 <A NAME="documentation">Documentation</A>
126 These manuals are generated automatically and refer to the current release.
127 They are the authoritative documentation for the <SPAN CLASS="nm">mdocml</SPAN> system.
130 <TABLE WIDTH="100%" SUMMARY="Documentation">
135 <TD VALIGN="top"><A HREF="apropos.1.html">apropos(1)</A></TD>
137 search the manual page database
141 <TD VALIGN="top"><A HREF="demandoc.1.html">demandoc(1)</A></TD>
143 emit only text of UNIX manuals
147 <TD VALIGN="top"><A HREF="mandoc.1.html">mandoc(1)</A></TD>
149 format and display UNIX manuals
153 <TD VALIGN="top"><A HREF="preconv.1.html">preconv(1)</A></TD>
155 recode multibyte UNIX manuals
159 <TD VALIGN="top"><A HREF="mandoc.3.html">mandoc(3)</A></TD>
161 mandoc macro compiler library
165 <TD VALIGN="top"><A HREF="tbl.3.html">tbl(3)</A></TD>
167 roff table parser library for mandoc
171 <TD VALIGN="top"><A HREF="eqn.7.html">eqn(7)</A></TD>
173 eqn-mandoc language reference
177 <TD VALIGN="top"><A HREF="man.7.html">man(7)</A></TD>
179 man language reference
183 <TD VALIGN="top"><A HREF="man.cgi.7.html">man.cgi(7)</A></TD>
185 cgi for manpage query and display
189 <TD VALIGN="top"><A HREF="mandoc_char.7.html">mandoc_char(7)</A></TD>
191 mandoc special characters
195 <TD VALIGN="top"><A HREF="mdoc.7.html">mdoc(7)</A></TD>
197 mdoc language reference
201 <TD VALIGN="top"><A HREF="roff.7.html">roff(7)</A></TD>
203 roff-mandoc language reference
207 <TD VALIGN="top"><A HREF="tbl.7.html">tbl(7)</A></TD>
209 tbl-mandoc language reference
213 <TD VALIGN="top"><A HREF="mandocdb.8.html">mandocdb(8)</A></TD>
221 <A NAME="links">Supplementary Information</A>
225 <A HREF="http://manpages.bsd.lv/">Practical UNIX Manuals</A>: mdoc tutorial by Kristaps Dzonsons
228 <A HREF="http://www.openbsd.org/faq/ports/specialtopics.html#Mandoc" CLASS="external">OpenBSD porting guide</A>
229 chapter regarding manual pages
232 <A HREF="press.html">Publications and media coverage</A>
233 concerning mdocml and mandoc
236 <A HREF="http://manpages.bsd.lv/history.html">History of UNIX Manpages</A>: a comprehensive overview by Kristaps Dzonsons
240 <A NAME="contact">Contact</A>
243 Use the mailing lists for bug-reports, patches, questions, etc. Please check the
244 <A HREF="http://mdocml.bsd.lv/cgi-bin/cvsweb/TODO?cvsroot=mdocml">TODO</A> for known issues
245 before posting. All lists are subscription-only: send a blank e-mail to the listed address to subscribe. Beyond that,
246 contact Kristaps at <A HREF="http://mailhide.recaptcha.net/d?k=01M6h_w7twDp58ZgH57eWC_w==&c=Q2DBUt401ePlSeupJFrq_Q==" TITLE="Reveal
247 this e-mail address">kris...</A>@bsd.lv. Archives are available at <A HREF="http://gmane.org/" CLASS="external">Gmane</A>.
249 <TABLE WIDTH="100%" SUMMARY="Mailing Lists">
255 disc<A CLASS="external" TITLE="Reveal this e-mail address"
256 HREF="http://www.google.com/recaptcha/mailhide/d?k=01KQ80PFH5n3BBNpF5Gs4sRg==&c=EV1QytpQqTHSItc2IXvZyocgYLPnG5K0JKw_gwMC9yc=">...</A>@mdocml.bsd.lv
259 bug-reports, general questions, and announcements
264 tec<A CLASS="external" TITLE="Reveal this e-mail address"
265 HREF="http://www.google.com/recaptcha/mailhide/d?k=01qDX_iV0RlUOarEvb6mR28g==&c=gRXsTjza0NNCFPaYu-Taj2tF0pmYZSc90EZkFkhkxgo=">...</A>@mdocml.bsd.lv
268 patches and system discussions
273 sou<A CLASS="external" TITLE="Reveal this e-mail address"
274 HREF="http://www.google.com/recaptcha/mailhide/d?k=01prQrAZhhl2EbIwVcRfABsQ==&c=KtTW4Yic9xk-8g40KzJoca4fR3MYXv28g8NC6OQV-T8=">...</A>@mdocml.bsd.lv
277 source commit messages
283 <A NAME="news">News</A>
286 xx-xx-2013: version 1.13.0
289 The <A HREF="mandocdb.8.html">mandocdb</A> tools (<A HREF="mandocdb.8.html">mandocdb</A>, <A
290 HREF="apropos.1.html">apropos</A> (absorbing whatis), and <A HREF="man.cgi.7.html">man.cgi</A>) have been re-written to
291 use <A CLASS="external" HREF="http://www.sqlite.org">sqlite3</A> as a database.
294 05-10-2013: version 1.12.2
297 The <A HREF="mdoc.7.html">mdoc(7)</A> to <A HREF="man.7.html">man(7)</A> converter,
298 to be called as <CODE>mandoc -Tman</CODE>, is now fully functional.
301 The <A HREF="mandoc.1.html">mandoc(1)</A> utility now supports the <CODE>-Ios</CODE> (default operating system)
302 input option, and the <CODE>-Tutf8</CODE> output mode now actually works.
305 The <A HREF="mandocdb.8.html">mandocdb(8)</A> utility no longer truncates existing databases when starting to build new ones,
306 but only replaces them when the build actually succeeds.
309 The <A HREF="man.7.html">man(7)</A> parser now supports the <EM>PD</EM> macro (paragraph distance),
310 and (for GNU man-ext compatibility only) <EM>EX</EM> (example block) and <EM>EE</EM> (example end).
311 Plus several bugfixes regarding indentation, line breaks, and vertical spacing,
312 and regarding <EM>RS</EM> following <EM>TP</EM>.
315 The <A HREF="roff.7.html">roff(7)</A> parser now supports the <EM>\f(BI</EM> (bold+italic) font escape,
316 the <EM>\z</EM> (zero cursor advance) escape and the <EM>cc</EM> (change control character)
317 and <EM>it</EM> (input line trap) requests.
318 Plus bugfixes regarding the <EM>\t</EM> (tab) escape, nested escape sequences, and conditional requests.
321 In <A HREF="mdoc.7.html">mdoc(7)</A>, several bugs were fixed related to UTF-8 output of quoting enclosures,
322 delimiter handling, list indentation and horizontal and vertical spacing,
323 formatting of the <EM>Lk</EM>, <EM>%U</EM>, and <EM>%C</EM> macros,
324 plus some bugfixes related to the handling of syntax errors like badly nested font blocks,
325 stray <EM>Ta</EM> macros outside column lists, unterminated <EM>It Xo</EM> blocks,
326 and non-text children of <EM>Nm</EM> blocks.
329 In <A HREF="tbl.7.html">tbl(7)</A>, the width of horizontal spans and the vertical spacing around tables was corrected,
330 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.
333 For mandoc developers, we now provide a <A HREF="tbl.3.html">tbl(3)</A> library manual and <CODE>gmdiff</CODE>,
334 a very small, very simplistic groff-versus-mandoc output comparison tool.
337 23-03-2012: version 1.12.1
340 Significant work on <A HREF="apropos.1.html">apropos</A> and <A HREF="mandocdb.8.html">mandocdb</A>. These tools are
341 now much more robust.
342 A <A HREF="whatis.1.html">whatis</A> implementation is now handled as an <A HREF="apropos.1.html">apropos</A> mode.
343 These tools are also able to minimally handle pre-formatted pages, that is, those already formatted by another utility
347 The <A HREF="man.cgi.7.html">man.cgi</A> script is also now available for wider testing. It interfaces with <A
348 HREF="mandocdb.8.html">mandocdb</A> manuals cached by <A HREF="catman.8.html">catman</A>. HTML output is generated
349 on-the-fly by <A HREF="mandoc.3.html">libmandoc</A> or internal methods to convert pre-formatted pages.
352 The mailing list archive for the discuss and tech lists are being hosted by <A CLASS="external"
353 HREF="http://www.gmane.org">Gmane</A> at <A HREF="http://dir.gmane.org/gmane.comp.tools.mdocml.user"
354 CLASS="external">gmane.comp.tools.mdocml.user</A> and <A HREF="http://dir.gmane.org/gmane.comp.tools.mdocml.devel"
355 CLASS="external">gmane.comp.tools.mdocml.devel</A>, respectively.
358 Lastly, I'm no longer providing binaries, as nobody has asked for them.
365 <A HREF="NEWS">Release notes</A> going back to release 1.9.15, February 18, 2010.
366 Briefly explaining the most important changes in each release in relatively easy terms.
367 Very many changes are not mentioned here.
370 <A HREF="history.html">Development history</A> going back to the beginning of the project, November 22, 2008.
371 One-line entries for important commits, releases, merges, hackathons and talks.
372 Makes it easy to find out who did what, and when, and when it became available where.
373 However, this is still incomplete, mentioning only a small fraction of all commits,
374 and to keep the size down, the individual entries are extremely terse and technical.
375 Feel free to look up more details and longer explanations about individual entries
376 in the ChangeLog or in CVS.
379 <A HREF="ChangeLog">CVS ChangeLog</A> going back to the beginning of the project.
380 Very technical information of varying quality, strictly chronological.
381 All commits are mentioned, but some messages neglect to mention some changes.
382 Partly terse, partly detailed and verbose. In any case, the ChangeLog is very long -
383 more than 25,000 lines, more than 700 kB.
386 <A HREF="/cgi-bin/cvsweb/?cvsroot=mdocml">CVS</A> web interface, going back to the beginning of the project.
387 Source code, diffs and commit messages for each source file. The real thing.
392 Copyright © 2008–2011
393 <A CLASS="external" HREF="http://kristaps.bsd.lv">Kristaps Dzonsons</A>,
394 © 2013 Ingo Schwarze,
395 $Date: 2013/10/13 18:34:51 $