530 lines
11 KiB
Groff
530 lines
11 KiB
Groff
.\" $Id: mandoc.1,v 1.63 2010/06/11 07:15:42 kristaps Exp $
|
|
.\"
|
|
.\" Copyright (c) 2009 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.
|
|
.\"
|
|
.\" 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: June 11 2010 $
|
|
.Dt MANDOC 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm mandoc
|
|
.Nd format and display UNIX manuals
|
|
.Sh SYNOPSIS
|
|
.Nm mandoc
|
|
.Op Fl V
|
|
.Op Fl f Ns Ar option
|
|
.Op Fl m Ns Ar format
|
|
.Op Fl O Ns Ar option
|
|
.Op Fl T Ns Ar output
|
|
.Op Fl W Ns Ar err
|
|
.Op Ar file...
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
utility formats
|
|
.Ux
|
|
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.
|
|
.It Fl m Ns Ar format
|
|
Input format.
|
|
See
|
|
.Sx Input Formats
|
|
for available formats.
|
|
Defaults to
|
|
.Fl m Ns Cm andoc .
|
|
.It Fl O Ns Ar option
|
|
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 Cm ascii .
|
|
.It Fl V
|
|
Print version and exit.
|
|
.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 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
|
|
.Pp
|
|
By default,
|
|
.Nm
|
|
reads
|
|
.Xr mdoc 7
|
|
or
|
|
.Xr man 7
|
|
text from stdin, implying
|
|
.Fl m Ns Cm andoc ,
|
|
and produces
|
|
.Fl T Ns Cm ascii
|
|
output.
|
|
.Pp
|
|
.Ex -std mandoc
|
|
.Ss Input Formats
|
|
The
|
|
.Nm
|
|
utility accepts
|
|
.Xr mdoc 7
|
|
and
|
|
.Xr man 7
|
|
input with
|
|
.Fl m Ns Cm doc
|
|
and
|
|
.Fl m Ns Cm an ,
|
|
respectively.
|
|
The
|
|
.Xr mdoc 7
|
|
format is
|
|
.Em strongly
|
|
recommended;
|
|
.Xr man 7
|
|
should only be used for legacy manuals.
|
|
.Pp
|
|
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 Output Formats
|
|
The
|
|
.Nm
|
|
utility accepts the following
|
|
.Fl T
|
|
arguments (see
|
|
.Sx OUTPUT ) :
|
|
.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.
|
|
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 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
|
|
.Pp
|
|
If multiple input files are specified, these will be processed by the
|
|
corresponding filter in-order.
|
|
.Ss Compiler Options
|
|
Default compiler 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 Options
|
|
The
|
|
.Fl T Ns Ar html
|
|
and
|
|
.Fl T Ns Ar xhtml
|
|
modes accept the following output options:
|
|
.Bl -tag -width Ds
|
|
.It Fl O Ns 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 Fl O Ns 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 Fl O Ns 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
|
|
.Pp
|
|
The
|
|
.Fl T Ns Ar ascii
|
|
mode accepts the following output option:
|
|
.Bl -tag -width Ds
|
|
.It Fl O Ns Cm width Ns = Ns Ar width
|
|
The output width is set to
|
|
.Ar width ,
|
|
which will normalise to \(>=60.
|
|
.El
|
|
.Sh OUTPUT
|
|
This section documents output details of
|
|
.Nm .
|
|
In general, output conforms to the traditional manual style of a header,
|
|
a body composed of sections and sub-sections, and a footer.
|
|
.Pp
|
|
The text style of output characters (non-macro characters, punctuation,
|
|
and white-space) is dictated by context.
|
|
.Pp
|
|
White-space is generally stripped from input.
|
|
This can be changed with
|
|
character escapes (specified in
|
|
.Xr mandoc_char 7 )
|
|
or literal modes (specified in
|
|
.Xr mdoc 7
|
|
and
|
|
.Xr man 7 ) .
|
|
.Pp
|
|
If non-macro punctuation is set apart from words, such as in the phrase
|
|
.Dq to be \&, or not to be ,
|
|
it's processed by
|
|
.Nm ,
|
|
regardless of output format, according to the following rules: opening
|
|
punctuation
|
|
.Po
|
|
.Sq \&( ,
|
|
.Sq \&[ ,
|
|
and
|
|
.Sq \&{
|
|
.Pc
|
|
is not followed by a space; closing punctuation
|
|
.Po
|
|
.Sq \&. ,
|
|
.Sq \&, ,
|
|
.Sq \&; ,
|
|
.Sq \&: ,
|
|
.Sq \&? ,
|
|
.Sq \&! ,
|
|
.Sq \&) ,
|
|
.Sq \&]
|
|
and
|
|
.Sq \&}
|
|
.Pc
|
|
is not preceded by white-space.
|
|
.Pp
|
|
If the input is
|
|
.Xr mdoc 7 ,
|
|
however, these rules are also applied to macro arguments when appropriate.
|
|
.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.
|
|
.Ss HTML Output
|
|
Output produced by
|
|
.Fl T Ns Cm html
|
|
conforms to HTML-4.01 strict.
|
|
.Pp
|
|
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
|
|
The
|
|
.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
|
|
Special characters are rendered in decimal-encoded UTF-8.
|
|
.Ss PostScript Output
|
|
PostScript Level 2 pages may be generated by
|
|
.Fl T Ns Cm ps .
|
|
Output pages are US-letter sized (215.9 x 279.4 mm) and rendered in
|
|
fixed, 10-point Courier font.
|
|
.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
|
|
.Dl $ mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]`
|
|
.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
|
|
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
|
|
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
|
|
.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.
|