1 .\" $Id: mandoc.1,v 1.89 2011/05/30 07:24:15 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 30 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:
162 Encode output in the UTF\-8 multi-byte format.
165 .It Fl T Ns Cm locale
166 Encode output using the current locale.
170 Produce 7-bit ASCII output.
175 Produce strict CSS1/HTML-4.01 output.
179 Parse only: produce no output.
181 .Fl W Ns Cm warning .
187 Produce PostScript output.
189 .Sx PostScript Output .
191 Produce an indented parse tree.
193 Produce strict CSS1/XHTML-1.0 output.
198 If multiple input files are specified, these will be processed by the
199 corresponding filter in-order.
203 to force a UTF\-8 locale.
206 for details and options.
208 Locale-depending output encoding is triggered with
210 This option is not available on all systems: systems without locale
211 support, or those whose internal representation is not natively UCS-4,
216 for font style specification and available command-line arguments.
220 which is the default, is rendered in standard 7-bit ASCII documented in
223 Font styles are applied by using back-spaced encoding such that an
227 .Sq _ Ns \e[bs] Ns c ,
230 is the back-space character number 8.
231 Emboldened characters are rendered as
232 .Sq c Ns \e[bs] Ns c .
234 The special characters documented in
236 are rendered best-effort in an ASCII equivalent.
237 If no equivalent is found,
241 Output width is limited to 78 visible columns unless literal input lines
246 arguments are accepted:
248 .It Cm width Ns = Ns Ar width
249 The output width is set to
251 which will normalise to \(>=60.
256 conforms to HTML-4.01 strict.
259 .Pa example.style.css
260 file documents style-sheet classes available for customising output.
261 If a style-sheet is not specified with
264 defaults to simple output readable in any graphical or text-based web
267 Special characters are rendered in decimal-encoded UTF\-8.
271 arguments are accepted:
273 .It Cm includes Ns = Ns Ar fmt
278 is used as a template for linked header files (usually via the
283 are replaced with the include filename.
284 The default is not to present a
286 .It Cm man Ns = Ns Ar fmt
290 .Ar ../html%S/%N.%S.html ,
291 is used as a template for linked manuals (usually via the
298 are replaced with the linked manual's name and section, respectively.
299 If no section is included, section 1 is assumed.
300 The default is not to
302 .It Cm style Ns = Ns Ar style.css
305 is used for an external style-sheet.
306 This must be a valid absolute or
309 .Ss PostScript Output
312 Level-2 pages may be generated by
314 Output pages default to letter sized and are rendered in the Times font
316 Margins are calculated as 1/9 the page length and width.
319 Special characters are rendered as in
324 arguments are accepted:
326 .It Cm paper Ns = Ns Ar name
336 You may also manually specify dimensions as
338 width by height in millimetres.
339 If an unknown value is encountered,
344 PDF-1.1 output may be generated by
347 .Sx PostScript Output
350 arguments and defaults.
354 conforms to XHTML-1.0 strict.
358 for details; beyond generating XHTML tags instead of HTML tags, these
359 output modes are identical.
363 utility exits with one of the following values, controlled by the message
369 .Bl -tag -width Ds -compact
371 No warnings or errors occurred, or those that did were ignored because
372 they were lower than the requested
375 At least one warning occurred, but no error, and
379 At least one parsing error occurred, but no fatal error, and
385 A fatal parsing error occurred.
387 Invalid command line arguments were specified.
388 No input files have been read.
390 An operating system error occurred, for example memory exhaustion or an
391 error accessing input files.
394 to exit at once, possibly in the middle of parsing or formatting a file.
400 .Fl W Ns Cm warning .
402 To page manuals to the terminal:
404 .Dl $ mandoc \-Wall,stop mandoc.1 2\*(Gt&1 | less
405 .Dl $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
407 To produce HTML manuals with
411 .Dl $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
413 To check over a large set of manuals:
415 .Dl $ mandoc \-Tlint `find /usr/src -name \e*\e.[1-9]`
417 To produce a series of PostScript manuals for A4 paper:
419 .Dl $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
421 Standard error messages reporting parsing errors are prefixed by
424 .D1 Ar file : line : column : \ level :
427 where the fields have the following meanings:
428 .Bl -tag -width "column"
430 The name of the input file causing the message.
432 The line number in that input file.
433 Line numbering starts at 1.
435 The column number in that input file.
436 Column numbering starts at 1.
437 If the issue is caused by a word, the column number usually
438 points to the first character of the word.
440 The message level, printed in capital letters.
443 Message levels have the following meanings:
444 .Bl -tag -width "warning"
446 The parser is unable to parse a given input file at all.
447 No formatted output is produced from that input file.
449 An input file contains syntax that cannot be safely interpreted,
450 either because it is invalid or because
452 does not implement it yet.
453 By discarding part of the input or inserting missing tokens,
454 the parser is able to continue, and the error does not prevent
455 generation of formatted output, but typically, preparing that
456 output involves information loss, broken document structure
457 or unintended formatting.
459 An input file uses obsolete, discouraged or non-portable syntax.
460 All the same, the meaning of the input is unambiguous and a correct
461 rendering can be produced.
462 Documents causing warnings may render poorly when using other
463 formatting tools instead of
471 levels are hidden unless their level, or a lower level, is requested using a
479 utility may also print messages related to invalid command line arguments
480 or operating system errors, for example when memory is exhausted or
481 input files cannot be read.
482 Such messages do not carry the prefix described above.
484 This section summarises
486 compatibility with GNU troff.
487 Each input and output format is separately noted.
488 .Ss ASCII Compatibility
491 Unrenderable unicode codepoints specified with
493 escapes are printed as
496 In GNU troff, these raise an error.
506 are synonyms, as are \-filled and \-ragged.
508 In historic GNU troff, the
511 macro does not underline when scoped under an
513 in the FILES section.
514 This behaves correctly in
517 A list or display following the
522 does not assert a prior vertical break, just as it doesn't with
532 Words aren't hyphenated.
534 .Ss HTML/XHTML Compatibility
539 escape will revert the font to the previous
541 escape, not to the last rendered decoration, which is now dictated by
542 CSS instead of hard-coded.
543 It also will not span past the current scope,
547 mode, this will work fine.
554 list types render similarly (no break following overreached left-hand
555 side) due to the expressive constraints of HTML.
562 lists render similarly.
574 utility was written by
575 .An Kristaps Dzonsons Aq kristaps@bsd.lv .
581 the maximum size of an element attribute is determined by
583 which is usually 1024 bytes.
584 Be aware of this when setting long link
586 .Fl O Ns Cm style Ns = Ns Ar really/long/link .
588 Nesting elements within next-line element scopes of
598 and cause them to forget the formatting of the prior next-line scope.
602 control character is an alias for the standard macro control character
603 and does not emit a line-break as stipulated in GNU troff.