1 .\" $Id: mandoc.1,v 1.60 2010/05/09 21:19:42 kristaps Exp $
3 .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@bsd.lv>
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 .Dd $Mdocdate: May 9 2010 $
22 .Nd format and display UNIX manuals
37 manual pages for display.
38 The arguments are as follows:
41 Comma-separated compiler options.
49 for available formats.
53 Comma-separated output options.
61 for available formats.
65 Print version and exit.
67 Comma-separated warning options.
72 for warnings to be considered errors and cause utility
76 arguments may be comma-separated, such as
77 .Fl W Ns Cm error , Ns Cm all .
79 Read input from zero or more files.
80 If unspecified, reads from stdin.
81 If multiple files are specified,
83 will halt with the first failed parse.
92 text from stdin, implying
117 should only be used for legacy manuals.
121 which is also the default, determines encoding on-the-fly: if the first
128 parser is used; otherwise, the
133 files are specified with
135 each has its file-type determined this way.
136 If multiple files are
141 is specified, then this format is used exclusively.
145 utility accepts the following
151 Produce 7-bit ASCII output, backspace-encoded for bold and underline
157 Produce strict HTML-4.01 output, with a sane default style.
161 Parse only: produce no output.
167 Produce an indented parse tree.
169 Produce strict XHTML-1.0 output, with a sane default style.
174 If multiple input files are specified, these will be processed by the
175 corresponding filter in-order.
177 Default compiler behaviour may be overridden with the
181 .It Fl f Ns Cm ign-errors
182 When parsing multiple files, don't halt when one errors out.
185 over a large set of manuals passed on the command line.
186 .It Fl f Ns Cm ign-escape
187 Ignore invalid escape sequences.
188 This is the default, but the option can be used to override an earlier
190 .It Fl f Ns Cm ign-scope
191 When rewinding the scope of a block macro, forces the compiler to ignore
193 This can seriously mangle the resulting tree.
195 .It Fl f Ns Cm no-ign-escape
196 Do not ignore invalid escape sequences.
197 .It Fl f Ns Cm no-ign-macro
198 Do not ignore unknown macros at the start of input lines.
199 .It Fl f Ns Cm strict
201 .Fl f Ns Cm no-ign-escape
203 .Fl f Ns Cm no-ign-macro .
206 For the time being, only
210 accept output options:
212 .It Fl O Ns Cm includes Ns = Ns Ar fmt
217 is used as a template for linked header files (usually via the
222 are replaced with the include filename.
223 The default is not to present a
225 .It Fl O Ns Cm man Ns = Ns Ar fmt
229 .Ar ../html%S/%N.%S.html ,
230 is used as a template for linked manuals (usually via the
237 are replaced with the linked manual's name and section, respectively.
238 If no section is included, section 1 is assumed.
239 The default is not to
241 .It Fl O Ns Cm style Ns = Ns Ar style.css
244 is used for an external style-sheet.
245 This must be a valid absolute or
249 This section documents output details of
251 In general, output conforms to the traditional manual style of a header,
252 a body composed of sections and sub-sections, and a footer.
254 The text style of output characters (non-macro characters, punctuation,
255 and white-space) is dictated by context.
257 White-space is generally stripped from input.
258 This can be changed with
259 character escapes (specified in
261 or literal modes (specified in
266 If non-macro punctuation is set apart from words, such as in the phrase
267 .Dq to be \&, or not to be ,
270 regardless of output format, according to the following rules: opening
278 is not followed by a space; closing punctuation
291 is not preceded by white-space.
295 however, these rules are also applied to macro arguments when appropriate.
299 which is the default, is rendered in standard 7-bit ASCII documented in
302 Font styles are applied by using back-spaced encoding such that an
306 .Sq _ Ns \e[bs] Ns c ,
309 is the back-space character number 8.
310 Emboldened characters are rendered as
311 .Sq c Ns \e[bs] Ns c .
313 The special characters documented in
315 are rendered best-effort in an ASCII equivalent.
317 Output width is limited to 78 visible columns unless literal input lines
322 conforms to HTML-4.01 strict.
324 Font styles and page structure are applied using CSS2.
325 By default, no font style is applied to any text,
326 although CSS2 is hard-coded to format
327 the basic structure of output.
330 .Pa example.style.css
331 file documents the range of styles applied to output and, if used, will
332 cause rendered documents to appear as they do in
335 Special characters are rendered in decimal-encoded UTF-8.
339 conforms to XHTML-1.0 strict.
343 for details; beyond generating XHTML tags instead of HTML tags, these
344 output modes are identical.
346 To page manuals to the terminal:
348 .D1 $ mandoc \-Wall,error \-fstrict mandoc.1 2\*(Gt&1 | less
349 .D1 $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
351 To produce HTML manuals with
355 .D1 $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
357 To check over a large set of manuals:
359 .Dl $ mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]`
361 This section summarises
365 Each input and output format is separately noted.
366 .Ss ASCII Compatibility
371 special character doesn't produce expected behaviour in
382 are synonyms, as are \-filled and \-ragged.
389 macro does not underline when scoped under an
391 in the FILES section.
392 This behaves correctly in
395 A list or display following the
400 does not assert a prior vertical break, just as it doesn't with
410 Words aren't hyphenated.
412 In normal mode (not a literal block), blocks of spaces aren't preserved,
413 so double spaces following sentence closure are reduced to a single space;
417 Sentences are unilaterally monospaced.
419 .Ss HTML/XHTML Compatibility
424 escape will revert the font to the previous
426 escape, not to the last rendered decoration, which is now dictated by
427 CSS instead of hard-coded.
428 It also will not span past the current scope,
432 mode, this will work fine.
439 list types render similarly (no break following overreached left-hand
440 side) due to the expressive constraints of HTML.
447 lists render similarly.
456 utility was written by
457 .An Kristaps Dzonsons Aq kristaps@bsd.lv .
463 CSS2 styling used for
465 input lists does not render properly in older browsers, such as Internet
466 Explorer 6 and earlier.
472 the maximum size of an element attribute is determined by
474 which is usually 1024 bytes.
475 Be aware of this when setting long link
477 .Fl O Ns Cm style Ns = Ns Ar really/long/link .
483 output modes don't render the
485 font size escape documented in
490 Nesting elements within next-line element scopes of
500 and cause them to forget the formatting of the prior next-line scope.
506 should italicise all subsequent text if a line argument is not provided.
507 This behaviour is not implemented.
510 control character is an alias for the standard macro control character
511 and does not emit a line-break as stipulated in GNU troff.