1 .\" $Id: mandoc.1,v 1.94 2011/10/05 21:35:17 kristaps Exp $
3 .\" Copyright (c) 2009, 2010, 2011 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: October 5 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:
160 .Bl -tag -width "-Tlocale"
162 Produce 7-bit ASCII output.
167 Produce strict CSS1/HTML-4.01 output.
171 Parse only: produce no output.
173 .Fl W Ns Cm warning .
174 .It Fl T Ns Cm locale
175 Encode output using the current locale.
181 format; only useful when applied to
189 Produce PostScript output.
191 .Sx PostScript Output .
193 Produce an indented parse tree.
195 Encode output in the UTF\-8 multi-byte format.
199 Produce strict CSS1/XHTML-1.0 output.
204 If multiple input files are specified, these will be processed by the
205 corresponding filter in-order.
209 which is the default, is rendered in standard 7-bit ASCII documented in
212 Font styles are applied by using back-spaced encoding such that an
216 .Sq _ Ns \e[bs] Ns c ,
219 is the back-space character number 8.
220 Emboldened characters are rendered as
221 .Sq c Ns \e[bs] Ns c .
223 The special characters documented in
225 are rendered best-effort in an ASCII equivalent.
226 If no equivalent is found,
230 Output width is limited to 78 visible columns unless literal input lines
235 arguments are accepted:
237 .It Cm width Ns = Ns Ar width
238 The output width is set to
240 which will normalise to \(>=60.
245 conforms to HTML-4.01 strict.
248 .Pa example.style.css
249 file documents style-sheet classes available for customising output.
250 If a style-sheet is not specified with
253 defaults to simple output readable in any graphical or text-based web
256 Special characters are rendered in decimal-encoded UTF\-8.
260 arguments are accepted:
263 Do not emit doctype, html, and body elements.
266 argument shall be unused.
267 This is useful when embedding manual content within existing documents.
268 .It Cm includes Ns = Ns Ar fmt
273 is used as a template for linked header files (usually via the
278 are replaced with the include filename.
279 The default is not to present a
281 .It Cm man Ns = Ns Ar fmt
285 .Ar ../html%S/%N.%S.html ,
286 is used as a template for linked manuals (usually via the
293 are replaced with the linked manual's name and section, respectively.
294 If no section is included, section 1 is assumed.
295 The default is not to
297 .It Cm style Ns = Ns Ar style.css
300 is used for an external style-sheet.
301 This must be a valid absolute or
305 Locale-depending output encoding is triggered with
307 This option is not available on all systems: systems without locale
308 support, or those whose internal representation is not natively UCS-4,
313 for font style specification and available command-line arguments.
315 PDF-1.1 output may be generated by
318 .Sx PostScript Output
321 arguments and defaults.
322 .Ss PostScript Output
325 Level-2 pages may be generated by
327 Output pages default to letter sized and are rendered in the Times font
329 Margins are calculated as 1/9 the page length and width.
332 Special characters are rendered as in
337 arguments are accepted:
339 .It Cm paper Ns = Ns Ar name
349 You may also manually specify dimensions as
351 width by height in millimetres.
352 If an unknown value is encountered,
359 to force a UTF\-8 locale.
362 for details and options.
366 conforms to XHTML-1.0 strict.
370 for details; beyond generating XHTML tags instead of HTML tags, these
371 output modes are identical.
375 utility exits with one of the following values, controlled by the message
381 .Bl -tag -width Ds -compact
383 No warnings or errors occurred, or those that did were ignored because
384 they were lower than the requested
387 At least one warning occurred, but no error, and
391 At least one parsing error occurred, but no fatal error, and
397 A fatal parsing error occurred.
399 Invalid command line arguments were specified.
400 No input files have been read.
402 An operating system error occurred, for example memory exhaustion or an
403 error accessing input files.
406 to exit at once, possibly in the middle of parsing or formatting a file.
412 .Fl W Ns Cm warning .
414 To page manuals to the terminal:
416 .Dl $ mandoc \-Wall,stop mandoc.1 2\*(Gt&1 | less
417 .Dl $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
419 To produce HTML manuals with
423 .Dl $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
425 To check over a large set of manuals:
427 .Dl $ mandoc \-Tlint `find /usr/src -name \e*\e.[1-9]`
429 To produce a series of PostScript manuals for A4 paper:
431 .Dl $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
437 format, for use on systems lacking an
441 .Dl $ mandoc \-Tman foo.mdoc \*(Gt foo.man
443 Standard error messages reporting parsing errors are prefixed by
446 .D1 Ar file : line : column : \ level :
449 where the fields have the following meanings:
450 .Bl -tag -width "column"
452 The name of the input file causing the message.
454 The line number in that input file.
455 Line numbering starts at 1.
457 The column number in that input file.
458 Column numbering starts at 1.
459 If the issue is caused by a word, the column number usually
460 points to the first character of the word.
462 The message level, printed in capital letters.
465 Message levels have the following meanings:
466 .Bl -tag -width "warning"
468 The parser is unable to parse a given input file at all.
469 No formatted output is produced from that input file.
471 An input file contains syntax that cannot be safely interpreted,
472 either because it is invalid or because
474 does not implement it yet.
475 By discarding part of the input or inserting missing tokens,
476 the parser is able to continue, and the error does not prevent
477 generation of formatted output, but typically, preparing that
478 output involves information loss, broken document structure
479 or unintended formatting.
481 An input file uses obsolete, discouraged or non-portable syntax.
482 All the same, the meaning of the input is unambiguous and a correct
483 rendering can be produced.
484 Documents causing warnings may render poorly when using other
485 formatting tools instead of
493 levels are hidden unless their level, or a lower level, is requested using a
501 utility may also print messages related to invalid command line arguments
502 or operating system errors, for example when memory is exhausted or
503 input files cannot be read.
504 Such messages do not carry the prefix described above.
506 This section summarises
508 compatibility with GNU troff.
509 Each input and output format is separately noted.
510 .Ss ASCII Compatibility
513 Unrenderable unicode codepoints specified with
515 escapes are printed as
518 In GNU troff, these raise an error.
528 are synonyms, as are \-filled and \-ragged.
530 In historic GNU troff, the
533 macro does not underline when scoped under an
535 in the FILES section.
536 This behaves correctly in
539 A list or display following the
544 does not assert a prior vertical break, just as it doesn't with
554 Words aren't hyphenated.
556 .Ss HTML/XHTML Compatibility
561 escape will revert the font to the previous
563 escape, not to the last rendered decoration, which is now dictated by
564 CSS instead of hard-coded.
565 It also will not span past the current scope,
569 mode, this will work fine.
576 list types render similarly (no break following overreached left-hand
577 side) due to the expressive constraints of HTML.
584 lists render similarly.
596 utility was written by
597 .An Kristaps Dzonsons ,
598 .Mt kristaps@bsd.lv .
604 the maximum size of an element attribute is determined by
606 which is usually 1024 bytes.
607 Be aware of this when setting long link
609 .Fl O Ns Cm style Ns = Ns Ar really/long/link .
611 Nesting elements within next-line element scopes of
621 and cause them to forget the formatting of the prior next-line scope.
625 control character is an alias for the standard macro control character
626 and does not emit a line-break as stipulated in GNU troff.