]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.1
`Ad' is supposed to underline. Found whilst trolling through manuals.
[mandoc.git] / mandoc.1
index 9a66e74b1e1e7cf89e3869f80af254d7730920bd..6ed67e2c47498a7826c3f39a08184f1bc6198696 100644 (file)
--- a/mandoc.1
+++ b/mandoc.1
-.\" $Id: mandoc.1,v 1.8 2009/03/23 15:41:09 kristaps Exp $
+.\"    $Id: mandoc.1,v 1.73 2010/07/25 11:44:31 kristaps Exp $
 .\"
-.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@openbsd.org>
+.\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the
-.\" above copyright notice and this permission notice appear in all
-.\" copies.
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
 .\"
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
-.\" WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
-.\" AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-.\" PERFORMANCE OF THIS SOFTWARE.
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: March 23 2009 $
-.Dt mandoc 1
+.Dd $Mdocdate: July 25 2010 $
+.Dt MANDOC 1
 .Os
-.\" SECTION
 .Sh NAME
 .Nm mandoc
 .Nd format and display UNIX manuals
-.\" SECTION
 .Sh SYNOPSIS
 .Nm mandoc
 .Op Fl V
-.Op Fl f Ns Ar option...
+.Op Fl f Ns Ar option
 .Op Fl m Ns Ar format
-.Op Fl W Ns Ar err...
+.Op Fl O Ns Ar option
 .Op Fl T Ns Ar output
-.Op Ar infile...
-.\" SECTION
+.Op Fl W Ns Ar err
+.Op Ar file...
 .Sh DESCRIPTION
 The
 .Nm
-utility formats 
+utility formats
 .Ux
-manual pages for display.  The arguments are as follows:
-.Bl -tag -width XXXXXXXXXXXX
-.\" ITEM
-.It Fl f Ns Ar option...
-Override default compiler behaviour.  See 
+manual pages for display.
+The arguments are as follows:
+.Bl -tag -width Ds
+.It Fl f Ns Ar option
+Comma-separated compiler options.
+See
 .Sx Compiler Options
 for details.
-.\" ITEM
-.It Fl m
-Input format.  See
+.It Fl m Ns Ar format
+Input format.
+See
 .Sx Input Formats
-for available formats.  Defaults to
-.Fl m Ns Ar mdoc .
-.\" ITEM
-.It Fl T
-Output format.  See
+for available formats.
+Defaults to
+.Fl m Ns Cm andoc .
+.It Fl O Ns Ar option
+Comma-separated output options.
+.It Fl T Ns Ar output
+Output format.
+See
 .Sx Output Formats
-for available formats.  Defaults to
-.Fl T Ns Ar ascii .
-.\" ITEM
+for available formats.
+Defaults to
+.Fl T Ns Cm ascii .
 .It Fl V
 Print version and exit.
-.\" ITEM
-.It Fl W Ns Ar err...
-Print warning messages.  May be set to 
-.Fl W Ns Ar all
-for all warnings, 
-.Ar compat
-for groff/troff-compatibility warnings, or
-.Ar syntax
-for syntax warnings.  If
-.Fl W Ns Ar error 
-is specified, warnings are considered errors and cause utility
-termination.  Multiple 
+.It Fl W Ns Ar err
+Comma-separated warning options.
+Use
+.Fl W Ns Cm all
+to print warnings,
+.Fl W Ns Cm error
+for warnings to be considered errors and cause utility
+termination.
+Multiple
 .Fl W
 arguments may be comma-separated, such as
-.Fl W Ns Ar error,all .
-.\" ITEM
-.It Ar infile...
-Read input from zero or more
-.Ar infile .
-If unspecified, reads from stdin.  If multiple files are specified,
+.Fl W Ns Cm error , Ns Cm all .
+.It Ar file
+Read input from zero or more files.
+If unspecified, reads from stdin.
+If multiple files are specified,
 .Nm
 will halt with the first failed parse.
 .El
-.\" PARAGRAPH
 .Pp
-By default, 
-.Nm 
-reads 
+By default,
+.Nm
+reads
 .Xr mdoc 7
+or
+.Xr man 7
 text from stdin, implying
-.Fl m Ns Ar mdoc ,
-and prints 78-column backspace-encoded output to stdout as if
-.Fl T Ns Ar ascii
-were provided.
-.\" PARAGRAPH
+.Fl m Ns Cm andoc ,
+and produces
+.Fl T Ns Cm ascii
+output.
 .Pp
 .Ex -std mandoc
-.\" SUB-SECTION
-.Ss Reserved Words (mdoc only)
-The reserved words described in
-.Xr mdoc 7
-are handled according to the following rules:
-.Bl -enum -offset XXX
-.It
-Opening delimiters 
-.Po
-.Sq \&( , 
-.Sq \&[ , 
-and
-.Sq \&{
-.Pc are not followed by whitespace.
-.It
-Closing delimiters
-.Po
-.Sq \&. , 
-.Sq \&, , 
-.Sq \&; , 
-.Sq \&: , 
-.Sq \&? , 
-.Sq \&! , 
-.Sq \&) , 
-.Sq \&] 
-and
-.Sq \&}
-.Pc are not preceeded by whitespace.
-.El
-.\" PARAGRAPH
-.Pp
-Note that reserved words only register as such as if they appear as
-standalone tokens, either in parsed lines or streams of text.  Thus, the
-following fragment:
-.Bd -literal -offset XXXX
-this self is not that of the waking , empirically real man
-.Ed
-.\" PARAGRAPH
-.Pp
-\&...correctly adjusts the comma spacing to
-.Dq this self is not that of the waking , empirically real man .
-However, if the comma were part of 
-.Dq ,empirically ,
-it would not.
-.\" SUB-SECTION
 .Ss Input Formats
 The
 .Nm
@@ -150,111 +101,425 @@ utility accepts
 and
 .Xr man 7
 input with
-.Fl m Ns Ar mdoc
+.Fl m Ns Cm doc
 and
-.Fl m Ns Ar man ,
-respectively.  The
+.Fl m Ns Cm an ,
+respectively.
+The
 .Xr mdoc 7
 format is
 .Em strongly
-recommended; 
+recommended;
 .Xr man 7
 should only be used for legacy manuals.
 .Pp
-Note that the
-.Fl m Ns Ar man
-option is experimental and only works with
-.Fl T Ns Ar tree .
-.\" SUB-SECTION
+A third option,
+.Fl m Ns Cm andoc ,
+which is also the default, determines encoding on-the-fly: if the first
+non-comment macro is
+.Sq \&Dd
+or
+.Sq \&Dt ,
+the
+.Xr mdoc 7
+parser is used; otherwise, the
+.Xr man 7
+parser is used.
+.Pp
+If multiple
+files are specified with
+.Fl m Ns Cm andoc ,
+each has its file-type determined this way.
+If multiple files are
+specified and
+.Fl m Ns Cm doc
+or
+.Fl m Ns Cm an
+is specified, then this format is used exclusively.
+.Ss Compiler Options
+Default
+.Xr mdoc 7
+and
+.Xr man 7
+compilation behaviour may be overridden with the
+.Fl f
+flag.
+.Bl -tag -width Ds
+.It Fl f Ns Cm ign-errors
+When parsing multiple files, don't halt when one errors out.
+Useful with
+.Fl T Ns Cm lint
+over a large set of manuals passed on the command line.
+.It Fl f Ns Cm ign-escape
+Ignore invalid escape sequences.
+This is the default, but the option can be used to override an earlier
+.Fl f Ns Cm strict .
+.It Fl f Ns Cm ign-scope
+When rewinding the scope of a block macro, forces the compiler to ignore
+scope violations.
+This can seriously mangle the resulting tree.
+.Pq mdoc only
+.It Fl f Ns Cm no-ign-escape
+Do not ignore invalid escape sequences.
+.It Fl f Ns Cm no-ign-macro
+Do not ignore unknown macros at the start of input lines.
+.It Fl f Ns Cm strict
+Implies
+.Fl f Ns Cm no-ign-escape
+and
+.Fl f Ns Cm no-ign-macro .
+.El
 .Ss Output Formats
 The
 .Nm
 utility accepts the following
 .Fl T
-arguments:
-.Bl -tag -width XXXXXXXXXXXX -offset XXXX
-.It Ar ascii
+arguments, which correspond to output modes:
+.Bl -tag -width Ds
+.It Fl T Ns Cm ascii
 Produce 7-bit ASCII output, backspace-encoded for bold and underline
-styles.  This is the default.
-.It Ar tree
-Produce an indented parse tree.
-.It Ar lint
+styles.
+This is the default.
+See
+.Sx ASCII Output .
+.It Fl T Ns Cm html
+Produce strict HTML-4.01 output, with a sane default style.
+See
+.Sx HTML Output .
+.It Fl T Ns Cm lint
 Parse only: produce no output.
+Implies
+.Fl W Ns Cm all
+and
+.Fl f Ns Cm strict .
+.It Fl T Ns Cm pdf
+Produce PDF output.
+See
+.Sx PDF Output .
+.It Fl T Ns Cm ps
+Produce PostScript output.
+See
+.Sx PostScript Output .
+.It Fl T Ns Cm tree
+Produce an indented parse tree.
+.It Fl T Ns Cm xhtml
+Produce strict XHTML-1.0 output, with a sane default style.
+See
+.Sx XHTML Output .
 .El
-.\" SUB-SECTION
-.Ss Compiler Options
-Default compiler behaviour may be overriden with the
-.Fl f
-flag.
-.Bl -tag -width XXXXXXXXXXXX -offset XXXX
-.It Fl f Ns Ar ign-scope
-When rewinding the scope of a block macro, forces the compiler to ignore
-scope violations.  This can seriously mangle the resulting tree.
-.Pq mdoc only
-.It Fl f Ns Ar ign-escape
-Ignore invalid escape sequences.
-.It Fl f Ns Ar ign-macro
-Ignore unknown macros at the start of input lines.
+.Pp
+If multiple input files are specified, these will be processed by the
+corresponding filter in-order.
+.Ss ASCII Output
+Output produced by
+.Fl T Ns Cm ascii ,
+which is the default, is rendered in standard 7-bit ASCII documented in
+.Xr ascii 7 .
+.Pp
+Font styles are applied by using back-spaced encoding such that an
+underlined character
+.Sq c
+is rendered as
+.Sq _ Ns \e[bs] Ns c ,
+where
+.Sq \e[bs]
+is the back-space character number 8.
+Emboldened characters are rendered as
+.Sq c Ns \e[bs] Ns c .
+.Pp
+The special characters documented in
+.Xr mandoc_char 7
+are rendered best-effort in an ASCII equivalent.
+.Pp
+Output width is limited to 78 visible columns unless literal input lines
+exceed this limit.
+.Pp
+The following
+.Fl O
+arguments are accepted:
+.Bl -tag -width Ds
+.It Cm width Ns = Ns Ar width
+The output width is set to
+.Ar width ,
+which will normalise to \(>=60.
 .El
-.\" PARAGRAPH
+.Ss HTML Output
+Output produced by
+.Fl T Ns Cm html
+conforms to HTML-4.01 strict.
 .Pp
-As with the
-.Fl W
-flag, multiple
-.Fl f
-options may be grouped and delimited with a comma.  Using
-.Fl f Ns Ar ign-scope,ign-escape ,
-for example, will try to ignore scope and character-escape errors.
-.\" SECTION
-.Sh EXAMPLES
-To page this manual page on the terminal:
-.\" PARAGRAPH
+Font styles and page structure are applied using CSS2.
+By default, no font style is applied to any text,
+although CSS2 is hard-coded to format
+the basic structure of output.
 .Pp
-.D1 % mandoc \-Wall,error mandoc.1 2>&1 | less
-.\" SECTION
-.Sh SEE ALSO
-.Xr mdoc 7
-.\" 
-.Sh AUTHORS
 The
-.Nm
-utility was written by 
-.An Kristaps Dzonsons Aq kristaps@openbsd.org .
-.\" SECTION
-.Sh CAVEATS
-The 
-.Nm
-utility in
-.Fl T Ns Ar ascii
-mode doesn't yet know how to display the following:
+.Pa example.style.css
+file documents the range of styles applied to output and, if used, will
+cause rendered documents to appear as they do in
+.Fl T Ns Cm ascii .
 .Pp
-.Bl -bullet -compact
-.It
-The \-hang 
-.Sq \&Bl
-list is not yet supported.
+Special characters are rendered in decimal-encoded UTF-8.
+.Pp
+The following
+.Fl O
+arguments are accepted:
+.Bl -tag -width Ds
+.It Cm includes Ns = Ns Ar fmt
+The string
+.Ar fmt ,
+for example,
+.Ar ../src/%I.html ,
+is used as a template for linked header files (usually via the
+.Sq \&In
+macro).
+Instances of
+.Sq \&%I
+are replaced with the include filename.
+The default is not to present a
+hyperlink.
+.It Cm man Ns = Ns Ar fmt
+The string
+.Ar fmt ,
+for example,
+.Ar ../html%S/%N.%S.html ,
+is used as a template for linked manuals (usually via the
+.Sq \&Xr
+macro).
+Instances of
+.Sq \&%N
+and
+.Sq %S
+are replaced with the linked manual's name and section, respectively.
+If no section is included, section 1 is assumed.
+The default is not to
+present a hyperlink.
+.It Cm style Ns = Ns Ar style.css
+The file
+.Ar style.css
+is used for an external style-sheet.
+This must be a valid absolute or
+relative URI.
+.El
+.Ss PostScript Output
+PostScript
+.Qq Adobe-3.0
+Level-2 pages may be generated by
+.Fl T Ns Cm ps .
+Output pages default to letter sized and are rendered in the Times font
+family, 11-point.
+Margins are calculated as 1/9 the page length and width.
+Line-height is 1.4m.
+.Pp
+Special characters are rendered as in
+.Sx ASCII Output .
+.Pp
+The following
+.Fl O
+arguments are accepted:
+.Bl -tag -width Ds
+.It Cm paper Ns = Ns Ar name
+The paper size
+.Ar name
+may be one of
+.Ar a3 ,
+.Ar a4 ,
+.Ar a5 ,
+.Ar legal ,
+or
+.Ar letter .
+You may also manually specify dimensions as
+.Ar NNxNN ,
+width by height in millimetres.
+If an unknown value is encountered,
+.Ar letter
+is used.
 .El
+.Ss PDF Output
+PDF-1.1 output may be generated by
+.Fl T Ns Cm pdf .
+See
+.Sx PostScript Output
+for
+.Fl O
+arguments and defaults.
+.Ss XHTML Output
+Output produced by
+.Fl T Ns Cm xhtml
+conforms to XHTML-1.0 strict.
+.Pp
+See
+.Sx HTML Output
+for details; beyond generating XHTML tags instead of HTML tags, these
+output modes are identical.
+.Sh EXAMPLES
+To page manuals to the terminal:
+.Pp
+.D1 $ mandoc \-Wall,error \-fstrict mandoc.1 2\*(Gt&1 | less
+.D1 $ mandoc mandoc.1 mdoc.3 mdoc.7 | less
+.Pp
+To produce HTML manuals with
+.Ar style.css
+as the style-sheet:
+.Pp
+.D1 $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html
+.Pp
+To check over a large set of manuals:
 .Pp
-Other macros still aren't supported by virtue of nobody complaining
-about their absence.  Please report any omissions: this is a work in
-progress.
+.Dl $ mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]`
 .Pp
-The following list documents differences between traditional
-.Xr nroff 1
-output and
-.Nm :
+To produce a series of PostScript manuals for A4 paper:
 .Pp
+.D1 $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
+.Sh COMPATIBILITY
+This section summarises
+.Nm
+compatibility with
+.Xr groff 1 .
+Each input and output format is separately noted.
+.Ss ASCII Compatibility
 .Bl -bullet -compact
-.It 
-A list of display following
+.It
+The
+.Sq \e~
+special character doesn't produce expected behaviour in
+.Fl T Ns Cm ascii .
+.It
+The
+.Sq \&Bd \-literal
+and
+.Sq \&Bd \-unfilled
+macros of
+.Xr mdoc 7
+in
+.Fl T Ns Cm ascii
+are synonyms, as are \-filled and \-ragged.
+.It
+In
+.Xr groff 1 ,
+the
+.Sq \&Pa
+.Xr mdoc 7
+macro does not underline when scoped under an
+.Sq \&It
+in the FILES section.
+This behaves correctly in
+.Nm .
+.It
+A list or display following the
 .Sq \&Ss
+.Xr mdoc 7
+macro in
+.Fl T Ns Cm ascii
 does not assert a prior vertical break, just as it doesn't with
 .Sq \&Sh .
 .It
-Special characters don't follow the current font style.
-.\" LIST-ITEM
+The
+.Sq \&na
+.Xr man 7
+macro in
+.Fl T Ns Cm ascii
+has no effect.
+.It
+Words aren't hyphenated.
+.It
+In normal mode (not a literal block), blocks of spaces aren't preserved,
+so double spaces following sentence closure are reduced to a single space;
+.Xr groff 1
+retains spaces.
+.It
+Sentences are unilaterally monospaced.
+.El
+.Ss HTML/XHTML Compatibility
+.Bl -bullet -compact
+.It
+The
+.Sq \efP
+escape will revert the font to the previous
+.Sq \ef
+escape, not to the last rendered decoration, which is now dictated by
+CSS instead of hard-coded.
+It also will not span past the current scope,
+for the same reason.
+Note that in
+.Sx ASCII Output
+mode, this will work fine.
+.It
+The
+.Xr mdoc 7
+.Sq \&Bl \-hang
+and
+.Sq \&Bl \-tag
+list types render similarly (no break following overreached left-hand
+side) due to the expressive constraints of HTML.
 .It
-The \-literal and \-unfilled 
-.Sq \&Bd
-displays types are synonyms, as are \-filled and \-ragged.
+The
+.Xr man 7
+.Sq IP
+and
+.Sq TP
+lists render similarly.
 .El
+.Sh SEE ALSO
+.Xr man 7 ,
+.Xr mandoc_char 7 ,
+.Xr mdoc 7
+.Sh AUTHORS
+The
+.Nm
+utility was written by
+.An Kristaps Dzonsons Aq kristaps@bsd.lv .
+.Sh CAVEATS
+The
+.Fl T Ns Cm html
+and
+.Fl T Ns Cm xhtml
+CSS2 styling used for
+.Fl m Ns Cm doc
+input lists does not render properly in older browsers, such as Internet
+Explorer 6 and earlier.
+.Pp
+In
+.Fl T Ns Cm html
+and
+.Fl T Ns Cm xhtml ,
+the maximum size of an element attribute is determined by
+.Dv BUFSIZ ,
+which is usually 1024 bytes.
+Be aware of this when setting long link
+formats such as
+.Fl O Ns Cm style Ns = Ns Ar really/long/link .
+.Pp
+The
+.Fl T Ns Cm html
+and
+.Fl T Ns Cm xhtml
+output modes don't render the
+.Sq \es
+font size escape documented in
+.Xr mdoc 7
+and
+.Xr man 7 .
+.Pp
+Nesting elements within next-line element scopes of
+.Fl m Ns Cm an ,
+such as
+.Sq br
+within an empty
+.Sq B ,
+will confuse
+.Fl T Ns Cm html
+and
+.Fl T Ns Cm xhtml
+and cause them to forget the formatting of the prior next-line scope.
+.Pp
+The
+.Sq i
+macro in
+.Fl m Ns Cm an
+should italicise all subsequent text if a line argument is not provided.
+This behaviour is not implemented.
+The
+.Sq \(aq
+control character is an alias for the standard macro control character
+and does not emit a line-break as stipulated in GNU troff.