-.\" $Id: mandoc.1,v 1.26 2009/07/20 13:45:11 kristaps Exp $
+.\" $Id: mandoc.1,v 1.38 2009/09/21 13:44:56 kristaps Exp $
.\"
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
.\"
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: July 20 2009 $
+.Dd $Mdocdate: September 21 2009 $
.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 m Ns Ar format
-.Op Fl W Ns Ar err...
+.Op Fl o Ns Ar option...
.Op Fl T Ns Ar output
+.Op Fl V
+.Op Fl W Ns Ar err...
.Op Ar infile...
-.\" SECTION
+.
+.
.Sh DESCRIPTION
The
.Nm
utility formats
.Ux
manual pages for display. The arguments are as follows:
+.
.Bl -tag -width Ds
-.\" ITEM
.It Fl f Ns Ar option...
-Override default compiler behaviour. See
+Comma-separated compiler options. See
.Sx Compiler Options
for details.
-.\" ITEM
+.
.It Fl m Ns Ar format
Input format. See
.Sx Input Formats
for available formats. Defaults to
.Fl m Ns Ar andoc .
-.\" ITEM
+.
+.It Fl o Ns Ar format
+Comma-separated output options. See
+.Sx Output Options
+for details.
+.
.It Fl T Ns Ar output
Output format. See
.Sx Output Formats
for available formats. Defaults to
.Fl T Ns Ar ascii .
-.\" ITEM
+.
.It Fl V
Print version and exit.
-.\" ITEM
+.
.It Fl W Ns Ar err...
-Configure warning messages. Use
+Comma-separated warning options. Use
.Fl W Ns Ar all
to print warnings,
.Fl W Ns Ar error
.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 .
.Nm
will halt with the first failed parse.
.El
-.\" PARAGRAPH
+.
.Pp
By default,
.Nm
and prints 78-column backspace-encoded output to stdout as if
.Fl T Ns Ar ascii
were provided.
-.\" PARAGRAPH
+.
.Pp
.Ex -std mandoc
-.\" SUB-SECTION
+.
+.
.Ss Punctuation and Spacing
If punctuation is set apart from words, such as in the phrase
.Dq to be \&, or not to be ,
.Sq \&}
.Pc
is not preceded by whitespace.
+.
.Pp
If the input is
.Xr mdoc 7 ,
these rules are also applied to macro arguments when appropriate.
+.
.Pp
White-space, in non-literal (normal) mode, is stripped from input and
-replaced on output by a single space. Thus, if you wish to preserve
-multiple spaces, they must be space-escaped
-.Sq \e\
-or used in a literal display mode, e.g.,
-.Sq \&.Bd \-literal
+replaced on output by a single space. Thus, if you wish to preserve multiple
+spaces, they must be space-escaped or used in a literal display mode, e.g.,
+.Sq \&Bd \-literal
in
.Xr mdoc 7 .
-.\" SUB-SECTION
+.
+.
.Ss Input Formats
The
.Nm
recommended;
.Xr man 7
should only be used for legacy manuals.
+.
.Pp
A third option,
.Fl m Ns Ar andoc ,
which is also the default, determines encoding on-the-fly: if the first
non-comment macro is
-.Sq \&.Dd
+.Sq \&Dd
or
-.Sq \&.Dt ,
+.Sq \&Dt ,
the
.Xr mdoc 7
parser is used; otherwise, the
.Xr man 7
parser is used.
+.
.Pp
If multiple
files are specified with
or
.Fl m Ns Ar an
is specified, then this format is used exclusively.
-.\" .Pp
-.\" The following escape sequences are recognised, although the per-format
-.\" compiler may not allow certain sequences.
-.\" .Bl -tag -width Ds -offset XXXX
-.\" .It \efX
-.\" sets the font mode to X (B, I, R or P, where P resets the font)
-.\" .It \eX, \e(XX, \e[XN]
-.\" queries the special-character table for a corresponding symbol
-.\" .It \e*X, \e*(XX, \e*[XN]
-.\" deprecated special-character format
-.\" .El
-.\" SUB-SECTION
+.
+.
.Ss Output Formats
The
.Nm
utility accepts the following
.Fl T
arguments:
+.
.Bl -tag -width Ds
.It Fl T Ns Ar ascii
Produce 7-bit ASCII output, backspace-encoded for bold and underline
styles. This is the default.
+.
+.It Fl T Ns Ar html
+Produce strict HTML-4.01 output, with a sane default style.
+.
.It Fl T Ns Ar tree
Produce an indented parse tree.
+.
.It Fl T Ns Ar lint
Parse only: produce no output.
.El
+.
.Pp
If multiple input files are specified, these will be processed by the
corresponding filter in-order.
-.\" SUB-SECTION
+.
+.
.Ss Compiler Options
-Default compiler behaviour may be overriden with the
+Default compiler behaviour may be overridden with the
.Fl f
flag.
+.
.Bl -tag -width Ds
.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 no-ign-escape
Don't ignore invalid escape sequences.
+.
.It Fl f Ns Ar no-ign-macro
Do not ignore unknown macros at the start of input lines.
+.
.It Fl f Ns Ar no-ign-chars
Do not ignore disallowed characters.
+.
.It Fl f Ns Ar strict
Implies
.Fl f Ns Ar no-ign-escape ,
.Fl f Ns Ar no-ign-macro
and
.Fl f Ns Ar no-ign-chars .
+.
+.It Fl f Ns Ar ign-errors
+Don't halt when encountering parse errors. Useful with
+.Fl T Ns Ar lint
+over a large set of manuals passed on the command line.
.El
-.\" PARAGRAPH
-.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,no-ign-escape ,
-for example, will try to ignore scope and not ignore character-escape
-errors.
-.\" SECTION
+.
+.Ss Output Options
+For the time being, only
+.Fl T Ns Ar html
+is the only mode with output options:
+.Bl -tag -width Ds
+.It Fl o Ns Ar style=style.css
+The file
+.Ar style.css
+is used for an external style-sheet. This must be a valid absolute or
+relative URI.
+.It Fl o Ns Ar base=http://base/
+The URL
+.Ar http://base/
+is used as a base URL for all relative links. This is useful when
+linking between documents via the
+.Sq \&Xr
+macro.
+.El
+.
.Sh EXAMPLES
To page manuals to the terminal:
-.\" PARAGRAPH
+.
.Pp
.D1 % mandoc \-Wall,error \-fstrict mandoc.1 2>&1 | less
.D1 % mandoc mandoc.1 mdoc.3 mdoc.7 | less
-.\" SECTION
+.
+.Pp
+To produce HTML manuals with
+.Pa http://localhost/
+as the base URI:
+.Pp
+.D1 % mandoc \-Thtml -obase=http://localhost/ mdoc.7 > mdoc.7.html
+.Pp
+To check over a large set of manuals:
+.
+.Pp
+.Dl % mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]`
+.
+.
.Sh COMPATIBILITY
This section summarises
.Nm
compatibility with
.Xr groff 1 .
-.Pp
+Each input and output format is separately noted.
+.
+.
+.Ss ASCII output
.Bl -bullet -compact
.It
+The
+.Sq \e~
+special character doesn't produce expected behaviour in
+.Fl T Ns Ar ascii .
+.
+.It
+The
+.Sq \&Bd \-literal
+and
+.Sq \&Bd \-unfilled
+macros of
+.Xr mdoc 7
+in
+.Fl T Ns Ar 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
-.Sq \&.Ss
+.Sq \&Ss
+.Xr mdoc 7
+macro in
+.Fl T Ns Ar ascii
does not assert a prior vertical break, just as it doesn't with
-.Sq \&.Sh .
+.Sq \&Sh .
+.
.It
-The \-literal and \-unfilled
-.Sq \&.Bd
-displays types are synonyms, as are \-filled and \-ragged.
+The
+.Sq \&na
+.Xr man 7
+macro in
+.Fl T Ns Ar 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
-.Pq Dq French spacing .
+so double spaces following sentence closure are reduced to a single space;
+.Xr groff 1
+retains spaces.
+.
+.It
+Sentences are unilaterally monospaced.
.El
.\" SECTION
.Sh SEE ALSO