version 1.211, 2017/07/02 15:31:59 |
version 1.223, 2018/04/13 19:55:30 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org> |
.\" Copyright (c) 2012, 2014-2018 Ingo Schwarze <schwarze@openbsd.org> |
.\" |
.\" |
.\" 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 above |
.\" purpose with or without fee is hereby granted, provided that the above |
|
|
all input files are interpreted as |
all input files are interpreted as |
.Xr man 7 . |
.Xr man 7 . |
By default, the input language is automatically detected for each file: |
By default, the input language is automatically detected for each file: |
if the the first macro is |
if the first macro is |
.Ic \&Dd |
.Ic \&Dd |
or |
or |
.Ic \&Dt , |
.Ic \&Dt , |
|
|
.It Fl T Cm lint |
.It Fl T Cm lint |
Parse only: produce no output. |
Parse only: produce no output. |
Implies |
Implies |
.Fl W Cm all . |
.Fl W Cm all |
|
and redirects parser messages, which usually appear |
|
on standard error output, to standard output. |
.It Fl T Cm locale |
.It Fl T Cm locale |
Encode output using the current locale. |
Encode output using the current locale. |
This is the default. |
This is the default. |
Line 297 The special characters documented in |
|
Line 299 The special characters documented in |
|
.Xr mandoc_char 7 |
.Xr mandoc_char 7 |
are rendered best-effort in an ASCII equivalent. |
are rendered best-effort in an ASCII equivalent. |
.Pp |
.Pp |
Output width is limited to 78 visible columns unless literal input lines |
|
exceed this limit. |
|
.Pp |
|
The following |
The following |
.Fl O |
.Fl O |
arguments are accepted: |
arguments are accepted: |
|
|
.Xr man 7 . |
.Xr man 7 . |
Increasing this is not recommended; it may result in degraded formatting, |
Increasing this is not recommended; it may result in degraded formatting, |
for example overfull lines or ugly line breaks. |
for example overfull lines or ugly line breaks. |
|
When output is to a pager on a terminal that is less than 66 columns |
|
wide, the default is reduced to three columns. |
|
.It Cm mdoc |
|
Format |
|
.Xr man 7 |
|
input files in |
|
.Xr mdoc 7 |
|
output style. |
|
Specifically, this suppresses the two additional blank lines near the |
|
top and the bottom of each page, and it implies |
|
.Fl O Cm indent Ns =5 . |
|
One useful application is for checking that |
|
.Fl T Cm man |
|
output formats in the same way as the |
|
.Xr mdoc 7 |
|
source it was generated from. |
.It Cm width Ns = Ns Ar width |
.It Cm width Ns = Ns Ar width |
The output width is set to |
The output width is set to |
.Ar width . |
.Ar width |
|
instead of the default of 78. |
|
When output is to a pager on a terminal that is less than 79 columns |
|
wide, the default is reduced to one less than the terminal width. |
|
In any case, lines that are output in literal mode are never wrapped |
|
and may exceed the output width. |
.El |
.El |
.Ss HTML Output |
.Ss HTML Output |
Output produced by |
Output produced by |
Line 719 so using GNU troff instead of |
|
Line 739 so using GNU troff instead of |
|
.Nm |
.Nm |
to process the file may be preferable. |
to process the file may be preferable. |
.It Cm error |
.It Cm error |
An input file contains invalid syntax that cannot be safely interpreted. |
Indicates a risk of information loss or severe misformatting, |
By discarding part of the input or inserting missing tokens, |
in most cases caused by serious syntax errors. |
the parser is able to continue, and the error does not prevent |
|
generation of formatted output, but typically, preparing that |
|
output involves information loss, broken document structure |
|
or unintended formatting, no matter whether |
|
.Nm |
|
or GNU troff is used. |
|
In many cases, the output of |
|
.Nm |
|
and GNU troff is identical, but in some, |
|
.Nm |
|
is more resilient than GNU troff with respect to malformed input. |
|
.Pp |
|
Non-existent or unreadable input files are also reported on the |
|
.Cm error |
|
level. |
|
In that case, the parser cannot even be started and no output |
|
is produced from those input files. |
|
.It Cm warning |
.It Cm warning |
An input file uses obsolete, discouraged or non-portable syntax. |
Indicates a risk that the information shown or its formatting |
All the same, the meaning of the input is unambiguous and a correct |
may mismatch the author's intent in minor ways. |
rendering can be produced. |
Additionally, syntax errors are classified at least as warnings, |
Documents causing warnings may render poorly when using other |
even if they do not usually cause misformatting. |
formatting tools instead of |
|
.Nm . |
|
.It Cm style |
.It Cm style |
An input file uses dubious or discouraged style. |
An input file uses dubious or discouraged style. |
This is not a complaint about the syntax, and probably neither |
This is not a complaint about the syntax, and probably neither |
Line 758 Please use your good judgement to decide whether any p |
|
Line 759 Please use your good judgement to decide whether any p |
|
.Cm style |
.Cm style |
suggestion really justifies a change to the input file. |
suggestion really justifies a change to the input file. |
.It Cm base |
.It Cm base |
A convertion used in the base system of a specific operating system |
A convention used in the base system of a specific operating system |
is not adhered to. |
is not adhered to. |
These are not markup mistakes, and neither the quality of formatting |
These are not markup mistakes, and neither the quality of formatting |
nor portability are in danger. |
nor portability are in danger. |
|
Messages of the |
|
.Cm base |
|
level are printed with the more intuitive |
|
.Cm style |
|
.Ar level |
|
tag. |
.El |
.El |
.Pp |
.Pp |
Messages of the |
Messages of the |
Line 860 Consider using the conventional |
|
Line 867 Consider using the conventional |
|
date format |
date format |
.Dq "Month dd, yyyy" |
.Dq "Month dd, yyyy" |
instead. |
instead. |
|
.It Sy "lower case character in document title" |
|
.Pq mdoc , man |
|
The title is still used as given in the |
|
.Ic \&Dt |
|
or |
|
.Ic \&TH |
|
macro. |
.It Sy "duplicate RCS id" |
.It Sy "duplicate RCS id" |
A single manual page contains two copies of the RCS identifier for |
A single manual page contains two copies of the RCS identifier for |
the same operating system. |
the same operating system. |
Consider deleting the later instance and moving the first one up |
Consider deleting the later instance and moving the first one up |
to the top of the page. |
to the top of the page. |
.It Sy "typo in section name" |
.It Sy "possible typo in section name" |
.Pq mdoc |
.Pq mdoc |
Fuzzy string matching revealed that the argument of an |
Fuzzy string matching revealed that the argument of an |
.Ic \&Sh |
.Ic \&Sh |
macro is similar, but not identical to a standard section name. |
macro is similar, but not identical to a standard section name. |
|
.It Sy "unterminated quoted argument" |
|
.Pq roff |
|
Macro arguments can be enclosed in double quote characters |
|
such that space characters and macro names contained in the quoted |
|
argument need not be escaped. |
|
The closing quote of the last argument of a macro can be omitted. |
|
However, omitting it is not recommended because it makes the code |
|
harder to read. |
.It Sy "useless macro" |
.It Sy "useless macro" |
.Pq mdoc |
.Pq mdoc |
A |
A |
Line 905 list contains two consecutive |
|
Line 927 list contains two consecutive |
|
entries describing the same |
entries describing the same |
.Ic \&Er |
.Ic \&Er |
number. |
number. |
.It Sy "description line ends with a full stop" |
.It Sy "trailing delimiter" |
.Pq mdoc |
.Pq mdoc |
Do not use punctuation at the end of an |
The last argument of an |
.Ic \&Nd |
.Ic \&Ex , \&Fo , \&Nd , \&Nm , \&Os , \&Sh , \&Ss , \&St , |
block. |
or |
|
.Ic \&Sx |
|
macro ends with a trailing delimiter. |
|
This is usually bad style and often indicates typos. |
|
Most likely, the delimiter can be removed. |
.It Sy "no blank before trailing delimiter" |
.It Sy "no blank before trailing delimiter" |
.Pq mdoc |
.Pq mdoc |
The last argument of a macro that supports trailing delimiter |
The last argument of a macro that supports trailing delimiter |
arguments is longer than one byte and ends with a trailing delimiter. |
arguments is longer than one byte and ends with a trailing delimiter. |
Consider inserting a blank such that the delimiter becomes a separate |
Consider inserting a blank such that the delimiter becomes a separate |
argument, thus moving it out of the scope of the macro. |
argument, thus moving it out of the scope of the macro. |
|
.It Sy "fill mode already enabled, skipping" |
|
.Pq man |
|
A |
|
.Ic \&fi |
|
request occurs even though the document is still in fill mode, |
|
or already switched back to fill mode. |
|
It has no effect. |
|
.It Sy "fill mode already disabled, skipping" |
|
.Pq man |
|
An |
|
.Ic \&nf |
|
request occurs even though the document already switched to no-fill mode |
|
and did not switch back to fill mode yet. |
|
It has no effect. |
|
.It Sy "verbatim \(dq--\(dq, maybe consider using \e(em" |
|
.Pq mdoc |
|
Even though the ASCII output device renders an em-dash as |
|
.Qq \-\- , |
|
that is not a good way to write it in an input file |
|
because it renders poorly on all other output devices. |
.It Sy "function name without markup" |
.It Sy "function name without markup" |
.Pq mdoc |
.Pq mdoc |
A word followed by an empty pair of parentheses occurs on a text line. |
A word followed by an empty pair of parentheses occurs on a text line. |
Line 924 Consider using an |
|
Line 970 Consider using an |
|
or |
or |
.Ic \&Xr |
.Ic \&Xr |
macro. |
macro. |
|
.It Sy "whitespace at end of input line" |
|
.Pq mdoc , man , roff |
|
Whitespace at the end of input lines is almost never semantically |
|
significant \(em but in the odd case where it might be, it is |
|
extremely confusing when reviewing and maintaining documents. |
|
.It Sy "bad comment style" |
|
.Pq roff |
|
Comment lines start with a dot, a backslash, and a double-quote character. |
|
The |
|
.Nm |
|
utility treats the line as a comment line even without the backslash, |
|
but leaving out the backslash might not be portable. |
.El |
.El |
.Ss Warnings related to the document prologue |
.Ss Warnings related to the document prologue |
.Bl -ohang |
.Bl -ohang |
Line 939 macro before the first non-prologue macro. |
|
Line 997 macro before the first non-prologue macro. |
|
There is no |
There is no |
.Ic \&TH |
.Ic \&TH |
macro, or it has no arguments. |
macro, or it has no arguments. |
.It Sy "lower case character in document title" |
|
.Pq mdoc , man |
|
The title is still used as given in the |
|
.Ic \&Dt |
|
or |
|
.Ic \&TH |
|
macro. |
|
.It Sy "missing manual section, using \(dq\(dq" |
.It Sy "missing manual section, using \(dq\(dq" |
.Pq mdoc , man |
.Pq mdoc , man |
A |
A |
Line 981 The date given in a |
|
Line 1032 The date given in a |
|
or |
or |
.Ic \&TH |
.Ic \&TH |
macro does not follow the conventional format. |
macro does not follow the conventional format. |
|
.It Sy "date in the future, using it anyway" |
|
.Pq mdoc , man |
|
The date given in a |
|
.Ic \&Dd |
|
or |
|
.Ic \&TH |
|
macro is more than a day ahead of the current system |
|
.Xr time 3 . |
.It Sy "missing Os macro, using \(dq\(dq" |
.It Sy "missing Os macro, using \(dq\(dq" |
.Pq mdoc |
.Pq mdoc |
The default or current system is not shown in this case. |
The default or current system is not shown in this case. |
.It Sy "duplicate prologue macro" |
|
.Pq mdoc |
|
One of the prologue macros occurs more than once. |
|
The last instance overrides all previous ones. |
|
.It Sy "late prologue macro" |
.It Sy "late prologue macro" |
.Pq mdoc |
.Pq mdoc |
A |
A |
|
|
or |
or |
.Ic \&Os |
.Ic \&Os |
macro occurs after some non-prologue macro, but still takes effect. |
macro occurs after some non-prologue macro, but still takes effect. |
.It Sy "skipping late title macro" |
|
.Pq mdoc |
|
The |
|
.Ic \&Dt |
|
macro appears after the first non-prologue macro. |
|
Traditional formatters cannot handle this because |
|
they write the page header before parsing the document body. |
|
Even though this technical restriction does not apply to |
|
.Nm , |
|
traditional semantics is preserved. |
|
The late macro is discarded including its arguments. |
|
.It Sy "prologue macros out of order" |
.It Sy "prologue macros out of order" |
.Pq mdoc |
.Pq mdoc |
The prologue macros are not given in the conventional order |
The prologue macros are not given in the conventional order |
|
|
list, a |
list, a |
.Ic \&Ta |
.Ic \&Ta |
macro occurs as the first macro on a line, which is not portable. |
macro occurs as the first macro on a line, which is not portable. |
.It Sy "fill mode already enabled, skipping" |
|
.Pq man |
|
A |
|
.Ic \&fi |
|
request occurs even though the document is still in fill mode, |
|
or already switched back to fill mode. |
|
It has no effect. |
|
.It Sy "fill mode already disabled, skipping" |
|
.Pq man |
|
An |
|
.Ic \&nf |
|
request occurs even though the document already switched to no-fill mode |
|
and did not switch back to fill mode yet. |
|
It has no effect. |
|
.It Sy "line scope broken" |
.It Sy "line scope broken" |
.Pq man |
.Pq man |
While parsing the next-line scope of the previous macro, |
While parsing the next-line scope of the previous macro, |
Line 1477 An empty box is inserted. |
|
Line 1507 An empty box is inserted. |
|
.El |
.El |
.Ss "Warnings related to bad macro arguments" |
.Ss "Warnings related to bad macro arguments" |
.Bl -ohang |
.Bl -ohang |
.It Sy "unterminated quoted argument" |
|
.Pq roff |
|
Macro arguments can be enclosed in double quote characters |
|
such that space characters and macro names contained in the quoted |
|
argument need not be escaped. |
|
The closing quote of the last argument of a macro can be omitted. |
|
However, omitting it is not recommended because it makes the code |
|
harder to read. |
|
.It Sy "duplicate argument" |
.It Sy "duplicate argument" |
.Pq mdoc |
.Pq mdoc |
A |
A |
Line 1626 As an implementation dependent choice, tab characters |
|
Line 1648 As an implementation dependent choice, tab characters |
|
are passed through to the formatters in any case. |
are passed through to the formatters in any case. |
Given that the text before the tab character will be filled, |
Given that the text before the tab character will be filled, |
it is hard to predict which tab stop position the tab will advance to. |
it is hard to predict which tab stop position the tab will advance to. |
.It Sy "whitespace at end of input line" |
|
.Pq mdoc , man , roff |
|
Whitespace at the end of input lines is almost never semantically |
|
significant \(em but in the odd case where it might be, it is |
|
extremely confusing when reviewing and maintaining documents. |
|
.It Sy "new sentence, new line" |
.It Sy "new sentence, new line" |
.Pq mdoc |
.Pq mdoc |
A new sentence starts in the middle of a text line. |
A new sentence starts in the middle of a text line. |
Start it on a new input line to help formatters produce correct spacing. |
Start it on a new input line to help formatters produce correct spacing. |
.It Sy "bad comment style" |
|
.Pq roff |
|
Comment lines start with a dot, a backslash, and a double-quote character. |
|
The |
|
.Nm |
|
utility treats the line as a comment line even without the backslash, |
|
but leaving out the backslash might not be portable. |
|
.It Sy "invalid escape sequence" |
.It Sy "invalid escape sequence" |
.Pq roff |
.Pq roff |
An escape sequence has an invalid opening argument delimiter, lacks the |
An escape sequence has an invalid opening argument delimiter, lacks the |
Line 1748 and any remaining cells stay empty. |
|
Line 1758 and any remaining cells stay empty. |
|
.El |
.El |
.Ss "Errors related to roff, mdoc, and man code" |
.Ss "Errors related to roff, mdoc, and man code" |
.Bl -ohang |
.Bl -ohang |
|
.It Sy "duplicate prologue macro" |
|
.Pq mdoc |
|
One of the prologue macros occurs more than once. |
|
The last instance overrides all previous ones. |
|
.It Sy "skipping late title macro" |
|
.Pq mdoc |
|
The |
|
.Ic \&Dt |
|
macro appears after the first non-prologue macro. |
|
Traditional formatters cannot handle this because |
|
they write the page header before parsing the document body. |
|
Even though this technical restriction does not apply to |
|
.Nm , |
|
traditional semantics is preserved. |
|
The late macro is discarded including its arguments. |
.It Sy "input stack limit exceeded, infinite loop?" |
.It Sy "input stack limit exceeded, infinite loop?" |
.Pq roff |
.Pq roff |
Explicit recursion limits are implemented for the following features, |
Explicit recursion limits are implemented for the following features, |