1 .\" $Id: mandoc.1,v 1.87 2011/05/17 22:32:45 kristaps 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: May 17 2011 $
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:
161 .It Fl T Ns Cm locale
162 This option encodes output characters using the current
168 Produce 7-bit ASCII output.
173 Produce strict CSS1/HTML-4.01 output.
177 Parse only: produce no output.
179 .Fl W Ns Cm warning .
185 Produce PostScript output.
187 .Sx PostScript Output .
189 Produce an indented parse tree.
191 Produce strict CSS1/XHTML-1.0 output.
196 If multiple input files are specified, these will be processed by the
197 corresponding filter in-order.
199 Locale-depending output encoding is triggered with
201 This option is not available on all systems: systems without locale
202 support, or those whose internal representation is not natively UCS-4,
207 for font style specification and available command-line arguments.
211 which is the default, is rendered in standard 7-bit ASCII documented in
214 Font styles are applied by using back-spaced encoding such that an
218 .Sq _ Ns \e[bs] Ns c ,
221 is the back-space character number 8.
222 Emboldened characters are rendered as
223 .Sq c Ns \e[bs] Ns c .
225 The special characters documented in
227 are rendered best-effort in an ASCII equivalent.
228 If no equivalent is found,
232 Output width is limited to 78 visible columns unless literal input lines
237 arguments are accepted:
239 .It Cm width Ns = Ns Ar width
240 The output width is set to
242 which will normalise to \(>=60.
247 conforms to HTML-4.01 strict.
250 .Pa example.style.css
251 file documents style-sheet classes available for customising output.
252 If a style-sheet is not specified with
255 defaults to simple output readable in any graphical or text-based web
258 Special characters are rendered in decimal-encoded UTF-8.
262 arguments are accepted:
264 .It Cm includes Ns = Ns Ar fmt
269 is used as a template for linked header files (usually via the
274 are replaced with the include filename.
275 The default is not to present a
277 .It Cm man Ns = Ns Ar fmt
281 .Ar ../html%S/%N.%S.html ,
282 is used as a template for linked manuals (usually via the
289 are replaced with the linked manual's name and section, respectively.
290 If no section is included, section 1 is assumed.
291 The default is not to
293 .It Cm style Ns = Ns Ar style.css
296 is used for an external style-sheet.
297 This must be a valid absolute or
300 .Ss PostScript Output
303 Level-2 pages may be generated by
305 Output pages default to letter sized and are rendered in the Times font
307 Margins are calculated as 1/9 the page length and width.
310 Special characters are rendered as in
315 arguments are accepted:
317 .It Cm paper Ns = Ns Ar name
327 You may also manually specify dimensions as
329 width by height in millimetres.
330 If an unknown value is encountered,
335 PDF-1.1 output may be generated by
338 .Sx PostScript Output
341 arguments and defaults.
345 conforms to XHTML-1.0 strict.
349 for details; beyond generating XHTML tags instead of HTML tags, these
350 output modes are identical.
354 utility exits with one of the following values, controlled by the message
360 .Bl -tag -width Ds -compact
362 No warnings or errors occurred, or those that did were ignored because
363 they were lower than the requested
366 At least one warning occurred, but no error, and
370 At least one parsing error occurred, but no fatal error, and
376 A fatal parsing error occurred.
378 Invalid command line arguments were specified.
379 No input files have been read.
381 An operating system error occurred, for example memory exhaustion or an
382 error accessing input files.
385 to exit at once, possibly in the middle of parsing or formatting a file.
391 .Fl W Ns Cm warning .
393 To page manuals to the terminal:
395 .Dl $ mandoc \-Wall,stop mandoc.1 2\*(Gt&1 | less
396 .Dl $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
398 To produce HTML manuals with
402 .Dl $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
404 To check over a large set of manuals:
406 .Dl $ mandoc \-Tlint `find /usr/src -name \e*\e.[1-9]`
408 To produce a series of PostScript manuals for A4 paper:
410 .Dl $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
412 Standard error messages reporting parsing errors are prefixed by
415 .D1 Ar file : line : column : \ level :
418 where the fields have the following meanings:
419 .Bl -tag -width "column"
421 The name of the input file causing the message.
423 The line number in that input file.
424 Line numbering starts at 1.
426 The column number in that input file.
427 Column numbering starts at 1.
428 If the issue is caused by a word, the column number usually
429 points to the first character of the word.
431 The message level, printed in capital letters.
434 Message levels have the following meanings:
435 .Bl -tag -width "warning"
437 The parser is unable to parse a given input file at all.
438 No formatted output is produced from that input file.
440 An input file contains syntax that cannot be safely interpreted,
441 either because it is invalid or because
443 does not implement it yet.
444 By discarding part of the input or inserting missing tokens,
445 the parser is able to continue, and the error does not prevent
446 generation of formatted output, but typically, preparing that
447 output involves information loss, broken document structure
448 or unintended formatting.
450 An input file uses obsolete, discouraged or non-portable syntax.
451 All the same, the meaning of the input is unambiguous and a correct
452 rendering can be produced.
453 Documents causing warnings may render poorly when using other
454 formatting tools instead of
462 levels are hidden unless their level, or a lower level, is requested using a
470 utility may also print messages related to invalid command line arguments
471 or operating system errors, for example when memory is exhausted or
472 input files cannot be read.
473 Such messages do not carry the prefix described above.
475 This section summarises
477 compatibility with GNU troff.
478 Each input and output format is separately noted.
479 .Ss ASCII Compatibility
482 Unrenderable unicode codepoints specified with
484 escapes are printed as
487 In GNU troff, these raise an error.
497 are synonyms, as are \-filled and \-ragged.
499 In historic GNU troff, the
502 macro does not underline when scoped under an
504 in the FILES section.
505 This behaves correctly in
508 A list or display following the
513 does not assert a prior vertical break, just as it doesn't with
523 Words aren't hyphenated.
525 .Ss HTML/XHTML Compatibility
530 escape will revert the font to the previous
532 escape, not to the last rendered decoration, which is now dictated by
533 CSS instead of hard-coded.
534 It also will not span past the current scope,
538 mode, this will work fine.
545 list types render similarly (no break following overreached left-hand
546 side) due to the expressive constraints of HTML.
553 lists render similarly.
565 utility was written by
566 .An Kristaps Dzonsons Aq kristaps@bsd.lv .
572 the maximum size of an element attribute is determined by
574 which is usually 1024 bytes.
575 Be aware of this when setting long link
577 .Fl O Ns Cm style Ns = Ns Ar really/long/link .
579 Nesting elements within next-line element scopes of
589 and cause them to forget the formatting of the prior next-line scope.
593 control character is an alias for the standard macro control character
594 and does not emit a line-break as stipulated in GNU troff.