1 .\" $Id: mandoc.1,v 1.77 2010/08/20 01:02:07 schwarze Exp $
3 .\" Copyright (c) 2009, 2010 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: August 20 2010 $
22 .Nd format and display UNIX manuals
36 manual pages for display.
37 The arguments are as follows:
43 for available formats.
47 Comma-separated output options.
52 for available formats.
56 Print version and exit.
58 Specify the minimum message
60 to be reported on the standard error output and to affect the exit status.
83 to exit after parsing a file that causes warnings or errors of at least
85 No formatted output will be produced from that file.
90 are requested, they can be joined with a comma, for example
91 .Fl W Ns Cm error , Ns Cm stop .
93 Read input from zero or more files.
94 If unspecified, reads from stdin.
95 If multiple files are specified,
97 will halt with the first failed parse.
106 text from stdin, implying
129 should only be used for legacy manuals.
133 which is also the default, determines encoding on-the-fly: if the first
140 parser is used; otherwise, the
145 files are specified with
147 each has its file-type determined this way.
148 If multiple files are
153 is specified, then this format is used exclusively.
157 utility accepts the following
159 arguments, which correspond to output modes:
162 Produce 7-bit ASCII output, backspace-encoded for bold and underline
168 Produce strict HTML-4.01 output, with a sane default style.
172 Parse only: produce no output.
174 .Fl W Ns Cm warning .
180 Produce PostScript output.
182 .Sx PostScript Output .
184 Produce an indented parse tree.
186 Produce strict XHTML-1.0 output, with a sane default style.
191 If multiple input files are specified, these will be processed by the
192 corresponding filter in-order.
196 which is the default, is rendered in standard 7-bit ASCII documented in
199 Font styles are applied by using back-spaced encoding such that an
203 .Sq _ Ns \e[bs] Ns c ,
206 is the back-space character number 8.
207 Emboldened characters are rendered as
208 .Sq c Ns \e[bs] Ns c .
210 The special characters documented in
212 are rendered best-effort in an ASCII equivalent.
214 Output width is limited to 78 visible columns unless literal input lines
219 arguments are accepted:
221 .It Cm width Ns = Ns Ar width
222 The output width is set to
224 which will normalise to \(>=60.
229 conforms to HTML-4.01 strict.
231 Font styles and page structure are applied using CSS2.
232 By default, no font style is applied to any text,
233 although CSS2 is hard-coded to format
234 the basic structure of output.
237 .Pa example.style.css
238 file documents the range of styles applied to output and, if used, will
239 cause rendered documents to appear as they do in
242 Special characters are rendered in decimal-encoded UTF-8.
246 arguments are accepted:
248 .It Cm includes Ns = Ns Ar fmt
253 is used as a template for linked header files (usually via the
258 are replaced with the include filename.
259 The default is not to present a
261 .It Cm man Ns = Ns Ar fmt
265 .Ar ../html%S/%N.%S.html ,
266 is used as a template for linked manuals (usually via the
273 are replaced with the linked manual's name and section, respectively.
274 If no section is included, section 1 is assumed.
275 The default is not to
277 .It Cm style Ns = Ns Ar style.css
280 is used for an external style-sheet.
281 This must be a valid absolute or
284 .Ss PostScript Output
287 Level-2 pages may be generated by
289 Output pages default to letter sized and are rendered in the Times font
291 Margins are calculated as 1/9 the page length and width.
294 Special characters are rendered as in
299 arguments are accepted:
301 .It Cm paper Ns = Ns Ar name
311 You may also manually specify dimensions as
313 width by height in millimetres.
314 If an unknown value is encountered,
319 PDF-1.1 output may be generated by
322 .Sx PostScript Output
325 arguments and defaults.
329 conforms to XHTML-1.0 strict.
333 for details; beyond generating XHTML tags instead of HTML tags, these
334 output modes are identical.
338 utility exits with one of the following values, controlled by the message
344 .Bl -tag -width Ds -compact
346 No warnings or errors occurred, or those that did were ignored because
347 they were lower than the requested
350 At least one warning occurred, but no error, and
354 At least one parsing error occurred, but no fatal error, and
360 A fatal parsing error occurred.
362 Invalid command line arguments were specified.
363 No input files have been read.
365 An operating system error occurred, for example memory exhaustion or an
366 error accessing input files.
369 to exit at once, possibly in the middle of parsing or formatting a file.
375 .Fl W Ns Cm warning .
377 To page manuals to the terminal:
379 .D1 $ mandoc \-Wall,stop mandoc.1 2\*(Gt&1 | less
380 .D1 $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
382 To produce HTML manuals with
386 .D1 $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
388 To check over a large set of manuals:
390 .Dl $ mandoc \-Tlint `find /usr/src -name \e*\e.[1-9]`
392 To produce a series of PostScript manuals for A4 paper:
394 .D1 $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
396 Standard error messages reporting parsing errors are prefixed by
399 .D1 Ar file : line : column : \ level :
402 where the fields have the following meanings:
403 .Bl -tag -width "column"
405 The name of the input file causing the message.
407 The line number in that input file.
408 Line numbering starts at 1.
410 The column number in that input file.
411 Column numbering starts at 1.
412 If the issue is caused by a word, the column number usually
413 points to the first character of the word.
415 The message level, printed in capital letters.
418 Message levels have the following meanings:
419 .Bl -tag -width "warning"
421 The parser is unable to parse a given input file at all.
422 No formatted output is produced from that input file.
424 An input file contains syntax that cannot be safely interpreted,
425 either because it is invalid or because
427 does not implement it yet.
428 By discarding part of the input or inserting missing tokens,
429 the parser is able to continue, and the error does not prevent
430 generation of formatted output, but typically, preparing that
431 output involves information loss, broken document structure
432 or unintended formatting.
434 An input file uses obsolete, discouraged or non-portable syntax.
435 All the same, the meaning of the input is unambiguous and a correct
436 rendering can be produced.
437 Documents causing warnings may render poorly when using other
438 formatting tools instead of
446 levels are hidden unless their level, or a lower level, is requested using a
454 utility may also print messages related to invalid command line arguments
455 or operating system errors, for example when memory is exhausted or
456 input files cannot be read. Such messages do not carry the prefix
459 This section summarises
461 compatibility with GNU troff.
462 Each input and output format is separately noted.
463 .Ss ASCII Compatibility
474 are synonyms, as are \-filled and \-ragged.
479 macro does not underline when scoped under an
481 in the FILES section.
482 This behaves correctly in
485 A list or display following the
490 does not assert a prior vertical break, just as it doesn't with
500 Words aren't hyphenated.
502 Sentences are unilaterally monospaced.
504 .Ss HTML/XHTML Compatibility
509 escape will revert the font to the previous
511 escape, not to the last rendered decoration, which is now dictated by
512 CSS instead of hard-coded.
513 It also will not span past the current scope,
517 mode, this will work fine.
524 list types render similarly (no break following overreached left-hand
525 side) due to the expressive constraints of HTML.
532 lists render similarly.
541 utility was written by
542 .An Kristaps Dzonsons Aq kristaps@bsd.lv .
548 CSS2 styling used for
550 input lists does not render properly in older browsers, such as Internet
551 Explorer 6 and earlier.
557 the maximum size of an element attribute is determined by
559 which is usually 1024 bytes.
560 Be aware of this when setting long link
562 .Fl O Ns Cm style Ns = Ns Ar really/long/link .
564 Nesting elements within next-line element scopes of
574 and cause them to forget the formatting of the prior next-line scope.
580 should italicise all subsequent text if a line argument is not provided.
581 This behaviour is not implemented.
584 control character is an alias for the standard macro control character
585 and does not emit a line-break as stipulated in GNU troff.