version 1.6, 2009/03/22 19:08:53 |
version 1.73, 2010/07/25 11:44:31 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" 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 |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" purpose with or without fee is hereby granted, provided that the |
.\" purpose with or without fee is hereby granted, provided that the above |
.\" above copyright notice and this permission notice appear in all |
.\" copyright notice and this permission notice appear in all copies. |
.\" copies. |
|
.\" |
.\" |
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
.\" WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
.\" AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
.\" PERFORMANCE OF THIS SOFTWARE. |
|
.\" |
.\" |
.Dd $Mdocdate$ |
.Dd $Mdocdate$ |
.Dt mandoc 1 |
.Dt MANDOC 1 |
.Os |
.Os |
.\" SECTION |
|
.Sh NAME |
.Sh NAME |
.Nm mandoc |
.Nm mandoc |
.Nd format and display BSD manuals |
.Nd format and display UNIX manuals |
.\" SECTION |
|
.Sh SYNOPSIS |
.Sh SYNOPSIS |
.Nm mandoc |
.Nm mandoc |
.Op Fl V |
.Op Fl V |
.Op Fl f Ns Ar option... |
.Op Fl f Ns Ar option |
.Op Fl W Ns Ar err... |
.Op Fl m Ns Ar format |
|
.Op Fl O Ns Ar option |
.Op Fl T Ns Ar output |
.Op Fl T Ns Ar output |
.Op Ar infile... |
.Op Fl W Ns Ar err |
.\" SECTION |
.Op Ar file... |
.Sh DESCRIPTION |
.Sh DESCRIPTION |
The |
The |
.Nm |
.Nm |
utility formats a BSD |
utility formats |
.Dq mdoc |
.Ux |
manual page for display. The arguments are as follows: |
manual pages for display. |
.Bl -tag -width XXXXXXXXXXXX |
The arguments are as follows: |
.\" ITEM |
.Bl -tag -width Ds |
.It Fl f Ns Ar option... |
.It Fl f Ns Ar option |
Override default compiler behaviour. See |
Comma-separated compiler options. |
|
See |
.Sx Compiler Options |
.Sx Compiler Options |
for details. |
for details. |
.\" ITEM |
.It Fl m Ns Ar format |
.It Fl T |
Input format. |
Output format. See |
See |
|
.Sx Input Formats |
|
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 |
.Sx Output Formats |
for available formats. Defaults to |
for available formats. |
.Fl T Ns Ar ascii . |
Defaults to |
.\" ITEM |
.Fl T Ns Cm ascii . |
.It Fl V |
.It Fl V |
Print version and exit. |
Print version and exit. |
.\" ITEM |
.It Fl W Ns Ar err |
.It Fl W Ns Ar err... |
Comma-separated warning options. |
Print warning messages. May be set to |
Use |
.Fl W Ns Ar all |
.Fl W Ns Cm all |
for all warnings, |
to print warnings, |
.Ar compat |
.Fl W Ns Cm error |
for groff/troff-compatibility warnings, or |
for warnings to be considered errors and cause utility |
.Ar syntax |
termination. |
for syntax warnings. If |
Multiple |
.Fl W Ns Ar error |
|
is specified, warnings are considered errors and cause utility |
|
termination. Multiple |
|
.Fl W |
.Fl W |
arguments may be comma-separated, such as |
arguments may be comma-separated, such as |
.Fl W Ns Ar error,all . |
.Fl W Ns Cm error , Ns Cm all . |
.\" ITEM |
.It Ar file |
.It Ar infile... |
Read input from zero or more files. |
Read input from zero or more |
If unspecified, reads from stdin. |
.Ar infile . |
If multiple files are specified, |
If unspecified, reads from stdin. If multiple files are specified, |
|
.Nm |
.Nm |
will halt with the first failed parse. |
will halt with the first failed parse. |
.El |
.El |
.\" PARAGRAPH |
|
.Pp |
.Pp |
By default, |
By default, |
.Nm |
.Nm |
reads from stdin and prints 78-column backspace-encoded output to stdout |
reads |
as if |
.Xr mdoc 7 |
.Fl T Ns Ar ascii |
or |
were provided. |
.Xr man 7 |
.\" PARAGRAPH |
text from stdin, implying |
|
.Fl m Ns Cm andoc , |
|
and produces |
|
.Fl T Ns Cm ascii |
|
output. |
.Pp |
.Pp |
.Ex -std mandoc |
.Ex -std mandoc |
.\" SUB-SECTION |
.Ss Input Formats |
.Ss Reserved Words |
The |
The reserved words described in |
.Nm |
|
utility accepts |
.Xr mdoc 7 |
.Xr mdoc 7 |
are handled according to the following rules: |
|
.Bl -enum -offset XXX |
|
.It |
|
Opening delimiters |
|
.Po |
|
.Sq \&( , |
|
.Sq \&[ , |
|
and |
and |
.Sq \&{ |
.Xr man 7 |
.Pc are not followed by whitespace. |
input with |
.It |
.Fl m Ns Cm doc |
Closing delimiters |
|
.Po |
|
.Sq \&. , |
|
.Sq \&, , |
|
.Sq \&; , |
|
.Sq \&: , |
|
.Sq \&? , |
|
.Sq \&! , |
|
.Sq \&) , |
|
.Sq \&] |
|
and |
and |
.Sq \&} |
.Fl m Ns Cm an , |
.Pc are not preceeded by whitespace. |
respectively. |
.El |
The |
.\" PARAGRAPH |
.Xr mdoc 7 |
|
format is |
|
.Em strongly |
|
recommended; |
|
.Xr man 7 |
|
should only be used for legacy manuals. |
.Pp |
.Pp |
Note that reserved words may occur in streams of text, so the following: |
A third option, |
.Bd -literal -offset XXXX |
.Fl m Ns Cm andoc , |
this self is not that of the waking , empirically real man |
which is also the default, determines encoding on-the-fly: if the first |
.Ed |
non-comment macro is |
.\" PARAGRAPH |
.Sq \&Dd |
|
or |
|
.Sq \&Dt , |
|
the |
|
.Xr mdoc 7 |
|
parser is used; otherwise, the |
|
.Xr man 7 |
|
parser is used. |
.Pp |
.Pp |
\&...correctly adjusts the comma spacing to |
If multiple |
.Qq this self is not that of the waking , empirically real man . |
files are specified with |
.\" SUB-SECTION |
.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 |
.Ss Output Formats |
The |
The |
.Nm |
.Nm |
utility accepts the following |
utility accepts the following |
.Fl T |
.Fl T |
arguments: |
arguments, which correspond to output modes: |
.Bl -tag -width XXXXXXXXXXXX -offset XXXX |
.Bl -tag -width Ds |
.It Ar ascii |
.It Fl T Ns Cm ascii |
Produce 7-bit ASCII output, backspace-encoded for bold and underline |
Produce 7-bit ASCII output, backspace-encoded for bold and underline |
styles. This is the default. |
styles. |
.It Ar tree |
This is the default. |
Produce an indented parse tree. |
See |
.It Ar lint |
.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. |
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 |
.El |
.\" SUB-SECTION |
.Pp |
.Ss Compiler Options |
If multiple input files are specified, these will be processed by the |
Default compiler behaviour may be overriden with the |
corresponding filter in-order. |
.Fl f |
.Ss ASCII Output |
flag. |
Output produced by |
.Bl -tag -width XXXXXXXXXXXX -offset XXXX |
.Fl T Ns Cm ascii , |
.It Fl f Ns Ar ign-scope |
which is the default, is rendered in standard 7-bit ASCII documented in |
When rewinding the scope of a block macro, forces the compiler to ignore |
.Xr ascii 7 . |
scope violations. This can seriously mangle the resulting tree. |
.Pp |
.It Fl f Ns Ar ign-escape |
Font styles are applied by using back-spaced encoding such that an |
Ignore invalid escape sequences. |
underlined character |
.It Fl f Ns Ar ign-macro |
.Sq c |
Ignore unknown macros at the start of input lines. |
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 |
.El |
.\" PARAGRAPH |
.Ss HTML Output |
|
Output produced by |
|
.Fl T Ns Cm html |
|
conforms to HTML-4.01 strict. |
.Pp |
.Pp |
As with the |
Font styles and page structure are applied using CSS2. |
.Fl W |
By default, no font style is applied to any text, |
flag, multiple |
although CSS2 is hard-coded to format |
.Fl f |
the basic structure of output. |
options may be grouped and delimited with a comma. Using |
.Pp |
.Fl f Ns Ar ign-scope,ign-escape , |
The |
for example, will try to ignore scope and character-escape errors. |
.Pa example.style.css |
.\" SECTION |
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. |
|
.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 |
.Sh EXAMPLES |
To page this manual page on the terminal: |
To page manuals to the terminal: |
.\" PARAGRAPH |
|
.Pp |
.Pp |
.D1 % mandoc \-Wall,error mandoc.1 2>&1 | less |
.D1 $ mandoc \-Wall,error \-fstrict mandoc.1 2\*(Gt&1 | less |
.\" SECTION |
.D1 $ mandoc mandoc.1 mdoc.3 mdoc.7 | less |
.Sh SEE ALSO |
.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]` |
|
.Pp |
|
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 |
|
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 |
.Xr mdoc 7 |
.\" |
in |
.Sh AUTHORS |
.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 |
The |
.Nm |
.Sq \&na |
utility was written by |
.Xr man 7 |
.An Kristaps Dzonsons Aq kristaps@openbsd.org . |
macro in |
.\" SECTION |
.Fl T Ns Cm ascii |
.Sh CAVEATS |
has no effect. |
The |
.It |
.Nm |
Words aren't hyphenated. |
utility in |
.It |
.Fl T Ns Ar ascii |
In normal mode (not a literal block), blocks of spaces aren't preserved, |
mode doesn't yet know how to display the following: |
so double spaces following sentence closure are reduced to a single space; |
.Pp |
.Xr groff 1 |
|
retains spaces. |
|
.It |
|
Sentences are unilaterally monospaced. |
|
.El |
|
.Ss HTML/XHTML Compatibility |
.Bl -bullet -compact |
.Bl -bullet -compact |
.It |
.It |
The \-hang |
The |
.Sq \&Bl |
.Sq \efP |
list is not yet supported. |
escape will revert the font to the previous |
.\" LIST-ITEM |
.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 |
.It |
The \-literal and \-unfilled |
The |
.Sq \&Bd |
.Xr mdoc 7 |
displays types are synonyms, as are \-filled and \-ragged. |
.Sq \&Bl \-hang |
.\" LIST-ITEM |
and |
|
.Sq \&Bl \-tag |
|
list types render similarly (no break following overreached left-hand |
|
side) due to the expressive constraints of HTML. |
.It |
.It |
The |
The |
.Sq \&Bd |
.Xr man 7 |
macro doesn't process \-compact . |
.Sq IP |
|
and |
|
.Sq TP |
|
lists render similarly. |
.El |
.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 |
.Pp |
Other macros still aren't supported by virtue of nobody complaining |
In |
about their absence. Please report any omissions: this is a work in |
.Fl T Ns Cm html |
progress. |
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. |