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 <META NAME="resource-type" CONTENT="document">
6 <LINK REL="stylesheet" HREF="index.css" TYPE="text/css" MEDIA="all">
7 <TITLE>mdocml | mdoc macro compiler</TITLE>
10 <TABLE CLASS="frame" SUMMARY="[frame]">
16 <B>mdocml</B> – mdoc macro compiler
27 <SPAN CLASS="nm">mdocml</SPAN> is a suite of tools compiling <Q>-mdoc</Q>, the roff macro package
28 of choice for BSD manual pages, and <Q>-man</Q>, the predominant historical package for UNIX
29 manuals. The mission of <SPAN CLASS="nm">mdocml</SPAN> is to deprecate <A
30 HREF="http://www.gnu.org/software/groff/" CLASS="external">groff</A>, the GNU roff implementation, for
31 displaying -mdoc pages whilst providing token support for -man.
35 Why? groff amounts to over 5 MB of source code, most of which is C++ and all of which is GPL. It runs
36 slowly, produces uncertain output, and varies in operation from system to system. mdocml strives to fix
37 this (respectively small, C, ISC-licensed, fast and regular).
41 The core of <SPAN CLASS="nm">mdocml</SPAN> is composed of the <i>libmdoc</i> and <i>libman</i>
42 validating compiler libraries. Both are simple, fast libraries operating on memory buffers, so they may
43 be used for a variety of front-ends (terminal-based, CGI and so on). The primary front-end is <i>
44 mandoc</i>, which formats manuals for display on the terminal.
48 The <SPAN CLASS="nm">mdocml</SPAN> utility is a <A CLASS="external" HREF="http://bsd.lv/">BSD.lv
60 Sources correctly build and install on DragonFly BSD, FreeBSD, OpenBSD, NetBSD, and GNU/Linux operating
61 systems, tested variously on i386, AMD64, alpha, and others. The most current version is <SPAN
62 CLASS="attn">@VERSION@</SPAN>, dated <SPAN class="attn">@VDATE@</SPAN>. A full <A
63 HREF="ChangeLog.html">ChangeLog</A> (<A HREF="ChangeLog.txt">txt</A>) is written with each release.
70 <TABLE WIDTH="100%" SUMMARY="Current Sources">
75 <TD>Source archive</TD>
77 <A HREF="/snapshots/mdocml.tar.gz">/snapshots/mdocml.tar.gz</A>
78 (<A HREF="/snapshots/mdocml.md5">md5</A>)
82 <TD>Online source</TD>
84 <A CLASS="external" HREF="http://mdocml.bsd.lv/cgi-bin/cvsweb/?cvsroot=mdocml">cvsweb</A>
94 <TABLE WIDTH="100%" SUMMARY="Downstream Sources">
99 <TD>DragonFly BSD</TD>
101 <A HREF="http://gitweb.dragonflybsd.org/dragonfly.git/tree/HEAD:/usr.bin/mandoc"
102 CLASS="external">usr.bin/mandoc</A>
108 <A HREF="http://www.freebsd.org/cgi/cvsweb.cgi/ports/textproc/mdocml/"
109 CLASS="external">ports/textproc/mdocml</A>
115 <A HREF="http://cvsweb.netbsd.org/bsdweb.cgi/src/external/bsd/mdocml/"
116 CLASS="external">src/external/bsd/mdocml</A>
122 <A HREF="http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/mandoc/"
123 CLASS="external">src/usr.bin/mandoc</A>
133 <TABLE WIDTH="100%" SUMMARY="Archived Sources">
138 <TD>Source archive</TD>
140 <A HREF="/snapshots/">/snapshots/</A>
154 These manuals are generated automatically and refer to the current snapshot.
157 <TABLE WIDTH="100%" SUMMARY="Documentation">
162 <TD><A HREF="mandoc.1.html">mandoc(1)</A> (<A HREF="mandoc.1.txt">text</A>)</TD>
163 <TD>format and display UNIX manuals</TD>
166 <TD><A HREF="mandoc_char.7.html">mandoc_char(7)</A> (<A HREF="mandoc_char.7.txt">text</A>)</TD>
167 <TD>mandoc special characters</TD>
170 <TD><A HREF="mdoc.7.html">mdoc(7)</A> (<A HREF="mdoc.7.txt">text</A>)</TD>
171 <TD>mdoc language reference</TD>
174 <TD><A HREF="man.7.html">man(7)</A> (<A HREF="man.7.txt">text</A>)</TD>
175 <TD>man language reference</TD>
178 <TD><A HREF="manuals.7.html">manuals(7)</A> (<A HREF="manuals.7.txt">text</A>)</TD>
179 <TD>a guide to writing UNIX manuals</TD>
182 <TD><A HREF="mdoc.3.html">mdoc(3)</A> (<A HREF="mdoc.3.txt">text</A>)</TD>
183 <TD>mdoc macro compiler library</TD>
186 <TD><A HREF="man.3.html">man(3)</A> (<A HREF="man.3.txt">text</A>)</TD>
187 <TD>man macro compiler library</TD>
200 For all issues related to <SPAN CLASS="nm">mdocml</SPAN>, contact Kristaps Dzonsons, kris<A
202 HREF="http://mailhide.recaptcha.net/d?k=01M6h_w7twDp58ZgH57eWC_w==&c=Q2DBUt401ePlSeupJFrq_Q=="
203 TITLE="Reveal this e-mail address">...</A>@bsd.lv.
207 You may also subscribe to several mailing lists (these require subscription, which is moderated). An
208 archive is not yet available.
211 <TABLE WIDTH="100%" SUMMARY="Mailing Lists">
217 disc<A CLASS="external" TITLE="Reveal this e-mail address"
218 HREF="http://www.google.com/recaptcha/mailhide/d?k=01KQ80PFH5n3BBNpF5Gs4sRg==&c=EV1QytpQqTHSItc2IXvZyocgYLPnG5K0JKw_gwMC9yc=">...</a>@mdocml.bsd.lv
220 <TD>discussions and announcements</TD>
224 sou<A CLASS="external" TITLE="Reveal this e-mail address"
225 HREF="http://www.google.com/recaptcha/mailhide/d?k=01prQrAZhhl2EbIwVcRfABsQ==&c=KtTW4Yic9xk-8g40KzJoca4fR3MYXv28g8NC6OQV-T8=">...</a>@mdocml.bsd.lv
227 <TD>source commit messages</TD>
239 <TABLE WIDTH="100%" CELLPADDING="2">
243 <TD VALIGN="top"><SPAN CLASS="date">xx-05-2010</SPAN></TD>
244 Day 1 of Rostock hackathon: proper handling of quotations in tab-separated
245 column lists, finished patching of SYNOPSIS breaking (1.9.25), fixed pre-comment
246 white-space stripping, added end-of-sentence spacing to black partial-implicit
247 macros, relaxed column warnings, relaxed acceptence of bad standards arguments,
248 significant documentation of lists in <A HREF="mdoc.7.html">mdoc(7)</A>.
249 Version: <SPAN CLASS="rev">1.9.26</SPAN>.
253 <TD VALIGN="top"><SPAN CLASS="date">13-05-2010</SPAN></TD>
255 Fixed handling of <Q>\*(Ba</Q> escape. Backed out <SPAN
256 CLASS="flag">-fno-ign-chars</SPAN> (pointless complexity). Fixed erroneous
257 breaking of literal lines. Fixed SYNOPSIS breaking lines before non-initial
258 macros. Changed default section ordering. Most importantly, the framework for
259 end-of-sentence double-spacing is in place, now implemented for the
260 <Q>end-of-sentence, end-of-line</Q> rule. This is a stable roll-back point
261 before the mandoc hackathon in Rostock!
262 Version: <SPAN CLASS="rev">1.9.25</SPAN>.
265 <TD VALIGN="top"><SPAN CLASS="date">09-05-2010</SPAN></TD>
267 Rolled back break-at-hyphen. <SPAN CLASS="flag">-DUGLY</SPAN> is now the
268 default (no feature splits!). Free-form text is not de-chunked any more: lines
269 are passed whole-sale into the front-end, including whitespace. Added mailing
270 lists. Lastly, <SPAN CLASS="nm">mdocml</SPAN> is the focus of two <A
271 CLASS="external" HREF="http://socghop.appspot.com/">Google Summer of Code</A>
272 projects this year: <Q><A CLASS="external"
273 HREF="http://netbsd-soc.sourceforge.net/projects/mandoc_ps/">mandoc -Tps</A></Q>
274 (NetBSD) and <Q><A CLASS="external"
275 HREF="http://wiki.freebsd.org/SummerOfCode2010Projects">BSD-licensed
276 Text-Processing Tools</A></Q> (FreeBSD).
277 Version: <SPAN CLASS="rev">1.9.24</SPAN>.
282 <TD VALIGN="top"><SPAN CLASS="date">07-04-2010</SPAN></TD>
284 <SPAN CLASS="nm">mdocml</SPAN> has been linked to the <A CLASS="external"
285 HREF="http://www.openbsd.org/faq/current.html#20100403">OpenBSD build</a>. This
286 version incorporates many small changes, mostly from patches by OpenBSD,
287 allowing crufty manuals to slip by with warnings instead of erroring-out. Some
288 subtle semantic issues, such as punctuation scope, have also been fixed.
289 Lastly, some issues with <SPAN CLASS="flag">-Thtml</SPAN> have been fixed, which
290 prompted an update to the <A HREF="mandoc.1.html">online</A> <A
291 HREF="mandoc_char.7.html">manual</A> <A HREF="man.7.html">pages</A> style
292 layout. Version: <SPAN CLASS="rev">1.9.23</SPAN>.
296 <TD VALIGN="top"><SPAN CLASS="date">31-03-2010</SPAN></TD>
298 Version <SPAN CLASS="rev">1.9.22</SPAN>: adjusted merge of the significant work
299 by Ingo Schwarze in getting <Q>Xo</Q> blocks (block full implicit, e.g.,
300 <Q>It</Q> for non-columnar lists) to work properly. This isn't enabled by
301 default: you must specify <SPAN CLASS="flag">-DUGLY</SPAN> as a compiler flag
302 (see the Makefile for details).
306 <TD VALIGN="top"><SPAN CLASS="date">30-03-2010</SPAN></TD>
308 Version <SPAN CLASS="rev">1.9.20</SPAN>: more efforts to get roff instructions
309 in -man documents under control. Note that roff instructions embedded in
310 line-scoped, next-line macros (e.g. <Q>B</Q>) are not supported. Leading
311 punctuation for -mdoc macros, such as <Q>Fl ( ( a</Q>, are now correctly
316 <TD VALIGN="top"><SPAN CLASS="date">27-03-2010</SPAN></TD>
318 Version <SPAN CLASS="rev">1.9.18</SPAN>: many fixes (largely pertaining to
319 scope) and improvements (e.g., handling of apostrophe-control macros, which
320 fixes the strange <Q>BR</Q> seen in some macro output) to handling roff
321 instructions in -man documents.
325 <TD VALIGN="top"><SPAN CLASS="date">25-03-2010</SPAN></TD>
327 Version <SPAN CLASS="rev">1.9.17</SPAN> highlights: accept <A
328 HREF="http://perldoc.perl.org/" CLASS="external">perlpod</A> standard preamble.
329 Also accept (and discard) <Q>de</Q>, <Q>dei</Q>, <Q>am</Q>, <Q>ami</Q>, and
330 <Q>ig</Q> roff macro blocks.
334 <TD VALIGN="top"><SPAN CLASS="date">22-03-2010</SPAN></TD>
336 Version <SPAN CLASS="rev">1.9.16</SPAN> highlights: inspired by patches and bug
337 reports by Ingo Schwarze, allowed <SPAN CLASS="flag">-man</SPAN> to accept
338 non-printing elements to be nested within next-line scopes, such as <Q>br</Q>
339 within <Q>B</Q> or <Q>TH</Q>, which is valid roff. Longsoon architecture also
340 noted and Makefile cleaned up.
344 <TD VALIGN="top"><SPAN CLASS="date">18-02-2010</SPAN></TD>
346 Moved to our new <A HREF="http://bsd.lv" CLASS="external">BSD.lv</A> home.
347 Version <SPAN CLASS="rev">1.9.15</SPAN> highlights: XHTML is now an acceptable
348 output mode for <A HREF="mandoc.1.html">mandoc(1)</A>; <Q>Xr</Q> made more
349 compatible with groff; <Q>Vt</Q> fixed when invoked in SYNOPSIS; <Q>\\</Q>
350 escape removed; end-of-line white-space detected for all lines; subtle bug
351 fixed in list display for some modes; compatibility layer checked in for
352 compilation in diverse UNIX systems; and column lengths handled correctly.
362 Copyright © 2008–2010 Kristaps Dzonsons, $Date: 2010/05/14 16:02:29 $