Import mdocml-1.12.3
[dragonfly.git] / contrib / mdocml / index.sgml
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <HTML>
3         <HEAD>
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>
7         </HEAD>
8         <BODY>
9                 <P CLASS="head">
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> &#8211; UNIX manpage compiler, current version @VERSION@ (@VDATE@)
12                 </P>
13                 <P CLASS="subhead">
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>)
17                 </P>
18                 <H1>
19                         <A NAME="description">Description</A>
20                 </H1>
21                 <P>
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
24                         UNIX manuals.
25                         It is small, ISO C, <A CLASS="external" HREF="http://www.isc.org/software/license">ISC</A>-licensed, and quite fast.
26                 </P>
27                 <P>
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.
37                 </P>
38                 <P>
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.
51                 </P>
52                 <P>
53                         <I>Disambiguation</I>: <SPAN CLASS="nm">mdocml</SPAN> is often referred to by its installed binary, <Q>mandoc</Q>.
54                 </P>
55                 <H2>
56                         <A NAME="sources">Sources</A>
57                 </H2>
58                 <P>
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 &mdash; 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.
65                 </P>
66                 <H2>
67                         Downstream
68                 </H2>
69                 <P>
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!
73                 </P>
74                 <TABLE WIDTH="100%" SUMMARY="Downstream Sources">
75                         <COL WIDTH="175">
76                         <COL>
77                         <TBODY>
78                                 <TR>
79                                         <TD>DragonFly BSD</TD>
80                                         <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)
84                                         </TD>
85                                 </TR>
86                                 <TR>
87                                         <TD>FreeBSD 10.0, -CURRENT</TD>
88                                         <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)
91                                         </TD>
92                                 </TR>
93                                 <TR>
94                                         <TD>FreeBSD 9.x, 8.x</TD>
95                                         <TD>
96                                         <A HREF="http://svnweb.freebsd.org/ports/head/textproc/mdocml/" CLASS="external">ports/textproc/mdocml</A> (1.12.2 port)
97                                         </TD>
98                                 </TR>
99                                 <TR>
100                                         <TD>NetBSD</TD>
101                                         <TD>
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)
103                                         </TD>
104                                 </TR>
105                                 <TR>
106                                         <TD>OpenBSD</TD>
107                                         <TD>
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)
109                                         </TD>
110                                 </TR>
111                                 <TR>
112                                         <TD>pkgsrc</TD>
113                                         <TD>
114                                         <A HREF="http://pkgsrc.se/textproc/mdocml" CLASS="external">textproc/mdocml</A> (1.12.2 port)
115                                         </TD>
116                                 </TR>
117                                 <TR>
118                                         <TD>Minix3</TD>
119                                         <TD>
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)
121                                         </TD>
122                                 </TR>
123                                 <TR>
124                                         <TD>Alpine Linux</TD>
125                                         <TD>
126                                         <A HREF="http://git.alpinelinux.org/cgit/aports/tree/main/mdocml" CLASS="external">aports/main/mdocml</A> (1.12.2 port)
127                                         </TD>
128                                 </TR>
129                         </TBODY>
130                 </TABLE>
131                 <H1>
132                         <A NAME="documentation">Documentation</A>
133                 </H1>
134                 <P>
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.
137                 </P>
138
139                 <TABLE WIDTH="100%" SUMMARY="Documentation">
140                         <COL WIDTH="175">
141                         <COL>
142                         <TBODY>
143                                 <TR>
144                                         <TD VALIGN="top"><A HREF="apropos.1.html">apropos(1)</A></TD>
145                                         <TD VALIGN="top">
146                                                 search the manual page database
147                                         </TD>
148                                 </TR>
149                                 <TR>
150                                         <TD VALIGN="top"><A HREF="demandoc.1.html">demandoc(1)</A></TD>
151                                         <TD VALIGN="top">
152                                                 emit only text of UNIX manuals
153                                         </TD>
154                                 </TR>
155                                 <TR>
156                                         <TD VALIGN="top"><A HREF="mandoc.1.html">mandoc(1)</A></TD>
157                                         <TD VALIGN="top">
158                                                 format and display UNIX manuals
159                                         </TD>
160                                 </TR>
161                                 <TR>
162                                         <TD VALIGN="top"><A HREF="preconv.1.html">preconv(1)</A></TD>
163                                         <TD VALIGN="top">
164                                                 recode multibyte UNIX manuals
165                                         </TD>
166                                 </TR>
167                                 <TR>
168                                         <TD VALIGN="top"><A HREF="whatis.1.html">whatis(1)</A></TD>
169                                         <TD VALIGN="top">
170                                                 search the manual page database
171                                         </TD>
172                                 </TR>
173                                 <TR>
174                                         <TD VALIGN="top"><A HREF="mandoc.3.html">mandoc(3)</A></TD>
175                                         <TD VALIGN="top">
176                                                 mandoc macro compiler library
177                                         </TD>
178                                 </TR>
179                                 <TR>
180                                         <TD VALIGN="top"><A HREF="tbl.3.html">tbl(3)</A></TD>
181                                         <TD VALIGN="top">
182                                                 roff table parser library for mandoc
183                                         </TD>
184                                 </TR>
185                                 <TR>
186                                         <TD VALIGN="top"><A HREF="eqn.7.html">eqn(7)</A></TD>
187                                         <TD VALIGN="top">
188                                                 eqn-mandoc language reference
189                                         </TD>
190                                 </TR>
191                                 <TR>
192                                         <TD VALIGN="top"><A HREF="man.7.html">man(7)</A></TD>
193                                         <TD VALIGN="top">
194                                                 man language reference
195                                         </TD>
196                                 </TR>
197                                 <TR>
198                                         <TD VALIGN="top"><A HREF="man.cgi.7.html">man.cgi(7)</A></TD>
199                                         <TD VALIGN="top">
200                                                 cgi for manpage query and display
201                                         </TD>
202                                 </TR>
203                                 <TR>
204                                         <TD VALIGN="top"><A HREF="mandoc_char.7.html">mandoc_char(7)</A></TD>
205                                         <TD VALIGN="top">
206                                                 mandoc special characters
207                                         </TD>
208                                 </TR>
209                                 <TR>
210                                         <TD VALIGN="top"><A HREF="mdoc.7.html">mdoc(7)</A></TD>
211                                         <TD VALIGN="top">
212                                                 mdoc language reference
213                                         </TD>
214                                 </TR>
215                                 <TR>
216                                         <TD VALIGN="top"><A HREF="roff.7.html">roff(7)</A></TD>
217                                         <TD VALIGN="top">
218                                                 roff-mandoc language reference
219                                         </TD>
220                                 </TR>
221                                 <TR>
222                                         <TD VALIGN="top"><A HREF="tbl.7.html">tbl(7)</A></TD>
223                                         <TD VALIGN="top">
224                                                 tbl-mandoc language reference
225                                         </TD>
226                                 </TR>
227                                 <TR>
228                                         <TD VALIGN="top"><A HREF="catman.8.html">catman(8)</A></TD>
229                                         <TD VALIGN="top">
230                                                 update a man.cgi manpage cache
231                                         </TD>
232                                 </TR>
233                                 <TR>
234                                         <TD VALIGN="top"><A HREF="mandocdb.8.html">mandocdb(8)</A></TD>
235                                         <TD VALIGN="top">
236                                                 index UNIX manuals
237                                         </TD>
238                                 </TR>
239                         </TBODY>
240                 </TABLE>
241                 <H2>
242                         <A NAME="links">Supplementary Information</A>
243                 </H2>
244                 <UL>
245                         <LI>
246                                 <A HREF="http://manpages.bsd.lv/">Practical UNIX Manuals</A>: mdoc tutorial by Kristaps Dzonsons
247                         </LI>
248                         <LI>
249                                 <A HREF="http://www.openbsd.org/faq/ports/specialtopics.html#Mandoc" CLASS="external">OpenBSD porting guide</A>
250                                 chapter regarding manual pages
251                         </LI>
252                         <LI>
253                                 <A HREF="press.html">Publications and media coverage</A>
254                                 concerning mdocml and mandoc
255                         </LI>
256                         <LI>
257                                 <A HREF="http://manpages.bsd.lv/history.html">History of UNIX Manpages</A>: a comprehensive overview by Kristaps Dzonsons
258                         </LI>
259                 </UL>
260                 <H1>
261                         <A NAME="contact">Contact</A>
262                 </H1>
263                 <P>
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==&amp;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>.
269                 </P>
270                 <TABLE WIDTH="100%" SUMMARY="Mailing Lists">
271                         <COL WIDTH="175">
272                         <COL>
273                         <TBODY>
274                                 <TR>
275                                         <TD>
276                                                 disc<A CLASS="external" TITLE="Reveal this e-mail address"
277                                                 HREF="http://www.google.com/recaptcha/mailhide/d?k=01KQ80PFH5n3BBNpF5Gs4sRg==&amp;c=EV1QytpQqTHSItc2IXvZyocgYLPnG5K0JKw_gwMC9yc=">...</A>@mdocml.bsd.lv
278                                         </TD>
279                                         <TD>
280                                                 bug-reports, general questions, and announcements 
281                                         </TD>
282                                 </TR>
283                                 <TR>
284                                         <TD>
285                                                 tec<A CLASS="external" TITLE="Reveal this e-mail address"
286                                                 HREF="http://www.google.com/recaptcha/mailhide/d?k=01qDX_iV0RlUOarEvb6mR28g==&amp;c=gRXsTjza0NNCFPaYu-Taj2tF0pmYZSc90EZkFkhkxgo=">...</A>@mdocml.bsd.lv
287                                         </TD>
288                                         <TD>
289                                                 patches and system discussions 
290                                         </TD>
291                                 </TR>
292                                 <TR>
293                                         <TD>
294                                                 sou<A CLASS="external" TITLE="Reveal this e-mail address"
295                                                 HREF="http://www.google.com/recaptcha/mailhide/d?k=01prQrAZhhl2EbIwVcRfABsQ==&amp;c=KtTW4Yic9xk-8g40KzJoca4fR3MYXv28g8NC6OQV-T8=">...</A>@mdocml.bsd.lv
296                                         </TD>
297                                         <TD>
298                                                 source commit messages 
299                                         </TD>
300                                 </TR>
301                         </TBODY>
302                 </TABLE>
303                 <H1>
304                         <A NAME="news">News</A>
305                 </H1>
306                 <P CLASS="news">
307                         31-12-2013: version 1.12.3
308                 </P>
309                 <P>
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.
313                 </P>
314                 <P>
315                         The <A HREF="mdoc.7.html">mdoc(7)</A> .Bk macro got some addititonal bugfixes.
316                 </P>
317                 <P>
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.
321                 </P>
322                 <P>
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.
325                 </P>
326                 <P>
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.
329                 </P>
330                 <P>
331                         The <A HREF="man.7.html">man(7)</A> parser now handles closing blocks that are not open
332                         more gracefully.
333                 </P>
334                 <P>
335                         The <A HREF="man.7.html">man(7)</A> parser now ignores blank lines right after .SH and .SS.
336                 </P>
337                 <P>
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.
340                 </P>
341                 <P>
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.
344                 </P>
345                 <P>
346                         The <A HREF="roff.7.html">roff(7)</A> parser now supports the alternative escape sequence
347                         syntax \C'uXXXX' for Unicode characters.
348                 </P>
349                 <P>
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.                  
352                 </P>
353                 <P>
354                         The <A HREF="roff.7.html">roff(7)</A> manual got a new ESCAPE SEQUENCE REFERENCE.
355                 </P>
356                 <P CLASS="news">
357                         05-10-2013: version 1.12.2
358                 </P>
359                 <P>
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.
362                 </P>
363                 <P>
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.
366                 </P>
367                 <P>
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.
370                 </P>
371                 <P>
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>.
376                 </P>
377                 <P>
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.
382                 </P>
383                 <P>
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.
390                 </P>
391                 <P>
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.
394                 </P>
395                 <P>
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.
398                 </P>
399                 <H2>
400                         <A>History</A>
401                 </H2>
402                 <UL>
403                         <LI>
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.
407                         </LI>
408                         <LI>
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.
416                         </LI>
417                         <LI>
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.
423                         </LI>
424                         <LI>
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.
427                         </LI>
428                 </UL>
429                 <P CLASS="foot">
430                         <SMALL>
431                                 Copyright &#169; 2008&#8211;2011 
432                                 <A CLASS="external" HREF="http://kristaps.bsd.lv">Kristaps Dzonsons</A>, 
433                                 &#169; 2013 Ingo Schwarze,
434                                 $Date: 2013/12/31 $
435                         </SMALL>
436                 </P>
437         </BODY>
438 </HTML>