xref: /freebsd/contrib/mandoc/mandoc.1 (revision 7295610f5da64ab1818458ce007d9eb924496330)
1*7295610fSBaptiste Daroussin.\"	$Id: mandoc.1,v 1.237 2019/02/23 18:53:54 schwarze Exp $
261d06d6bSBaptiste Daroussin.\"
361d06d6bSBaptiste Daroussin.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
461d06d6bSBaptiste Daroussin.\" Copyright (c) 2012, 2014-2018 Ingo Schwarze <schwarze@openbsd.org>
561d06d6bSBaptiste Daroussin.\"
661d06d6bSBaptiste Daroussin.\" Permission to use, copy, modify, and distribute this software for any
761d06d6bSBaptiste Daroussin.\" purpose with or without fee is hereby granted, provided that the above
861d06d6bSBaptiste Daroussin.\" copyright notice and this permission notice appear in all copies.
961d06d6bSBaptiste Daroussin.\"
1061d06d6bSBaptiste Daroussin.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1161d06d6bSBaptiste Daroussin.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1261d06d6bSBaptiste Daroussin.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1361d06d6bSBaptiste Daroussin.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1461d06d6bSBaptiste Daroussin.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1561d06d6bSBaptiste Daroussin.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1661d06d6bSBaptiste Daroussin.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1761d06d6bSBaptiste Daroussin.\"
18*7295610fSBaptiste Daroussin.Dd $Mdocdate: February 23 2019 $
1961d06d6bSBaptiste Daroussin.Dt MANDOC 1
2061d06d6bSBaptiste Daroussin.Os
2161d06d6bSBaptiste Daroussin.Sh NAME
2261d06d6bSBaptiste Daroussin.Nm mandoc
2361d06d6bSBaptiste Daroussin.Nd format manual pages
2461d06d6bSBaptiste Daroussin.Sh SYNOPSIS
2561d06d6bSBaptiste Daroussin.Nm mandoc
2661d06d6bSBaptiste Daroussin.Op Fl ac
2761d06d6bSBaptiste Daroussin.Op Fl I Cm os Ns = Ns Ar name
2861d06d6bSBaptiste Daroussin.Op Fl K Ar encoding
2961d06d6bSBaptiste Daroussin.Op Fl mdoc | man
3061d06d6bSBaptiste Daroussin.Op Fl O Ar options
3161d06d6bSBaptiste Daroussin.Op Fl T Ar output
3261d06d6bSBaptiste Daroussin.Op Fl W Ar level
3361d06d6bSBaptiste Daroussin.Op Ar
3461d06d6bSBaptiste Daroussin.Sh DESCRIPTION
3561d06d6bSBaptiste DaroussinThe
3661d06d6bSBaptiste Daroussin.Nm
3761d06d6bSBaptiste Daroussinutility formats manual pages for display.
3861d06d6bSBaptiste Daroussin.Pp
3961d06d6bSBaptiste DaroussinBy default,
4061d06d6bSBaptiste Daroussin.Nm
4161d06d6bSBaptiste Daroussinreads
4261d06d6bSBaptiste Daroussin.Xr mdoc 7
4361d06d6bSBaptiste Daroussinor
4461d06d6bSBaptiste Daroussin.Xr man 7
4561d06d6bSBaptiste Daroussintext from stdin and produces
4661d06d6bSBaptiste Daroussin.Fl T Cm locale
4761d06d6bSBaptiste Daroussinoutput.
4861d06d6bSBaptiste Daroussin.Pp
4961d06d6bSBaptiste DaroussinThe options are as follows:
5061d06d6bSBaptiste Daroussin.Bl -tag -width Ds
5161d06d6bSBaptiste Daroussin.It Fl a
5261d06d6bSBaptiste DaroussinIf the standard output is a terminal device and
5361d06d6bSBaptiste Daroussin.Fl c
5461d06d6bSBaptiste Daroussinis not specified, use
5561d06d6bSBaptiste Daroussin.Xr more 1
5661d06d6bSBaptiste Daroussinto paginate the output, just like
5761d06d6bSBaptiste Daroussin.Xr man 1
5861d06d6bSBaptiste Daroussinwould.
5961d06d6bSBaptiste Daroussin.It Fl c
6061d06d6bSBaptiste DaroussinCopy the formatted manual pages to the standard output without using
6161d06d6bSBaptiste Daroussin.Xr more 1
6261d06d6bSBaptiste Daroussinto paginate them.
6361d06d6bSBaptiste DaroussinThis is the default.
6461d06d6bSBaptiste DaroussinIt can be specified to override
6561d06d6bSBaptiste Daroussin.Fl a .
6661d06d6bSBaptiste Daroussin.It Fl I Cm os Ns = Ns Ar name
6761d06d6bSBaptiste DaroussinOverride the default operating system
6861d06d6bSBaptiste Daroussin.Ar name
6961d06d6bSBaptiste Daroussinfor the
7061d06d6bSBaptiste Daroussin.Xr mdoc 7
7161d06d6bSBaptiste Daroussin.Ic \&Os
7261d06d6bSBaptiste Daroussinand for the
7361d06d6bSBaptiste Daroussin.Xr man 7
7461d06d6bSBaptiste Daroussin.Ic \&TH
7561d06d6bSBaptiste Daroussinmacro.
7661d06d6bSBaptiste Daroussin.It Fl K Ar encoding
7761d06d6bSBaptiste DaroussinSpecify the input encoding.
7861d06d6bSBaptiste DaroussinThe supported
7961d06d6bSBaptiste Daroussin.Ar encoding
8061d06d6bSBaptiste Daroussinarguments are
8161d06d6bSBaptiste Daroussin.Cm us-ascii ,
8261d06d6bSBaptiste Daroussin.Cm iso-8859-1 ,
8361d06d6bSBaptiste Daroussinand
8461d06d6bSBaptiste Daroussin.Cm utf-8 .
8561d06d6bSBaptiste DaroussinIf not specified, autodetection uses the first match in the following
8661d06d6bSBaptiste Daroussinlist:
8761d06d6bSBaptiste Daroussin.Bl -enum
8861d06d6bSBaptiste Daroussin.It
8961d06d6bSBaptiste DaroussinIf the first three bytes of the input file are the UTF-8 byte order
9061d06d6bSBaptiste Daroussinmark (BOM, 0xefbbbf), input is interpreted as
9161d06d6bSBaptiste Daroussin.Cm utf-8 .
9261d06d6bSBaptiste Daroussin.It
9361d06d6bSBaptiste DaroussinIf the first or second line of the input file matches the
9461d06d6bSBaptiste Daroussin.Sy emacs
9561d06d6bSBaptiste Daroussinmode line format
9661d06d6bSBaptiste Daroussin.Pp
9761d06d6bSBaptiste Daroussin.D1 .\e" -*- Oo ...; Oc coding: Ar encoding ; No -*-
9861d06d6bSBaptiste Daroussin.Pp
9961d06d6bSBaptiste Daroussinthen input is interpreted according to
10061d06d6bSBaptiste Daroussin.Ar encoding .
10161d06d6bSBaptiste Daroussin.It
10261d06d6bSBaptiste DaroussinIf the first non-ASCII byte in the file introduces a valid UTF-8
10361d06d6bSBaptiste Daroussinsequence, input is interpreted as
10461d06d6bSBaptiste Daroussin.Cm utf-8 .
10561d06d6bSBaptiste Daroussin.It
10661d06d6bSBaptiste DaroussinOtherwise, input is interpreted as
10761d06d6bSBaptiste Daroussin.Cm iso-8859-1 .
10861d06d6bSBaptiste Daroussin.El
10961d06d6bSBaptiste Daroussin.It Fl mdoc | man
11061d06d6bSBaptiste DaroussinWith
11161d06d6bSBaptiste Daroussin.Fl mdoc ,
11261d06d6bSBaptiste Daroussinall input files are interpreted as
11361d06d6bSBaptiste Daroussin.Xr mdoc 7 .
11461d06d6bSBaptiste DaroussinWith
11561d06d6bSBaptiste Daroussin.Fl man ,
11661d06d6bSBaptiste Daroussinall input files are interpreted as
11761d06d6bSBaptiste Daroussin.Xr man 7 .
11861d06d6bSBaptiste DaroussinBy default, the input language is automatically detected for each file:
11961d06d6bSBaptiste Daroussinif the first macro is
12061d06d6bSBaptiste Daroussin.Ic \&Dd
12161d06d6bSBaptiste Daroussinor
12261d06d6bSBaptiste Daroussin.Ic \&Dt ,
12361d06d6bSBaptiste Daroussinthe
12461d06d6bSBaptiste Daroussin.Xr mdoc 7
12561d06d6bSBaptiste Daroussinparser is used; otherwise, the
12661d06d6bSBaptiste Daroussin.Xr man 7
12761d06d6bSBaptiste Daroussinparser is used.
12861d06d6bSBaptiste DaroussinWith other arguments,
12961d06d6bSBaptiste Daroussin.Fl m
13061d06d6bSBaptiste Daroussinis silently ignored.
13161d06d6bSBaptiste Daroussin.It Fl O Ar options
13261d06d6bSBaptiste DaroussinComma-separated output options.
13361d06d6bSBaptiste DaroussinSee the descriptions of the individual output formats for supported
13461d06d6bSBaptiste Daroussin.Ar options .
13561d06d6bSBaptiste Daroussin.It Fl T Ar output
13661d06d6bSBaptiste DaroussinSelect the output format.
13761d06d6bSBaptiste DaroussinSupported values for the
13861d06d6bSBaptiste Daroussin.Ar output
13961d06d6bSBaptiste Daroussinargument are
14061d06d6bSBaptiste Daroussin.Cm ascii ,
14161d06d6bSBaptiste Daroussin.Cm html ,
14261d06d6bSBaptiste Daroussinthe default of
14361d06d6bSBaptiste Daroussin.Cm locale ,
14461d06d6bSBaptiste Daroussin.Cm man ,
14561d06d6bSBaptiste Daroussin.Cm markdown ,
14661d06d6bSBaptiste Daroussin.Cm pdf ,
14761d06d6bSBaptiste Daroussin.Cm ps ,
14861d06d6bSBaptiste Daroussin.Cm tree ,
14961d06d6bSBaptiste Daroussinand
15061d06d6bSBaptiste Daroussin.Cm utf8 .
15161d06d6bSBaptiste Daroussin.Pp
15261d06d6bSBaptiste DaroussinThe special
15361d06d6bSBaptiste Daroussin.Fl T Cm lint
15461d06d6bSBaptiste Daroussinmode only parses the input and produces no output.
15561d06d6bSBaptiste DaroussinIt implies
15661d06d6bSBaptiste Daroussin.Fl W Cm all
15761d06d6bSBaptiste Daroussinand redirects parser messages, which usually appear on standard
15861d06d6bSBaptiste Daroussinerror output, to standard output.
15961d06d6bSBaptiste Daroussin.It Fl W Ar level
16061d06d6bSBaptiste DaroussinSpecify the minimum message
16161d06d6bSBaptiste Daroussin.Ar level
16261d06d6bSBaptiste Daroussinto be reported on the standard error output and to affect the exit status.
16361d06d6bSBaptiste DaroussinThe
16461d06d6bSBaptiste Daroussin.Ar level
16561d06d6bSBaptiste Daroussincan be
16661d06d6bSBaptiste Daroussin.Cm base ,
16761d06d6bSBaptiste Daroussin.Cm style ,
16861d06d6bSBaptiste Daroussin.Cm warning ,
16961d06d6bSBaptiste Daroussin.Cm error ,
17061d06d6bSBaptiste Daroussinor
17161d06d6bSBaptiste Daroussin.Cm unsupp .
17261d06d6bSBaptiste DaroussinThe
17361d06d6bSBaptiste Daroussin.Cm base
17461d06d6bSBaptiste Daroussinlevel automatically derives the operating system from the contents of the
17561d06d6bSBaptiste Daroussin.Ic \&Os
17661d06d6bSBaptiste Daroussinmacro, from the
17761d06d6bSBaptiste Daroussin.Fl Ios
17861d06d6bSBaptiste Daroussincommand line option, or from the
17961d06d6bSBaptiste Daroussin.Xr uname 3
18061d06d6bSBaptiste Daroussinreturn value.
18161d06d6bSBaptiste DaroussinThe levels
18261d06d6bSBaptiste Daroussin.Cm openbsd
18361d06d6bSBaptiste Daroussinand
18461d06d6bSBaptiste Daroussin.Cm netbsd
18561d06d6bSBaptiste Daroussinare variants of
18661d06d6bSBaptiste Daroussin.Cm base
18761d06d6bSBaptiste Daroussinthat bypass autodetection and request validation of base system
18861d06d6bSBaptiste Daroussinconventions for a particular operating system.
18961d06d6bSBaptiste DaroussinThe level
19061d06d6bSBaptiste Daroussin.Cm all
19161d06d6bSBaptiste Daroussinis an alias for
19261d06d6bSBaptiste Daroussin.Cm base .
19361d06d6bSBaptiste DaroussinBy default,
19461d06d6bSBaptiste Daroussin.Nm
19561d06d6bSBaptiste Daroussinis silent.
19661d06d6bSBaptiste DaroussinSee
19761d06d6bSBaptiste Daroussin.Sx EXIT STATUS
19861d06d6bSBaptiste Daroussinand
19961d06d6bSBaptiste Daroussin.Sx DIAGNOSTICS
20061d06d6bSBaptiste Daroussinfor details.
20161d06d6bSBaptiste Daroussin.Pp
20261d06d6bSBaptiste DaroussinThe special option
20361d06d6bSBaptiste Daroussin.Fl W Cm stop
20461d06d6bSBaptiste Daroussintells
20561d06d6bSBaptiste Daroussin.Nm
20661d06d6bSBaptiste Daroussinto exit after parsing a file that causes warnings or errors of at least
20761d06d6bSBaptiste Daroussinthe requested level.
20861d06d6bSBaptiste DaroussinNo formatted output will be produced from that file.
20961d06d6bSBaptiste DaroussinIf both a
21061d06d6bSBaptiste Daroussin.Ar level
21161d06d6bSBaptiste Daroussinand
21261d06d6bSBaptiste Daroussin.Cm stop
21361d06d6bSBaptiste Daroussinare requested, they can be joined with a comma, for example
21461d06d6bSBaptiste Daroussin.Fl W Cm error , Ns Cm stop .
21561d06d6bSBaptiste Daroussin.It Ar file
21661d06d6bSBaptiste DaroussinRead from the given input file.
21761d06d6bSBaptiste DaroussinIf multiple files are specified, they are processed in the given order.
21861d06d6bSBaptiste DaroussinIf unspecified,
21961d06d6bSBaptiste Daroussin.Nm
22061d06d6bSBaptiste Daroussinreads from standard input.
22161d06d6bSBaptiste Daroussin.El
22261d06d6bSBaptiste Daroussin.Pp
22361d06d6bSBaptiste DaroussinThe options
22461d06d6bSBaptiste Daroussin.Fl fhklw
22561d06d6bSBaptiste Daroussinare also supported and are documented in man(1).
22661d06d6bSBaptiste DaroussinIn
22761d06d6bSBaptiste Daroussin.Fl f
22861d06d6bSBaptiste Daroussinand
22961d06d6bSBaptiste Daroussin.Fl k
23061d06d6bSBaptiste Daroussinmode,
23161d06d6bSBaptiste Daroussin.Nm
23261d06d6bSBaptiste Daroussinalso supports the options
23361d06d6bSBaptiste Daroussin.Fl CMmOSs
23461d06d6bSBaptiste Daroussindescribed in the
23561d06d6bSBaptiste Daroussin.Xr apropos 1
23661d06d6bSBaptiste Daroussinmanual.
23761d06d6bSBaptiste DaroussinThe options
23861d06d6bSBaptiste Daroussin.Fl fkl
23961d06d6bSBaptiste Daroussinare mutually exclusive and override each other.
24061d06d6bSBaptiste Daroussin.Ss ASCII Output
24161d06d6bSBaptiste DaroussinUse
24261d06d6bSBaptiste Daroussin.Fl T Cm ascii
24361d06d6bSBaptiste Daroussinto force text output in 7-bit ASCII character encoding documented in the
24461d06d6bSBaptiste Daroussin.Xr ascii 7
24561d06d6bSBaptiste Daroussinmanual page, ignoring the
24661d06d6bSBaptiste Daroussin.Xr locale 1
24761d06d6bSBaptiste Daroussinset in the environment.
24861d06d6bSBaptiste Daroussin.Pp
24961d06d6bSBaptiste DaroussinFont styles are applied by using back-spaced encoding such that an
25061d06d6bSBaptiste Daroussinunderlined character
25161d06d6bSBaptiste Daroussin.Sq c
25261d06d6bSBaptiste Daroussinis rendered as
25361d06d6bSBaptiste Daroussin.Sq _ Ns \e[bs] Ns c ,
25461d06d6bSBaptiste Daroussinwhere
25561d06d6bSBaptiste Daroussin.Sq \e[bs]
25661d06d6bSBaptiste Daroussinis the back-space character number 8.
25761d06d6bSBaptiste DaroussinEmboldened characters are rendered as
25861d06d6bSBaptiste Daroussin.Sq c Ns \e[bs] Ns c .
259*7295610fSBaptiste DaroussinThis markup is typically converted to appropriate terminal sequences by
260*7295610fSBaptiste Daroussinthe pager or
261*7295610fSBaptiste Daroussin.Xr ul 1 .
262*7295610fSBaptiste DaroussinTo remove the markup, pipe the output to
263*7295610fSBaptiste Daroussin.Xr col 1
264*7295610fSBaptiste Daroussin.Fl b
265*7295610fSBaptiste Daroussininstead.
26661d06d6bSBaptiste Daroussin.Pp
26761d06d6bSBaptiste DaroussinThe special characters documented in
26861d06d6bSBaptiste Daroussin.Xr mandoc_char 7
26961d06d6bSBaptiste Daroussinare rendered best-effort in an ASCII equivalent.
270*7295610fSBaptiste DaroussinIn particular, opening and closing
271*7295610fSBaptiste Daroussin.Sq single quotes
272*7295610fSBaptiste Daroussinare represented as characters number 0x60 and 0x27, respectively,
273*7295610fSBaptiste Daroussinwhich agrees with all ASCII standards from 1965 to the latest
274*7295610fSBaptiste Daroussinrevision (2012) and which matches the traditional way in which
275*7295610fSBaptiste Daroussin.Xr roff 7
276*7295610fSBaptiste Daroussinformatters represent single quotes in ASCII output.
277*7295610fSBaptiste DaroussinThis correct ASCII rendering may look strange with modern
278*7295610fSBaptiste DaroussinUnicode-compatible fonts because contrary to ASCII, Unicode uses
279*7295610fSBaptiste Daroussinthe code point U+0060 for the grave accent only, never for an opening
280*7295610fSBaptiste Daroussinquote.
28161d06d6bSBaptiste Daroussin.Pp
28261d06d6bSBaptiste DaroussinThe following
28361d06d6bSBaptiste Daroussin.Fl O
28461d06d6bSBaptiste Daroussinarguments are accepted:
28561d06d6bSBaptiste Daroussin.Bl -tag -width Ds
28661d06d6bSBaptiste Daroussin.It Cm indent Ns = Ns Ar indent
28761d06d6bSBaptiste DaroussinThe left margin for normal text is set to
28861d06d6bSBaptiste Daroussin.Ar indent
28961d06d6bSBaptiste Daroussinblank characters instead of the default of five for
29061d06d6bSBaptiste Daroussin.Xr mdoc 7
29161d06d6bSBaptiste Daroussinand seven for
29261d06d6bSBaptiste Daroussin.Xr man 7 .
29361d06d6bSBaptiste DaroussinIncreasing this is not recommended; it may result in degraded formatting,
29461d06d6bSBaptiste Daroussinfor example overfull lines or ugly line breaks.
29561d06d6bSBaptiste DaroussinWhen output is to a pager on a terminal that is less than 66 columns
29661d06d6bSBaptiste Daroussinwide, the default is reduced to three columns.
29761d06d6bSBaptiste Daroussin.It Cm mdoc
29861d06d6bSBaptiste DaroussinFormat
29961d06d6bSBaptiste Daroussin.Xr man 7
30061d06d6bSBaptiste Daroussininput files in
30161d06d6bSBaptiste Daroussin.Xr mdoc 7
30261d06d6bSBaptiste Daroussinoutput style.
30361d06d6bSBaptiste DaroussinSpecifically, this suppresses the two additional blank lines near the
30461d06d6bSBaptiste Daroussintop and the bottom of each page, and it implies
30561d06d6bSBaptiste Daroussin.Fl O Cm indent Ns =5 .
30661d06d6bSBaptiste DaroussinOne useful application is for checking that
30761d06d6bSBaptiste Daroussin.Fl T Cm man
30861d06d6bSBaptiste Daroussinoutput formats in the same way as the
30961d06d6bSBaptiste Daroussin.Xr mdoc 7
31061d06d6bSBaptiste Daroussinsource it was generated from.
311*7295610fSBaptiste Daroussin.It Cm tag Ns Op = Ns Ar term
312*7295610fSBaptiste DaroussinIf the formatted manual page is opened in a pager,
313*7295610fSBaptiste Daroussingo to the definition of the
314*7295610fSBaptiste Daroussin.Ar term
315*7295610fSBaptiste Daroussinrather than showing the manual page from the beginning.
316*7295610fSBaptiste DaroussinIf no
317*7295610fSBaptiste Daroussin.Ar term
318*7295610fSBaptiste Daroussinis specified, reuse the first command line argument that is not a
319*7295610fSBaptiste Daroussin.Ar section
320*7295610fSBaptiste Daroussinnumber.
321*7295610fSBaptiste DaroussinIf that argument is in
322*7295610fSBaptiste Daroussin.Xr apropos 1
323*7295610fSBaptiste Daroussin.Ar key Ns = Ns Ar val
324*7295610fSBaptiste Daroussinformat, only the
325*7295610fSBaptiste Daroussin.Ar val
326*7295610fSBaptiste Daroussinis used rather than the argument as a whole.
327*7295610fSBaptiste DaroussinThis is useful for commands like
328*7295610fSBaptiste Daroussin.Ql man -akO tag Ic=ulimit
329*7295610fSBaptiste Daroussinto search for a keyword and jump right to its definition
330*7295610fSBaptiste Daroussinin the matching manual pages.
33161d06d6bSBaptiste Daroussin.It Cm width Ns = Ns Ar width
33261d06d6bSBaptiste DaroussinThe output width is set to
33361d06d6bSBaptiste Daroussin.Ar width
33461d06d6bSBaptiste Daroussininstead of the default of 78.
33561d06d6bSBaptiste DaroussinWhen output is to a pager on a terminal that is less than 79 columns
33661d06d6bSBaptiste Daroussinwide, the default is reduced to one less than the terminal width.
33761d06d6bSBaptiste DaroussinIn any case, lines that are output in literal mode are never wrapped
33861d06d6bSBaptiste Daroussinand may exceed the output width.
33961d06d6bSBaptiste Daroussin.El
34061d06d6bSBaptiste Daroussin.Ss HTML Output
34161d06d6bSBaptiste DaroussinOutput produced by
34261d06d6bSBaptiste Daroussin.Fl T Cm html
34361d06d6bSBaptiste Daroussinconforms to HTML5 using optional self-closing tags.
34461d06d6bSBaptiste DaroussinDefault styles use only CSS1.
34561d06d6bSBaptiste DaroussinEquations rendered from
34661d06d6bSBaptiste Daroussin.Xr eqn 7
34761d06d6bSBaptiste Daroussinblocks use MathML.
34861d06d6bSBaptiste Daroussin.Pp
349*7295610fSBaptiste DaroussinThe file
350*7295610fSBaptiste Daroussin.Pa /usr/share/misc/mandoc.css
351*7295610fSBaptiste Daroussindocuments style-sheet classes available for customising output.
35261d06d6bSBaptiste DaroussinIf a style-sheet is not specified with
35361d06d6bSBaptiste Daroussin.Fl O Cm style ,
35461d06d6bSBaptiste Daroussin.Fl T Cm html
35561d06d6bSBaptiste Daroussindefaults to simple output (via an embedded style-sheet)
35661d06d6bSBaptiste Daroussinreadable in any graphical or text-based web
35761d06d6bSBaptiste Daroussinbrowser.
35861d06d6bSBaptiste Daroussin.Pp
35961d06d6bSBaptiste DaroussinNon-ASCII characters are rendered
36061d06d6bSBaptiste Daroussinas hexadecimal Unicode character references.
36161d06d6bSBaptiste Daroussin.Pp
36261d06d6bSBaptiste DaroussinThe following
36361d06d6bSBaptiste Daroussin.Fl O
36461d06d6bSBaptiste Daroussinarguments are accepted:
36561d06d6bSBaptiste Daroussin.Bl -tag -width Ds
36661d06d6bSBaptiste Daroussin.It Cm fragment
36761d06d6bSBaptiste DaroussinOmit the <!DOCTYPE> declaration and the <html>, <head>, and <body>
36861d06d6bSBaptiste Daroussinelements and only emit the subtree below the <body> element.
36961d06d6bSBaptiste DaroussinThe
37061d06d6bSBaptiste Daroussin.Cm style
37161d06d6bSBaptiste Daroussinargument will be ignored.
37261d06d6bSBaptiste DaroussinThis is useful when embedding manual content within existing documents.
37361d06d6bSBaptiste Daroussin.It Cm includes Ns = Ns Ar fmt
37461d06d6bSBaptiste DaroussinThe string
37561d06d6bSBaptiste Daroussin.Ar fmt ,
37661d06d6bSBaptiste Daroussinfor example,
37761d06d6bSBaptiste Daroussin.Ar ../src/%I.html ,
37861d06d6bSBaptiste Daroussinis used as a template for linked header files (usually via the
37961d06d6bSBaptiste Daroussin.Ic \&In
38061d06d6bSBaptiste Daroussinmacro).
38161d06d6bSBaptiste DaroussinInstances of
38261d06d6bSBaptiste Daroussin.Sq \&%I
38361d06d6bSBaptiste Daroussinare replaced with the include filename.
38461d06d6bSBaptiste DaroussinThe default is not to present a
38561d06d6bSBaptiste Daroussinhyperlink.
386*7295610fSBaptiste Daroussin.It Cm man Ns = Ns Ar fmt Ns Op ; Ns Ar fmt
38761d06d6bSBaptiste DaroussinThe string
38861d06d6bSBaptiste Daroussin.Ar fmt ,
38961d06d6bSBaptiste Daroussinfor example,
39061d06d6bSBaptiste Daroussin.Ar ../html%S/%N.%S.html ,
39161d06d6bSBaptiste Daroussinis used as a template for linked manuals (usually via the
39261d06d6bSBaptiste Daroussin.Ic \&Xr
39361d06d6bSBaptiste Daroussinmacro).
39461d06d6bSBaptiste DaroussinInstances of
39561d06d6bSBaptiste Daroussin.Sq \&%N
39661d06d6bSBaptiste Daroussinand
39761d06d6bSBaptiste Daroussin.Sq %S
39861d06d6bSBaptiste Daroussinare replaced with the linked manual's name and section, respectively.
39961d06d6bSBaptiste DaroussinIf no section is included, section 1 is assumed.
40061d06d6bSBaptiste DaroussinThe default is not to
40161d06d6bSBaptiste Daroussinpresent a hyperlink.
402*7295610fSBaptiste DaroussinIf two formats are given and a file
403*7295610fSBaptiste Daroussin.Ar %N.%S
404*7295610fSBaptiste Daroussinexists in the current directory, the first format is used;
405*7295610fSBaptiste Daroussinotherwise, the second format is used.
40661d06d6bSBaptiste Daroussin.It Cm style Ns = Ns Ar style.css
40761d06d6bSBaptiste DaroussinThe file
40861d06d6bSBaptiste Daroussin.Ar style.css
40961d06d6bSBaptiste Daroussinis used for an external style-sheet.
41061d06d6bSBaptiste DaroussinThis must be a valid absolute or
41161d06d6bSBaptiste Daroussinrelative URI.
412*7295610fSBaptiste Daroussin.It Cm toc
413*7295610fSBaptiste DaroussinIf an input file contains at least two non-standard sections,
414*7295610fSBaptiste Daroussinprint a table of contents near the beginning of the output.
41561d06d6bSBaptiste Daroussin.El
41661d06d6bSBaptiste Daroussin.Ss Locale Output
41761d06d6bSBaptiste DaroussinBy default,
41861d06d6bSBaptiste Daroussin.Nm
41961d06d6bSBaptiste Daroussinautomatically selects UTF-8 or ASCII output according to the current
42061d06d6bSBaptiste Daroussin.Xr locale 1 .
42161d06d6bSBaptiste DaroussinIf any of the environment variables
42261d06d6bSBaptiste Daroussin.Ev LC_ALL ,
42361d06d6bSBaptiste Daroussin.Ev LC_CTYPE ,
42461d06d6bSBaptiste Daroussinor
42561d06d6bSBaptiste Daroussin.Ev LANG
42661d06d6bSBaptiste Daroussinare set and the first one that is set
42761d06d6bSBaptiste Daroussinselects the UTF-8 character encoding, it produces
42861d06d6bSBaptiste Daroussin.Sx UTF-8 Output ;
42961d06d6bSBaptiste Daroussinotherwise, it falls back to
43061d06d6bSBaptiste Daroussin.Sx ASCII Output .
43161d06d6bSBaptiste DaroussinThis output mode can also be selected explicitly with
43261d06d6bSBaptiste Daroussin.Fl T Cm locale .
43361d06d6bSBaptiste Daroussin.Ss Man Output
43461d06d6bSBaptiste DaroussinUse
43561d06d6bSBaptiste Daroussin.Fl T Cm man
43661d06d6bSBaptiste Daroussinto translate
43761d06d6bSBaptiste Daroussin.Xr mdoc 7
43861d06d6bSBaptiste Daroussininput into
43961d06d6bSBaptiste Daroussin.Xr man 7
44061d06d6bSBaptiste Daroussinoutput format.
44161d06d6bSBaptiste DaroussinThis is useful for distributing manual sources to legacy systems
44261d06d6bSBaptiste Daroussinlacking
44361d06d6bSBaptiste Daroussin.Xr mdoc 7
44461d06d6bSBaptiste Daroussinformatters.
44561d06d6bSBaptiste Daroussin.Pp
44661d06d6bSBaptiste DaroussinIf the input format of a file is
44761d06d6bSBaptiste Daroussin.Xr man 7 ,
44861d06d6bSBaptiste Daroussinthe input is copied to the output, expanding any
44961d06d6bSBaptiste Daroussin.Xr roff 7
45061d06d6bSBaptiste Daroussin.Ic so
45161d06d6bSBaptiste Daroussinrequests.
45261d06d6bSBaptiste DaroussinThe parser is also run, and as usual, the
45361d06d6bSBaptiste Daroussin.Fl W
45461d06d6bSBaptiste Daroussinlevel controls which
45561d06d6bSBaptiste Daroussin.Sx DIAGNOSTICS
45661d06d6bSBaptiste Daroussinare displayed before copying the input to the output.
45761d06d6bSBaptiste Daroussin.Ss Markdown Output
45861d06d6bSBaptiste DaroussinUse
45961d06d6bSBaptiste Daroussin.Fl T Cm markdown
46061d06d6bSBaptiste Daroussinto translate
46161d06d6bSBaptiste Daroussin.Xr mdoc 7
46261d06d6bSBaptiste Daroussininput to the markdown format conforming to
46361d06d6bSBaptiste Daroussin.Lk http://daringfireball.net/projects/markdown/syntax.text\
46461d06d6bSBaptiste Daroussin "John Gruber's 2004 specification" .
46561d06d6bSBaptiste DaroussinThe output also almost conforms to the
46661d06d6bSBaptiste Daroussin.Lk http://commonmark.org/ CommonMark
46761d06d6bSBaptiste Daroussinspecification.
46861d06d6bSBaptiste Daroussin.Pp
46961d06d6bSBaptiste DaroussinThe character set used for the markdown output is ASCII.
47061d06d6bSBaptiste DaroussinNon-ASCII characters are encoded as HTML entities.
47161d06d6bSBaptiste DaroussinSince that is not possible in literal font contexts, because these
47261d06d6bSBaptiste Daroussinare rendered as code spans and code blocks in the markdown output,
47361d06d6bSBaptiste Daroussinnon-ASCII characters are transliterated to ASCII approximations in
47461d06d6bSBaptiste Daroussinthese contexts.
47561d06d6bSBaptiste Daroussin.Pp
47661d06d6bSBaptiste DaroussinMarkdown is a very weak markup language, so all semantic markup is
47761d06d6bSBaptiste Daroussinlost, and even part of the presentational markup may be lost.
47861d06d6bSBaptiste DaroussinDo not use this as an intermediate step in converting to HTML;
47961d06d6bSBaptiste Daroussininstead, use
48061d06d6bSBaptiste Daroussin.Fl T Cm html
48161d06d6bSBaptiste Daroussindirectly.
48261d06d6bSBaptiste Daroussin.Pp
48361d06d6bSBaptiste DaroussinThe
48461d06d6bSBaptiste Daroussin.Xr man 7 ,
48561d06d6bSBaptiste Daroussin.Xr tbl 7 ,
48661d06d6bSBaptiste Daroussinand
48761d06d6bSBaptiste Daroussin.Xr eqn 7
48861d06d6bSBaptiste Daroussininput languages are not supported by
48961d06d6bSBaptiste Daroussin.Fl T Cm markdown
49061d06d6bSBaptiste Daroussinoutput mode.
49161d06d6bSBaptiste Daroussin.Ss PDF Output
49261d06d6bSBaptiste DaroussinPDF-1.1 output may be generated by
49361d06d6bSBaptiste Daroussin.Fl T Cm pdf .
49461d06d6bSBaptiste DaroussinSee
49561d06d6bSBaptiste Daroussin.Sx PostScript Output
49661d06d6bSBaptiste Daroussinfor
49761d06d6bSBaptiste Daroussin.Fl O
49861d06d6bSBaptiste Daroussinarguments and defaults.
49961d06d6bSBaptiste Daroussin.Ss PostScript Output
50061d06d6bSBaptiste DaroussinPostScript
50161d06d6bSBaptiste Daroussin.Qq Adobe-3.0
50261d06d6bSBaptiste DaroussinLevel-2 pages may be generated by
50361d06d6bSBaptiste Daroussin.Fl T Cm ps .
50461d06d6bSBaptiste DaroussinOutput pages default to letter sized and are rendered in the Times font
50561d06d6bSBaptiste Daroussinfamily, 11-point.
50661d06d6bSBaptiste DaroussinMargins are calculated as 1/9 the page length and width.
50761d06d6bSBaptiste DaroussinLine-height is 1.4m.
50861d06d6bSBaptiste Daroussin.Pp
50961d06d6bSBaptiste DaroussinSpecial characters are rendered as in
51061d06d6bSBaptiste Daroussin.Sx ASCII Output .
51161d06d6bSBaptiste Daroussin.Pp
51261d06d6bSBaptiste DaroussinThe following
51361d06d6bSBaptiste Daroussin.Fl O
51461d06d6bSBaptiste Daroussinarguments are accepted:
51561d06d6bSBaptiste Daroussin.Bl -tag -width Ds
51661d06d6bSBaptiste Daroussin.It Cm paper Ns = Ns Ar name
51761d06d6bSBaptiste DaroussinThe paper size
51861d06d6bSBaptiste Daroussin.Ar name
51961d06d6bSBaptiste Daroussinmay be one of
52061d06d6bSBaptiste Daroussin.Ar a3 ,
52161d06d6bSBaptiste Daroussin.Ar a4 ,
52261d06d6bSBaptiste Daroussin.Ar a5 ,
52361d06d6bSBaptiste Daroussin.Ar legal ,
52461d06d6bSBaptiste Daroussinor
52561d06d6bSBaptiste Daroussin.Ar letter .
52661d06d6bSBaptiste DaroussinYou may also manually specify dimensions as
52761d06d6bSBaptiste Daroussin.Ar NNxNN ,
52861d06d6bSBaptiste Daroussinwidth by height in millimetres.
52961d06d6bSBaptiste DaroussinIf an unknown value is encountered,
53061d06d6bSBaptiste Daroussin.Ar letter
53161d06d6bSBaptiste Daroussinis used.
53261d06d6bSBaptiste Daroussin.El
53361d06d6bSBaptiste Daroussin.Ss UTF-8 Output
53461d06d6bSBaptiste DaroussinUse
53561d06d6bSBaptiste Daroussin.Fl T Cm utf8
53661d06d6bSBaptiste Daroussinto force text output in UTF-8 multi-byte character encoding,
53761d06d6bSBaptiste Daroussinignoring the
53861d06d6bSBaptiste Daroussin.Xr locale 1
53961d06d6bSBaptiste Daroussinsettings in the environment.
54061d06d6bSBaptiste DaroussinSee
54161d06d6bSBaptiste Daroussin.Sx ASCII Output
54261d06d6bSBaptiste Daroussinregarding font styles and
54361d06d6bSBaptiste Daroussin.Fl O
54461d06d6bSBaptiste Daroussinarguments.
54561d06d6bSBaptiste Daroussin.Pp
54661d06d6bSBaptiste DaroussinOn operating systems lacking locale or wide character support, and
54761d06d6bSBaptiste Daroussinon those where the internal character representation is not UCS-4,
54861d06d6bSBaptiste Daroussin.Nm
54961d06d6bSBaptiste Daroussinalways falls back to
55061d06d6bSBaptiste Daroussin.Sx ASCII Output .
55161d06d6bSBaptiste Daroussin.Ss Syntax tree output
55261d06d6bSBaptiste DaroussinUse
55361d06d6bSBaptiste Daroussin.Fl T Cm tree
55461d06d6bSBaptiste Daroussinto show a human readable representation of the syntax tree.
55561d06d6bSBaptiste DaroussinIt is useful for debugging the source code of manual pages.
55661d06d6bSBaptiste DaroussinThe exact format is subject to change, so don't write parsers for it.
55761d06d6bSBaptiste Daroussin.Pp
55861d06d6bSBaptiste DaroussinThe first paragraph shows meta data found in the
55961d06d6bSBaptiste Daroussin.Xr mdoc 7
56061d06d6bSBaptiste Daroussinprologue, on the
56161d06d6bSBaptiste Daroussin.Xr man 7
56261d06d6bSBaptiste Daroussin.Ic \&TH
56361d06d6bSBaptiste Daroussinline, or the fallbacks used.
56461d06d6bSBaptiste Daroussin.Pp
56561d06d6bSBaptiste DaroussinIn the tree dump, each output line shows one syntax tree node.
56661d06d6bSBaptiste DaroussinChild nodes are indented with respect to their parent node.
56761d06d6bSBaptiste DaroussinThe columns are:
56861d06d6bSBaptiste Daroussin.Pp
56961d06d6bSBaptiste Daroussin.Bl -enum -compact
57061d06d6bSBaptiste Daroussin.It
57161d06d6bSBaptiste DaroussinFor macro nodes, the macro name; for text and
57261d06d6bSBaptiste Daroussin.Xr tbl 7
57361d06d6bSBaptiste Daroussinnodes, the content.
57461d06d6bSBaptiste DaroussinThere is a special format for
57561d06d6bSBaptiste Daroussin.Xr eqn 7
57661d06d6bSBaptiste Daroussinnodes.
57761d06d6bSBaptiste Daroussin.It
57861d06d6bSBaptiste DaroussinNode type (text, elem, block, head, body, body-end, tail, tbl, eqn).
57961d06d6bSBaptiste Daroussin.It
58061d06d6bSBaptiste DaroussinFlags:
58161d06d6bSBaptiste Daroussin.Bl -dash -compact
58261d06d6bSBaptiste Daroussin.It
58361d06d6bSBaptiste DaroussinAn opening parenthesis if the node is an opening delimiter.
58461d06d6bSBaptiste Daroussin.It
58561d06d6bSBaptiste DaroussinAn asterisk if the node starts a new input line.
58661d06d6bSBaptiste Daroussin.It
58761d06d6bSBaptiste DaroussinThe input line number (starting at one).
58861d06d6bSBaptiste Daroussin.It
58961d06d6bSBaptiste DaroussinA colon.
59061d06d6bSBaptiste Daroussin.It
59161d06d6bSBaptiste DaroussinThe input column number (starting at one).
59261d06d6bSBaptiste Daroussin.It
59361d06d6bSBaptiste DaroussinA closing parenthesis if the node is a closing delimiter.
59461d06d6bSBaptiste Daroussin.It
59561d06d6bSBaptiste DaroussinA full stop if the node ends a sentence.
59661d06d6bSBaptiste Daroussin.It
59761d06d6bSBaptiste DaroussinBROKEN if the node is a block broken by another block.
59861d06d6bSBaptiste Daroussin.It
59961d06d6bSBaptiste DaroussinNOSRC if the node is not in the input file,
60061d06d6bSBaptiste Daroussinbut automatically generated from macros.
60161d06d6bSBaptiste Daroussin.It
60261d06d6bSBaptiste DaroussinNOPRT if the node is not supposed to generate output
60361d06d6bSBaptiste Daroussinfor any output format.
60461d06d6bSBaptiste Daroussin.El
60561d06d6bSBaptiste Daroussin.El
60661d06d6bSBaptiste Daroussin.Pp
60761d06d6bSBaptiste DaroussinThe following
60861d06d6bSBaptiste Daroussin.Fl O
60961d06d6bSBaptiste Daroussinargument is accepted:
61061d06d6bSBaptiste Daroussin.Bl -tag -width Ds
61161d06d6bSBaptiste Daroussin.It Cm noval
61261d06d6bSBaptiste DaroussinSkip validation and show the unvalidated syntax tree.
61361d06d6bSBaptiste DaroussinThis can help to find out whether a given behaviour is caused by
61461d06d6bSBaptiste Daroussinthe parser or by the validator.
61561d06d6bSBaptiste DaroussinMeta data is not available in this case.
61661d06d6bSBaptiste Daroussin.El
61761d06d6bSBaptiste Daroussin.Sh ENVIRONMENT
61861d06d6bSBaptiste Daroussin.Bl -tag -width MANPAGER
61961d06d6bSBaptiste Daroussin.It Ev LC_CTYPE
62061d06d6bSBaptiste DaroussinThe character encoding
62161d06d6bSBaptiste Daroussin.Xr locale 1 .
62261d06d6bSBaptiste DaroussinWhen
62361d06d6bSBaptiste Daroussin.Sx Locale Output
62461d06d6bSBaptiste Daroussinis selected, it decides whether to use ASCII or UTF-8 output format.
62561d06d6bSBaptiste DaroussinIt never affects the interpretation of input files.
62661d06d6bSBaptiste Daroussin.It Ev MANPAGER
62761d06d6bSBaptiste DaroussinAny non-empty value of the environment variable
62861d06d6bSBaptiste Daroussin.Ev MANPAGER
62961d06d6bSBaptiste Daroussinis used instead of the standard pagination program,
63061d06d6bSBaptiste Daroussin.Xr more 1 ;
63161d06d6bSBaptiste Daroussinsee
63261d06d6bSBaptiste Daroussin.Xr man 1
63361d06d6bSBaptiste Daroussinfor details.
63461d06d6bSBaptiste DaroussinOnly used if
63561d06d6bSBaptiste Daroussin.Fl a
63661d06d6bSBaptiste Daroussinor
63761d06d6bSBaptiste Daroussin.Fl l
63861d06d6bSBaptiste Daroussinis specified.
63961d06d6bSBaptiste Daroussin.It Ev PAGER
64061d06d6bSBaptiste DaroussinSpecifies the pagination program to use when
64161d06d6bSBaptiste Daroussin.Ev MANPAGER
64261d06d6bSBaptiste Daroussinis not defined.
64361d06d6bSBaptiste DaroussinIf neither PAGER nor MANPAGER is defined,
64461d06d6bSBaptiste Daroussin.Xr more 1
64561d06d6bSBaptiste Daroussin.Fl s
64661d06d6bSBaptiste Daroussinis used.
64761d06d6bSBaptiste DaroussinOnly used if
64861d06d6bSBaptiste Daroussin.Fl a
64961d06d6bSBaptiste Daroussinor
65061d06d6bSBaptiste Daroussin.Fl l
65161d06d6bSBaptiste Daroussinis specified.
65261d06d6bSBaptiste Daroussin.El
65361d06d6bSBaptiste Daroussin.Sh EXIT STATUS
65461d06d6bSBaptiste DaroussinThe
65561d06d6bSBaptiste Daroussin.Nm
65661d06d6bSBaptiste Daroussinutility exits with one of the following values, controlled by the message
65761d06d6bSBaptiste Daroussin.Ar level
65861d06d6bSBaptiste Daroussinassociated with the
65961d06d6bSBaptiste Daroussin.Fl W
66061d06d6bSBaptiste Daroussinoption:
66161d06d6bSBaptiste Daroussin.Pp
66261d06d6bSBaptiste Daroussin.Bl -tag -width Ds -compact
66361d06d6bSBaptiste Daroussin.It 0
66461d06d6bSBaptiste DaroussinNo base system convention violations, style suggestions, warnings,
66561d06d6bSBaptiste Daroussinor errors occurred, or those that did were ignored because they
66661d06d6bSBaptiste Daroussinwere lower than the requested
66761d06d6bSBaptiste Daroussin.Ar level .
66861d06d6bSBaptiste Daroussin.It 1
66961d06d6bSBaptiste DaroussinAt least one base system convention violation or style suggestion
67061d06d6bSBaptiste Daroussinoccurred, but no warning or error, and
67161d06d6bSBaptiste Daroussin.Fl W Cm base
67261d06d6bSBaptiste Daroussinor
67361d06d6bSBaptiste Daroussin.Fl W Cm style
67461d06d6bSBaptiste Daroussinwas specified.
67561d06d6bSBaptiste Daroussin.It 2
67661d06d6bSBaptiste DaroussinAt least one warning occurred, but no error, and
67761d06d6bSBaptiste Daroussin.Fl W Cm warning
67861d06d6bSBaptiste Daroussinor a lower
67961d06d6bSBaptiste Daroussin.Ar level
68061d06d6bSBaptiste Daroussinwas requested.
68161d06d6bSBaptiste Daroussin.It 3
68261d06d6bSBaptiste DaroussinAt least one parsing error occurred,
68361d06d6bSBaptiste Daroussinbut no unsupported feature was encountered, and
68461d06d6bSBaptiste Daroussin.Fl W Cm error
68561d06d6bSBaptiste Daroussinor a lower
68661d06d6bSBaptiste Daroussin.Ar level
68761d06d6bSBaptiste Daroussinwas requested.
68861d06d6bSBaptiste Daroussin.It 4
68961d06d6bSBaptiste DaroussinAt least one unsupported feature was encountered, and
69061d06d6bSBaptiste Daroussin.Fl W Cm unsupp
69161d06d6bSBaptiste Daroussinor a lower
69261d06d6bSBaptiste Daroussin.Ar level
69361d06d6bSBaptiste Daroussinwas requested.
69461d06d6bSBaptiste Daroussin.It 5
69561d06d6bSBaptiste DaroussinInvalid command line arguments were specified.
69661d06d6bSBaptiste DaroussinNo input files have been read.
69761d06d6bSBaptiste Daroussin.It 6
69861d06d6bSBaptiste DaroussinAn operating system error occurred, for example exhaustion
69961d06d6bSBaptiste Daroussinof memory, file descriptors, or process table entries.
70061d06d6bSBaptiste DaroussinSuch errors cause
70161d06d6bSBaptiste Daroussin.Nm
70261d06d6bSBaptiste Daroussinto exit at once, possibly in the middle of parsing or formatting a file.
70361d06d6bSBaptiste Daroussin.El
70461d06d6bSBaptiste Daroussin.Pp
70561d06d6bSBaptiste DaroussinNote that selecting
70661d06d6bSBaptiste Daroussin.Fl T Cm lint
70761d06d6bSBaptiste Daroussinoutput mode implies
70861d06d6bSBaptiste Daroussin.Fl W Cm all .
70961d06d6bSBaptiste Daroussin.Sh EXAMPLES
71061d06d6bSBaptiste DaroussinTo page manuals to the terminal:
71161d06d6bSBaptiste Daroussin.Pp
71261d06d6bSBaptiste Daroussin.Dl $ mandoc -l mandoc.1 man.1 apropos.1 makewhatis.8
71361d06d6bSBaptiste Daroussin.Pp
71461d06d6bSBaptiste DaroussinTo produce HTML manuals with
715*7295610fSBaptiste Daroussin.Pa /usr/share/misc/mandoc.css
71661d06d6bSBaptiste Daroussinas the style-sheet:
71761d06d6bSBaptiste Daroussin.Pp
718*7295610fSBaptiste Daroussin.Dl $ mandoc \-T html -O style=/usr/share/misc/mandoc.css mdoc.7 > mdoc.7.html
71961d06d6bSBaptiste Daroussin.Pp
72061d06d6bSBaptiste DaroussinTo check over a large set of manuals:
72161d06d6bSBaptiste Daroussin.Pp
72261d06d6bSBaptiste Daroussin.Dl $ mandoc \-T lint \(gafind /usr/src -name \e*\e.[1-9]\(ga
72361d06d6bSBaptiste Daroussin.Pp
72461d06d6bSBaptiste DaroussinTo produce a series of PostScript manuals for A4 paper:
72561d06d6bSBaptiste Daroussin.Pp
726*7295610fSBaptiste Daroussin.Dl $ mandoc \-T ps \-O paper=a4 mdoc.7 man.7 > manuals.ps
72761d06d6bSBaptiste Daroussin.Pp
72861d06d6bSBaptiste DaroussinConvert a modern
72961d06d6bSBaptiste Daroussin.Xr mdoc 7
73061d06d6bSBaptiste Daroussinmanual to the older
73161d06d6bSBaptiste Daroussin.Xr man 7
73261d06d6bSBaptiste Daroussinformat, for use on systems lacking an
73361d06d6bSBaptiste Daroussin.Xr mdoc 7
73461d06d6bSBaptiste Daroussinparser:
73561d06d6bSBaptiste Daroussin.Pp
736*7295610fSBaptiste Daroussin.Dl $ mandoc \-T man foo.mdoc > foo.man
73761d06d6bSBaptiste Daroussin.Sh DIAGNOSTICS
73861d06d6bSBaptiste DaroussinMessages displayed by
73961d06d6bSBaptiste Daroussin.Nm
74061d06d6bSBaptiste Daroussinfollow this format:
74161d06d6bSBaptiste Daroussin.Bd -ragged -offset indent
74261d06d6bSBaptiste Daroussin.Nm :
743*7295610fSBaptiste Daroussin.Ar file : Ns Ar line : Ns Ar column : level : message : macro arguments
74461d06d6bSBaptiste Daroussin.Pq Ar os
74561d06d6bSBaptiste Daroussin.Ed
74661d06d6bSBaptiste Daroussin.Pp
747*7295610fSBaptiste DaroussinThe first three fields identify the
748*7295610fSBaptiste Daroussin.Ar file
749*7295610fSBaptiste Daroussinname,
750*7295610fSBaptiste Daroussin.Ar line
751*7295610fSBaptiste Daroussinnumber, and
752*7295610fSBaptiste Daroussin.Ar column
753*7295610fSBaptiste Daroussinnumber of the input file where the message was triggered.
754*7295610fSBaptiste DaroussinThe line and column numbers start at 1.
75561d06d6bSBaptiste DaroussinBoth are omitted for messages referring to an input file as a whole.
756*7295610fSBaptiste DaroussinAll
757*7295610fSBaptiste Daroussin.Ar level
758*7295610fSBaptiste Daroussinand
759*7295610fSBaptiste Daroussin.Ar message
760*7295610fSBaptiste Daroussinstrings are explained below.
761*7295610fSBaptiste DaroussinThe name of the
762*7295610fSBaptiste Daroussin.Ar macro
763*7295610fSBaptiste Daroussintriggering the message and its
764*7295610fSBaptiste Daroussin.Ar arguments
765*7295610fSBaptiste Daroussinare omitted where meaningless.
76661d06d6bSBaptiste DaroussinThe
76761d06d6bSBaptiste Daroussin.Ar os
76861d06d6bSBaptiste Daroussinoperating system specifier is omitted for messages that are relevant
76961d06d6bSBaptiste Daroussinfor all operating systems.
77061d06d6bSBaptiste DaroussinFatal messages about invalid command line arguments
77161d06d6bSBaptiste Daroussinor operating system errors, for example when memory is exhausted,
77261d06d6bSBaptiste Daroussinmay also omit the
77361d06d6bSBaptiste Daroussin.Ar file
77461d06d6bSBaptiste Daroussinand
77561d06d6bSBaptiste Daroussin.Ar level
77661d06d6bSBaptiste Daroussinfields.
77761d06d6bSBaptiste Daroussin.Pp
77861d06d6bSBaptiste DaroussinMessage levels have the following meanings:
77961d06d6bSBaptiste Daroussin.Bl -tag -width "warning"
78061d06d6bSBaptiste Daroussin.It Cm unsupp
78161d06d6bSBaptiste DaroussinAn input file uses unsupported low-level
78261d06d6bSBaptiste Daroussin.Xr roff 7
78361d06d6bSBaptiste Daroussinfeatures.
78461d06d6bSBaptiste DaroussinThe output may be incomplete and/or misformatted,
78561d06d6bSBaptiste Daroussinso using GNU troff instead of
78661d06d6bSBaptiste Daroussin.Nm
78761d06d6bSBaptiste Daroussinto process the file may be preferable.
78861d06d6bSBaptiste Daroussin.It Cm error
78961d06d6bSBaptiste DaroussinIndicates a risk of information loss or severe misformatting,
79061d06d6bSBaptiste Daroussinin most cases caused by serious syntax errors.
79161d06d6bSBaptiste Daroussin.It Cm warning
79261d06d6bSBaptiste DaroussinIndicates a risk that the information shown or its formatting
79361d06d6bSBaptiste Daroussinmay mismatch the author's intent in minor ways.
79461d06d6bSBaptiste DaroussinAdditionally, syntax errors are classified at least as warnings,
79561d06d6bSBaptiste Daroussineven if they do not usually cause misformatting.
79661d06d6bSBaptiste Daroussin.It Cm style
79761d06d6bSBaptiste DaroussinAn input file uses dubious or discouraged style.
79861d06d6bSBaptiste DaroussinThis is not a complaint about the syntax, and probably neither
79961d06d6bSBaptiste Daroussinformatting nor portability are in danger.
80061d06d6bSBaptiste DaroussinWhile great care is taken to avoid false positives on the higher
80161d06d6bSBaptiste Daroussinmessage levels, the
80261d06d6bSBaptiste Daroussin.Cm style
80361d06d6bSBaptiste Daroussinlevel tries to reduce the probability that issues go unnoticed,
80461d06d6bSBaptiste Daroussinso it may occasionally issue bogus suggestions.
80561d06d6bSBaptiste DaroussinPlease use your good judgement to decide whether any particular
80661d06d6bSBaptiste Daroussin.Cm style
80761d06d6bSBaptiste Daroussinsuggestion really justifies a change to the input file.
80861d06d6bSBaptiste Daroussin.It Cm base
80961d06d6bSBaptiste DaroussinA convention used in the base system of a specific operating system
81061d06d6bSBaptiste Daroussinis not adhered to.
81161d06d6bSBaptiste DaroussinThese are not markup mistakes, and neither the quality of formatting
81261d06d6bSBaptiste Daroussinnor portability are in danger.
81361d06d6bSBaptiste DaroussinMessages of the
81461d06d6bSBaptiste Daroussin.Cm base
81561d06d6bSBaptiste Daroussinlevel are printed with the more intuitive
81661d06d6bSBaptiste Daroussin.Cm style
81761d06d6bSBaptiste Daroussin.Ar level
81861d06d6bSBaptiste Daroussintag.
81961d06d6bSBaptiste Daroussin.El
82061d06d6bSBaptiste Daroussin.Pp
82161d06d6bSBaptiste DaroussinMessages of the
82261d06d6bSBaptiste Daroussin.Cm base ,
82361d06d6bSBaptiste Daroussin.Cm style ,
82461d06d6bSBaptiste Daroussin.Cm warning ,
82561d06d6bSBaptiste Daroussin.Cm error ,
82661d06d6bSBaptiste Daroussinand
82761d06d6bSBaptiste Daroussin.Cm unsupp
82861d06d6bSBaptiste Daroussinlevels except those about non-existent or unreadable input files
82961d06d6bSBaptiste Daroussinare hidden unless their level, or a lower level, is requested using a
83061d06d6bSBaptiste Daroussin.Fl W
83161d06d6bSBaptiste Daroussinoption or
83261d06d6bSBaptiste Daroussin.Fl T Cm lint
83361d06d6bSBaptiste Daroussinoutput mode.
83461d06d6bSBaptiste Daroussin.Pp
83561d06d6bSBaptiste DaroussinAs indicated below, all
83661d06d6bSBaptiste Daroussin.Cm base
83761d06d6bSBaptiste Daroussinand some
83861d06d6bSBaptiste Daroussin.Cm style
83961d06d6bSBaptiste Daroussinchecks are only performed if a specific operating system name occurs
84061d06d6bSBaptiste Daroussinin the arguments of the
84161d06d6bSBaptiste Daroussin.Fl W
84261d06d6bSBaptiste Daroussincommand line option, of the
84361d06d6bSBaptiste Daroussin.Ic \&Os
84461d06d6bSBaptiste Daroussinmacro, of the
84561d06d6bSBaptiste Daroussin.Fl Ios
84661d06d6bSBaptiste Daroussincommand line option, or, if neither are present, in the return value
84761d06d6bSBaptiste Daroussinof the
84861d06d6bSBaptiste Daroussin.Xr uname 3
84961d06d6bSBaptiste Daroussinfunction.
85061d06d6bSBaptiste Daroussin.Ss Conventions for base system manuals
85161d06d6bSBaptiste Daroussin.Bl -ohang
85261d06d6bSBaptiste Daroussin.It Sy "Mdocdate found"
85361d06d6bSBaptiste Daroussin.Pq mdoc , Nx
85461d06d6bSBaptiste DaroussinThe
85561d06d6bSBaptiste Daroussin.Ic \&Dd
85661d06d6bSBaptiste Daroussinmacro uses CVS
85761d06d6bSBaptiste Daroussin.Ic Mdocdate
85861d06d6bSBaptiste Daroussinkeyword substitution, which is not supported by the
85961d06d6bSBaptiste Daroussin.Nx
86061d06d6bSBaptiste Daroussinbase system.
86161d06d6bSBaptiste DaroussinConsider using the conventional
86261d06d6bSBaptiste Daroussin.Dq "Month dd, yyyy"
86361d06d6bSBaptiste Daroussinformat instead.
86461d06d6bSBaptiste Daroussin.It Sy "Mdocdate missing"
86561d06d6bSBaptiste Daroussin.Pq mdoc , Ox
86661d06d6bSBaptiste DaroussinThe
86761d06d6bSBaptiste Daroussin.Ic \&Dd
86861d06d6bSBaptiste Daroussinmacro does not use CVS
86961d06d6bSBaptiste Daroussin.Ic Mdocdate
87061d06d6bSBaptiste Daroussinkeyword substitution, but using it is conventionally expected in the
87161d06d6bSBaptiste Daroussin.Ox
87261d06d6bSBaptiste Daroussinbase system.
87361d06d6bSBaptiste Daroussin.It Sy "unknown architecture"
87461d06d6bSBaptiste Daroussin.Pq mdoc , Ox , Nx
87561d06d6bSBaptiste DaroussinThe third argument of the
87661d06d6bSBaptiste Daroussin.Ic \&Dt
87761d06d6bSBaptiste Daroussinmacro does not match any of the architectures this operating system
87861d06d6bSBaptiste Daroussinis running on.
87961d06d6bSBaptiste Daroussin.It Sy "operating system explicitly specified"
88061d06d6bSBaptiste Daroussin.Pq mdoc , Ox , Nx
88161d06d6bSBaptiste DaroussinThe
88261d06d6bSBaptiste Daroussin.Ic \&Os
88361d06d6bSBaptiste Daroussinmacro has an argument.
88461d06d6bSBaptiste DaroussinIn the base system, it is conventionally left blank.
88561d06d6bSBaptiste Daroussin.It Sy "RCS id missing"
88661d06d6bSBaptiste Daroussin.Pq Ox , Nx
88761d06d6bSBaptiste DaroussinThe manual page lacks the comment line with the RCS identifier
88861d06d6bSBaptiste Daroussingenerated by CVS
88961d06d6bSBaptiste Daroussin.Ic OpenBSD
89061d06d6bSBaptiste Daroussinor
89161d06d6bSBaptiste Daroussin.Ic NetBSD
89261d06d6bSBaptiste Daroussinkeyword substitution as conventionally used in these operating systems.
89361d06d6bSBaptiste Daroussin.It Sy "referenced manual not found"
89461d06d6bSBaptiste Daroussin.Pq mdoc
89561d06d6bSBaptiste DaroussinAn
89661d06d6bSBaptiste Daroussin.Ic \&Xr
89761d06d6bSBaptiste Daroussinmacro references a manual page that is not found in the base system.
89861d06d6bSBaptiste DaroussinThe path to look for base system manuals is configurable at compile
89961d06d6bSBaptiste Daroussintime and defaults to
90061d06d6bSBaptiste Daroussin.Pa /usr/share/man : /usr/X11R6/man .
90161d06d6bSBaptiste Daroussin.El
90261d06d6bSBaptiste Daroussin.Ss Style suggestions
90361d06d6bSBaptiste Daroussin.Bl -ohang
90461d06d6bSBaptiste Daroussin.It Sy "legacy man(7) date format"
90561d06d6bSBaptiste Daroussin.Pq mdoc
90661d06d6bSBaptiste DaroussinThe
90761d06d6bSBaptiste Daroussin.Ic \&Dd
90861d06d6bSBaptiste Daroussinmacro uses the legacy
90961d06d6bSBaptiste Daroussin.Xr man 7
91061d06d6bSBaptiste Daroussindate format
91161d06d6bSBaptiste Daroussin.Dq yyyy-dd-mm .
91261d06d6bSBaptiste DaroussinConsider using the conventional
91361d06d6bSBaptiste Daroussin.Xr mdoc 7
91461d06d6bSBaptiste Daroussindate format
91561d06d6bSBaptiste Daroussin.Dq "Month dd, yyyy"
91661d06d6bSBaptiste Daroussininstead.
91761d06d6bSBaptiste Daroussin.It Sy "normalizing date format to" : No ...
91861d06d6bSBaptiste Daroussin.Pq mdoc , man
91961d06d6bSBaptiste DaroussinThe
92061d06d6bSBaptiste Daroussin.Ic \&Dd
92161d06d6bSBaptiste Daroussinor
92261d06d6bSBaptiste Daroussin.Ic \&TH
92361d06d6bSBaptiste Daroussinmacro provides an abbreviated month name or a day number with a
92461d06d6bSBaptiste Daroussinleading zero.
92561d06d6bSBaptiste DaroussinIn the formatted output, the month name is written out in full
92661d06d6bSBaptiste Daroussinand the leading zero is omitted.
92761d06d6bSBaptiste Daroussin.It Sy "lower case character in document title"
92861d06d6bSBaptiste Daroussin.Pq mdoc , man
92961d06d6bSBaptiste DaroussinThe title is still used as given in the
93061d06d6bSBaptiste Daroussin.Ic \&Dt
93161d06d6bSBaptiste Daroussinor
93261d06d6bSBaptiste Daroussin.Ic \&TH
93361d06d6bSBaptiste Daroussinmacro.
93461d06d6bSBaptiste Daroussin.It Sy "duplicate RCS id"
93561d06d6bSBaptiste DaroussinA single manual page contains two copies of the RCS identifier for
93661d06d6bSBaptiste Daroussinthe same operating system.
93761d06d6bSBaptiste DaroussinConsider deleting the later instance and moving the first one up
93861d06d6bSBaptiste Daroussinto the top of the page.
93961d06d6bSBaptiste Daroussin.It Sy "possible typo in section name"
94061d06d6bSBaptiste Daroussin.Pq mdoc
94161d06d6bSBaptiste DaroussinFuzzy string matching revealed that the argument of an
94261d06d6bSBaptiste Daroussin.Ic \&Sh
94361d06d6bSBaptiste Daroussinmacro is similar, but not identical to a standard section name.
94461d06d6bSBaptiste Daroussin.It Sy "unterminated quoted argument"
94561d06d6bSBaptiste Daroussin.Pq roff
94661d06d6bSBaptiste DaroussinMacro arguments can be enclosed in double quote characters
94761d06d6bSBaptiste Daroussinsuch that space characters and macro names contained in the quoted
94861d06d6bSBaptiste Daroussinargument need not be escaped.
94961d06d6bSBaptiste DaroussinThe closing quote of the last argument of a macro can be omitted.
95061d06d6bSBaptiste DaroussinHowever, omitting it is not recommended because it makes the code
95161d06d6bSBaptiste Daroussinharder to read.
95261d06d6bSBaptiste Daroussin.It Sy "useless macro"
95361d06d6bSBaptiste Daroussin.Pq mdoc
95461d06d6bSBaptiste DaroussinA
95561d06d6bSBaptiste Daroussin.Ic \&Bt ,
95661d06d6bSBaptiste Daroussin.Ic \&Tn ,
95761d06d6bSBaptiste Daroussinor
95861d06d6bSBaptiste Daroussin.Ic \&Ud
95961d06d6bSBaptiste Daroussinmacro was found.
96061d06d6bSBaptiste DaroussinSimply delete it: it serves no useful purpose.
96161d06d6bSBaptiste Daroussin.It Sy "consider using OS macro"
96261d06d6bSBaptiste Daroussin.Pq mdoc
96361d06d6bSBaptiste DaroussinA string was found in plain text or in a
96461d06d6bSBaptiste Daroussin.Ic \&Bx
96561d06d6bSBaptiste Daroussinmacro that could be represented using
96661d06d6bSBaptiste Daroussin.Ic \&Ox ,
96761d06d6bSBaptiste Daroussin.Ic \&Nx ,
96861d06d6bSBaptiste Daroussin.Ic \&Fx ,
96961d06d6bSBaptiste Daroussinor
97061d06d6bSBaptiste Daroussin.Ic \&Dx .
97161d06d6bSBaptiste Daroussin.It Sy "errnos out of order"
97261d06d6bSBaptiste Daroussin.Pq mdoc, Nx
97361d06d6bSBaptiste DaroussinThe
97461d06d6bSBaptiste Daroussin.Ic \&Er
97561d06d6bSBaptiste Daroussinitems in a
97661d06d6bSBaptiste Daroussin.Ic \&Bl
97761d06d6bSBaptiste Daroussinlist are not in alphabetical order.
97861d06d6bSBaptiste Daroussin.It Sy "duplicate errno"
97961d06d6bSBaptiste Daroussin.Pq mdoc, Nx
98061d06d6bSBaptiste DaroussinA
98161d06d6bSBaptiste Daroussin.Ic \&Bl
98261d06d6bSBaptiste Daroussinlist contains two consecutive
98361d06d6bSBaptiste Daroussin.Ic \&It
98461d06d6bSBaptiste Daroussinentries describing the same
98561d06d6bSBaptiste Daroussin.Ic \&Er
98661d06d6bSBaptiste Daroussinnumber.
98761d06d6bSBaptiste Daroussin.It Sy "trailing delimiter"
98861d06d6bSBaptiste Daroussin.Pq mdoc
98961d06d6bSBaptiste DaroussinThe last argument of an
99061d06d6bSBaptiste Daroussin.Ic \&Ex , \&Fo , \&Nd , \&Nm , \&Os , \&Sh , \&Ss , \&St ,
99161d06d6bSBaptiste Daroussinor
99261d06d6bSBaptiste Daroussin.Ic \&Sx
99361d06d6bSBaptiste Daroussinmacro ends with a trailing delimiter.
99461d06d6bSBaptiste DaroussinThis is usually bad style and often indicates typos.
99561d06d6bSBaptiste DaroussinMost likely, the delimiter can be removed.
99661d06d6bSBaptiste Daroussin.It Sy "no blank before trailing delimiter"
99761d06d6bSBaptiste Daroussin.Pq mdoc
99861d06d6bSBaptiste DaroussinThe last argument of a macro that supports trailing delimiter
99961d06d6bSBaptiste Daroussinarguments is longer than one byte and ends with a trailing delimiter.
100061d06d6bSBaptiste DaroussinConsider inserting a blank such that the delimiter becomes a separate
100161d06d6bSBaptiste Daroussinargument, thus moving it out of the scope of the macro.
100261d06d6bSBaptiste Daroussin.It Sy "fill mode already enabled, skipping"
100361d06d6bSBaptiste Daroussin.Pq man
100461d06d6bSBaptiste DaroussinA
100561d06d6bSBaptiste Daroussin.Ic \&fi
100661d06d6bSBaptiste Daroussinrequest occurs even though the document is still in fill mode,
100761d06d6bSBaptiste Daroussinor already switched back to fill mode.
100861d06d6bSBaptiste DaroussinIt has no effect.
100961d06d6bSBaptiste Daroussin.It Sy "fill mode already disabled, skipping"
101061d06d6bSBaptiste Daroussin.Pq man
101161d06d6bSBaptiste DaroussinAn
101261d06d6bSBaptiste Daroussin.Ic \&nf
101361d06d6bSBaptiste Daroussinrequest occurs even though the document already switched to no-fill mode
101461d06d6bSBaptiste Daroussinand did not switch back to fill mode yet.
101561d06d6bSBaptiste DaroussinIt has no effect.
101661d06d6bSBaptiste Daroussin.It Sy "verbatim \(dq--\(dq, maybe consider using \e(em"
101761d06d6bSBaptiste Daroussin.Pq mdoc
101861d06d6bSBaptiste DaroussinEven though the ASCII output device renders an em-dash as
101961d06d6bSBaptiste Daroussin.Qq \-\- ,
102061d06d6bSBaptiste Daroussinthat is not a good way to write it in an input file
102161d06d6bSBaptiste Daroussinbecause it renders poorly on all other output devices.
102261d06d6bSBaptiste Daroussin.It Sy "function name without markup"
102361d06d6bSBaptiste Daroussin.Pq mdoc
102461d06d6bSBaptiste DaroussinA word followed by an empty pair of parentheses occurs on a text line.
102561d06d6bSBaptiste DaroussinConsider using an
102661d06d6bSBaptiste Daroussin.Ic \&Fn
102761d06d6bSBaptiste Daroussinor
102861d06d6bSBaptiste Daroussin.Ic \&Xr
102961d06d6bSBaptiste Daroussinmacro.
103061d06d6bSBaptiste Daroussin.It Sy "whitespace at end of input line"
103161d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
103261d06d6bSBaptiste DaroussinWhitespace at the end of input lines is almost never semantically
103361d06d6bSBaptiste Daroussinsignificant \(em but in the odd case where it might be, it is
103461d06d6bSBaptiste Daroussinextremely confusing when reviewing and maintaining documents.
103561d06d6bSBaptiste Daroussin.It Sy "bad comment style"
103661d06d6bSBaptiste Daroussin.Pq roff
103761d06d6bSBaptiste DaroussinComment lines start with a dot, a backslash, and a double-quote character.
103861d06d6bSBaptiste DaroussinThe
103961d06d6bSBaptiste Daroussin.Nm
104061d06d6bSBaptiste Daroussinutility treats the line as a comment line even without the backslash,
104161d06d6bSBaptiste Daroussinbut leaving out the backslash might not be portable.
104261d06d6bSBaptiste Daroussin.El
104361d06d6bSBaptiste Daroussin.Ss Warnings related to the document prologue
104461d06d6bSBaptiste Daroussin.Bl -ohang
104561d06d6bSBaptiste Daroussin.It Sy "missing manual title, using UNTITLED"
104661d06d6bSBaptiste Daroussin.Pq mdoc
104761d06d6bSBaptiste DaroussinA
104861d06d6bSBaptiste Daroussin.Ic \&Dt
104961d06d6bSBaptiste Daroussinmacro has no arguments, or there is no
105061d06d6bSBaptiste Daroussin.Ic \&Dt
105161d06d6bSBaptiste Daroussinmacro before the first non-prologue macro.
105261d06d6bSBaptiste Daroussin.It Sy "missing manual title, using \(dq\(dq"
105361d06d6bSBaptiste Daroussin.Pq man
105461d06d6bSBaptiste DaroussinThere is no
105561d06d6bSBaptiste Daroussin.Ic \&TH
105661d06d6bSBaptiste Daroussinmacro, or it has no arguments.
105761d06d6bSBaptiste Daroussin.It Sy "missing manual section, using \(dq\(dq"
105861d06d6bSBaptiste Daroussin.Pq mdoc , man
105961d06d6bSBaptiste DaroussinA
106061d06d6bSBaptiste Daroussin.Ic \&Dt
106161d06d6bSBaptiste Daroussinor
106261d06d6bSBaptiste Daroussin.Ic \&TH
106361d06d6bSBaptiste Daroussinmacro lacks the mandatory section argument.
106461d06d6bSBaptiste Daroussin.It Sy "unknown manual section"
106561d06d6bSBaptiste Daroussin.Pq mdoc
106661d06d6bSBaptiste DaroussinThe section number in a
106761d06d6bSBaptiste Daroussin.Ic \&Dt
106861d06d6bSBaptiste Daroussinline is invalid, but still used.
106961d06d6bSBaptiste Daroussin.It Sy "missing date, using today's date"
107061d06d6bSBaptiste Daroussin.Pq mdoc, man
107161d06d6bSBaptiste DaroussinThe document was parsed as
107261d06d6bSBaptiste Daroussin.Xr mdoc 7
107361d06d6bSBaptiste Daroussinand it has no
107461d06d6bSBaptiste Daroussin.Ic \&Dd
107561d06d6bSBaptiste Daroussinmacro, or the
107661d06d6bSBaptiste Daroussin.Ic \&Dd
107761d06d6bSBaptiste Daroussinmacro has no arguments or only empty arguments;
107861d06d6bSBaptiste Daroussinor the document was parsed as
107961d06d6bSBaptiste Daroussin.Xr man 7
108061d06d6bSBaptiste Daroussinand it has no
108161d06d6bSBaptiste Daroussin.Ic \&TH
108261d06d6bSBaptiste Daroussinmacro, or the
108361d06d6bSBaptiste Daroussin.Ic \&TH
108461d06d6bSBaptiste Daroussinmacro has less than three arguments or its third argument is empty.
108561d06d6bSBaptiste Daroussin.It Sy "cannot parse date, using it verbatim"
108661d06d6bSBaptiste Daroussin.Pq mdoc , man
108761d06d6bSBaptiste DaroussinThe date given in a
108861d06d6bSBaptiste Daroussin.Ic \&Dd
108961d06d6bSBaptiste Daroussinor
109061d06d6bSBaptiste Daroussin.Ic \&TH
109161d06d6bSBaptiste Daroussinmacro does not follow the conventional format.
109261d06d6bSBaptiste Daroussin.It Sy "date in the future, using it anyway"
109361d06d6bSBaptiste Daroussin.Pq mdoc , man
109461d06d6bSBaptiste DaroussinThe date given in a
109561d06d6bSBaptiste Daroussin.Ic \&Dd
109661d06d6bSBaptiste Daroussinor
109761d06d6bSBaptiste Daroussin.Ic \&TH
109861d06d6bSBaptiste Daroussinmacro is more than a day ahead of the current system
109961d06d6bSBaptiste Daroussin.Xr time 3 .
110061d06d6bSBaptiste Daroussin.It Sy "missing Os macro, using \(dq\(dq"
110161d06d6bSBaptiste Daroussin.Pq mdoc
110261d06d6bSBaptiste DaroussinThe default or current system is not shown in this case.
110361d06d6bSBaptiste Daroussin.It Sy "late prologue macro"
110461d06d6bSBaptiste Daroussin.Pq mdoc
110561d06d6bSBaptiste DaroussinA
110661d06d6bSBaptiste Daroussin.Ic \&Dd
110761d06d6bSBaptiste Daroussinor
110861d06d6bSBaptiste Daroussin.Ic \&Os
110961d06d6bSBaptiste Daroussinmacro occurs after some non-prologue macro, but still takes effect.
111061d06d6bSBaptiste Daroussin.It Sy "prologue macros out of order"
111161d06d6bSBaptiste Daroussin.Pq mdoc
111261d06d6bSBaptiste DaroussinThe prologue macros are not given in the conventional order
111361d06d6bSBaptiste Daroussin.Ic \&Dd ,
111461d06d6bSBaptiste Daroussin.Ic \&Dt ,
111561d06d6bSBaptiste Daroussin.Ic \&Os .
111661d06d6bSBaptiste DaroussinAll three macros are used even when given in another order.
111761d06d6bSBaptiste Daroussin.El
111861d06d6bSBaptiste Daroussin.Ss Warnings regarding document structure
111961d06d6bSBaptiste Daroussin.Bl -ohang
112061d06d6bSBaptiste Daroussin.It Sy ".so is fragile, better use ln(1)"
112161d06d6bSBaptiste Daroussin.Pq roff
112261d06d6bSBaptiste DaroussinIncluding files only works when the parser program runs with the correct
112361d06d6bSBaptiste Daroussincurrent working directory.
112461d06d6bSBaptiste Daroussin.It Sy "no document body"
112561d06d6bSBaptiste Daroussin.Pq mdoc , man
112661d06d6bSBaptiste DaroussinThe document body contains neither text nor macros.
112761d06d6bSBaptiste DaroussinAn empty document is shown, consisting only of a header and a footer line.
112861d06d6bSBaptiste Daroussin.It Sy "content before first section header"
112961d06d6bSBaptiste Daroussin.Pq mdoc , man
113061d06d6bSBaptiste DaroussinSome macros or text precede the first
113161d06d6bSBaptiste Daroussin.Ic \&Sh
113261d06d6bSBaptiste Daroussinor
113361d06d6bSBaptiste Daroussin.Ic \&SH
113461d06d6bSBaptiste Daroussinsection header.
113561d06d6bSBaptiste DaroussinThe offending macros and text are parsed and added to the top level
113661d06d6bSBaptiste Daroussinof the syntax tree, outside any section block.
113761d06d6bSBaptiste Daroussin.It Sy "first section is not NAME"
113861d06d6bSBaptiste Daroussin.Pq mdoc
113961d06d6bSBaptiste DaroussinThe argument of the first
114061d06d6bSBaptiste Daroussin.Ic \&Sh
114161d06d6bSBaptiste Daroussinmacro is not
114261d06d6bSBaptiste Daroussin.Sq NAME .
114361d06d6bSBaptiste DaroussinThis may confuse
114461d06d6bSBaptiste Daroussin.Xr makewhatis 8
114561d06d6bSBaptiste Daroussinand
114661d06d6bSBaptiste Daroussin.Xr apropos 1 .
114761d06d6bSBaptiste Daroussin.It Sy "NAME section without Nm before Nd"
114861d06d6bSBaptiste Daroussin.Pq mdoc
114961d06d6bSBaptiste DaroussinThe NAME section does not contain any
115061d06d6bSBaptiste Daroussin.Ic \&Nm
115161d06d6bSBaptiste Daroussinchild macro before the first
115261d06d6bSBaptiste Daroussin.Ic \&Nd
115361d06d6bSBaptiste Daroussinmacro.
115461d06d6bSBaptiste Daroussin.It Sy "NAME section without description"
115561d06d6bSBaptiste Daroussin.Pq mdoc
115661d06d6bSBaptiste DaroussinThe NAME section lacks the mandatory
115761d06d6bSBaptiste Daroussin.Ic \&Nd
115861d06d6bSBaptiste Daroussinchild macro.
115961d06d6bSBaptiste Daroussin.It Sy "description not at the end of NAME"
116061d06d6bSBaptiste Daroussin.Pq mdoc
116161d06d6bSBaptiste DaroussinThe NAME section does contain an
116261d06d6bSBaptiste Daroussin.Ic \&Nd
116361d06d6bSBaptiste Daroussinchild macro, but other content follows it.
116461d06d6bSBaptiste Daroussin.It Sy "bad NAME section content"
116561d06d6bSBaptiste Daroussin.Pq mdoc
116661d06d6bSBaptiste DaroussinThe NAME section contains plain text or macros other than
116761d06d6bSBaptiste Daroussin.Ic \&Nm
116861d06d6bSBaptiste Daroussinand
116961d06d6bSBaptiste Daroussin.Ic \&Nd .
117061d06d6bSBaptiste Daroussin.It Sy "missing comma before name"
117161d06d6bSBaptiste Daroussin.Pq mdoc
117261d06d6bSBaptiste DaroussinThe NAME section contains an
117361d06d6bSBaptiste Daroussin.Ic \&Nm
117461d06d6bSBaptiste Daroussinmacro that is neither the first one nor preceded by a comma.
117561d06d6bSBaptiste Daroussin.It Sy "missing description line, using \(dq\(dq"
117661d06d6bSBaptiste Daroussin.Pq mdoc
117761d06d6bSBaptiste DaroussinThe
117861d06d6bSBaptiste Daroussin.Ic \&Nd
117961d06d6bSBaptiste Daroussinmacro lacks the required argument.
118061d06d6bSBaptiste DaroussinThe title line of the manual will end after the dash.
118161d06d6bSBaptiste Daroussin.It Sy "description line outside NAME section"
118261d06d6bSBaptiste Daroussin.Pq mdoc
118361d06d6bSBaptiste DaroussinAn
118461d06d6bSBaptiste Daroussin.Ic \&Nd
118561d06d6bSBaptiste Daroussinmacro appears outside the NAME section.
118661d06d6bSBaptiste DaroussinThe arguments are printed anyway and the following text is used for
118761d06d6bSBaptiste Daroussin.Xr apropos 1 ,
118861d06d6bSBaptiste Daroussinbut none of that behaviour is portable.
118961d06d6bSBaptiste Daroussin.It Sy "sections out of conventional order"
119061d06d6bSBaptiste Daroussin.Pq mdoc
119161d06d6bSBaptiste DaroussinA standard section occurs after another section it usually precedes.
119261d06d6bSBaptiste DaroussinAll section titles are used as given,
119361d06d6bSBaptiste Daroussinand the order of sections is not changed.
119461d06d6bSBaptiste Daroussin.It Sy "duplicate section title"
119561d06d6bSBaptiste Daroussin.Pq mdoc
119661d06d6bSBaptiste DaroussinThe same standard section title occurs more than once.
119761d06d6bSBaptiste Daroussin.It Sy "unexpected section"
119861d06d6bSBaptiste Daroussin.Pq mdoc
119961d06d6bSBaptiste DaroussinA standard section header occurs in a section of the manual
120061d06d6bSBaptiste Daroussinwhere it normally isn't useful.
120161d06d6bSBaptiste Daroussin.It Sy "cross reference to self"
120261d06d6bSBaptiste Daroussin.Pq mdoc
120361d06d6bSBaptiste DaroussinAn
120461d06d6bSBaptiste Daroussin.Ic \&Xr
120561d06d6bSBaptiste Daroussinmacro refers to a name and section matching the section of the present
120661d06d6bSBaptiste Daroussinmanual page and a name mentioned in an
120761d06d6bSBaptiste Daroussin.Ic \&Nm
120861d06d6bSBaptiste Daroussinmacro in the NAME or SYNOPSIS section, or in an
120961d06d6bSBaptiste Daroussin.Ic \&Fn
121061d06d6bSBaptiste Daroussinor
121161d06d6bSBaptiste Daroussin.Ic \&Fo
121261d06d6bSBaptiste Daroussinmacro in the SYNOPSIS.
121361d06d6bSBaptiste DaroussinConsider using
121461d06d6bSBaptiste Daroussin.Ic \&Nm
121561d06d6bSBaptiste Daroussinor
121661d06d6bSBaptiste Daroussin.Ic \&Fn
121761d06d6bSBaptiste Daroussininstead of
121861d06d6bSBaptiste Daroussin.Ic \&Xr .
121961d06d6bSBaptiste Daroussin.It Sy "unusual Xr order"
122061d06d6bSBaptiste Daroussin.Pq mdoc
122161d06d6bSBaptiste DaroussinIn the SEE ALSO section, an
122261d06d6bSBaptiste Daroussin.Ic \&Xr
122361d06d6bSBaptiste Daroussinmacro with a lower section number follows one with a higher number,
122461d06d6bSBaptiste Daroussinor two
122561d06d6bSBaptiste Daroussin.Ic \&Xr
122661d06d6bSBaptiste Daroussinmacros referring to the same section are out of alphabetical order.
122761d06d6bSBaptiste Daroussin.It Sy "unusual Xr punctuation"
122861d06d6bSBaptiste Daroussin.Pq mdoc
122961d06d6bSBaptiste DaroussinIn the SEE ALSO section, punctuation between two
123061d06d6bSBaptiste Daroussin.Ic \&Xr
123161d06d6bSBaptiste Daroussinmacros differs from a single comma, or there is trailing punctuation
123261d06d6bSBaptiste Daroussinafter the last
123361d06d6bSBaptiste Daroussin.Ic \&Xr
123461d06d6bSBaptiste Daroussinmacro.
123561d06d6bSBaptiste Daroussin.It Sy "AUTHORS section without An macro"
123661d06d6bSBaptiste Daroussin.Pq mdoc
123761d06d6bSBaptiste DaroussinAn AUTHORS sections contains no
123861d06d6bSBaptiste Daroussin.Ic \&An
123961d06d6bSBaptiste Daroussinmacros, or only empty ones.
124061d06d6bSBaptiste DaroussinProbably, there are author names lacking markup.
124161d06d6bSBaptiste Daroussin.El
124261d06d6bSBaptiste Daroussin.Ss "Warnings related to macros and nesting"
124361d06d6bSBaptiste Daroussin.Bl -ohang
124461d06d6bSBaptiste Daroussin.It Sy "obsolete macro"
124561d06d6bSBaptiste Daroussin.Pq mdoc
124661d06d6bSBaptiste DaroussinSee the
124761d06d6bSBaptiste Daroussin.Xr mdoc 7
124861d06d6bSBaptiste Daroussinmanual for replacements.
124961d06d6bSBaptiste Daroussin.It Sy "macro neither callable nor escaped"
125061d06d6bSBaptiste Daroussin.Pq mdoc
125161d06d6bSBaptiste DaroussinThe name of a macro that is not callable appears on a macro line.
125261d06d6bSBaptiste DaroussinIt is printed verbatim.
125361d06d6bSBaptiste DaroussinIf the intention is to call it, move it to its own input line;
125461d06d6bSBaptiste Daroussinotherwise, escape it by prepending
125561d06d6bSBaptiste Daroussin.Sq \e& .
125661d06d6bSBaptiste Daroussin.It Sy "skipping paragraph macro"
125761d06d6bSBaptiste DaroussinIn
125861d06d6bSBaptiste Daroussin.Xr mdoc 7
125961d06d6bSBaptiste Daroussindocuments, this happens
126061d06d6bSBaptiste Daroussin.Bl -dash -compact
126161d06d6bSBaptiste Daroussin.It
126261d06d6bSBaptiste Daroussinat the beginning and end of sections and subsections
126361d06d6bSBaptiste Daroussin.It
126461d06d6bSBaptiste Daroussinright before non-compact lists and displays
126561d06d6bSBaptiste Daroussin.It
126661d06d6bSBaptiste Daroussinat the end of items in non-column, non-compact lists
126761d06d6bSBaptiste Daroussin.It
126861d06d6bSBaptiste Daroussinand for multiple consecutive paragraph macros.
126961d06d6bSBaptiste Daroussin.El
127061d06d6bSBaptiste DaroussinIn
127161d06d6bSBaptiste Daroussin.Xr man 7
127261d06d6bSBaptiste Daroussindocuments, it happens
127361d06d6bSBaptiste Daroussin.Bl -dash -compact
127461d06d6bSBaptiste Daroussin.It
127561d06d6bSBaptiste Daroussinfor empty
127661d06d6bSBaptiste Daroussin.Ic \&P ,
127761d06d6bSBaptiste Daroussin.Ic \&PP ,
127861d06d6bSBaptiste Daroussinand
127961d06d6bSBaptiste Daroussin.Ic \&LP
128061d06d6bSBaptiste Daroussinmacros
128161d06d6bSBaptiste Daroussin.It
128261d06d6bSBaptiste Daroussinfor
128361d06d6bSBaptiste Daroussin.Ic \&IP
128461d06d6bSBaptiste Daroussinmacros having neither head nor body arguments
128561d06d6bSBaptiste Daroussin.It
128661d06d6bSBaptiste Daroussinfor
128761d06d6bSBaptiste Daroussin.Ic \&br
128861d06d6bSBaptiste Daroussinor
128961d06d6bSBaptiste Daroussin.Ic \&sp
129061d06d6bSBaptiste Daroussinright after
129161d06d6bSBaptiste Daroussin.Ic \&SH
129261d06d6bSBaptiste Daroussinor
129361d06d6bSBaptiste Daroussin.Ic \&SS
129461d06d6bSBaptiste Daroussin.El
129561d06d6bSBaptiste Daroussin.It Sy "moving paragraph macro out of list"
129661d06d6bSBaptiste Daroussin.Pq mdoc
129761d06d6bSBaptiste DaroussinA list item in a
129861d06d6bSBaptiste Daroussin.Ic \&Bl
129961d06d6bSBaptiste Daroussinlist contains a trailing paragraph macro.
130061d06d6bSBaptiste DaroussinThe paragraph macro is moved after the end of the list.
130161d06d6bSBaptiste Daroussin.It Sy "skipping no-space macro"
130261d06d6bSBaptiste Daroussin.Pq mdoc
130361d06d6bSBaptiste DaroussinAn input line begins with an
130461d06d6bSBaptiste Daroussin.Ic \&Ns
130561d06d6bSBaptiste Daroussinmacro, or the next argument after an
130661d06d6bSBaptiste Daroussin.Ic \&Ns
130761d06d6bSBaptiste Daroussinmacro is an isolated closing delimiter.
130861d06d6bSBaptiste DaroussinThe macro is ignored.
130961d06d6bSBaptiste Daroussin.It Sy "blocks badly nested"
131061d06d6bSBaptiste Daroussin.Pq mdoc
131161d06d6bSBaptiste DaroussinIf two blocks intersect, one should completely contain the other.
131261d06d6bSBaptiste DaroussinOtherwise, rendered output is likely to look strange in any output
131361d06d6bSBaptiste Daroussinformat, and rendering in SGML-based output formats is likely to be
131461d06d6bSBaptiste Daroussinoutright wrong because such languages do not support badly nested
131561d06d6bSBaptiste Daroussinblocks at all.
131661d06d6bSBaptiste DaroussinTypical examples of badly nested blocks are
131761d06d6bSBaptiste Daroussin.Qq Ic \&Ao \&Bo \&Ac \&Bc
131861d06d6bSBaptiste Daroussinand
131961d06d6bSBaptiste Daroussin.Qq Ic \&Ao \&Bq \&Ac .
132061d06d6bSBaptiste DaroussinIn these examples,
132161d06d6bSBaptiste Daroussin.Ic \&Ac
132261d06d6bSBaptiste Daroussinbreaks
132361d06d6bSBaptiste Daroussin.Ic \&Bo
132461d06d6bSBaptiste Daroussinand
132561d06d6bSBaptiste Daroussin.Ic \&Bq ,
132661d06d6bSBaptiste Daroussinrespectively.
132761d06d6bSBaptiste Daroussin.It Sy "nested displays are not portable"
132861d06d6bSBaptiste Daroussin.Pq mdoc
132961d06d6bSBaptiste DaroussinA
133061d06d6bSBaptiste Daroussin.Ic \&Bd ,
133161d06d6bSBaptiste Daroussin.Ic \&D1 ,
133261d06d6bSBaptiste Daroussinor
133361d06d6bSBaptiste Daroussin.Ic \&Dl
133461d06d6bSBaptiste Daroussindisplay occurs nested inside another
133561d06d6bSBaptiste Daroussin.Ic \&Bd
133661d06d6bSBaptiste Daroussindisplay.
133761d06d6bSBaptiste DaroussinThis works with
133861d06d6bSBaptiste Daroussin.Nm ,
133961d06d6bSBaptiste Daroussinbut fails with most other implementations.
134061d06d6bSBaptiste Daroussin.It Sy "moving content out of list"
134161d06d6bSBaptiste Daroussin.Pq mdoc
134261d06d6bSBaptiste DaroussinA
134361d06d6bSBaptiste Daroussin.Ic \&Bl
134461d06d6bSBaptiste Daroussinlist block contains text or macros before the first
134561d06d6bSBaptiste Daroussin.Ic \&It
134661d06d6bSBaptiste Daroussinmacro.
134761d06d6bSBaptiste DaroussinThe offending children are moved before the beginning of the list.
134861d06d6bSBaptiste Daroussin.It Sy "first macro on line"
134961d06d6bSBaptiste DaroussinInside a
135061d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
135161d06d6bSBaptiste Daroussinlist, a
135261d06d6bSBaptiste Daroussin.Ic \&Ta
135361d06d6bSBaptiste Daroussinmacro occurs as the first macro on a line, which is not portable.
135461d06d6bSBaptiste Daroussin.It Sy "line scope broken"
135561d06d6bSBaptiste Daroussin.Pq man
135661d06d6bSBaptiste DaroussinWhile parsing the next-line scope of the previous macro,
135761d06d6bSBaptiste Daroussinanother macro is found that prematurely terminates the previous one.
135861d06d6bSBaptiste DaroussinThe previous, interrupted macro is deleted from the parse tree.
135961d06d6bSBaptiste Daroussin.El
136061d06d6bSBaptiste Daroussin.Ss "Warnings related to missing arguments"
136161d06d6bSBaptiste Daroussin.Bl -ohang
136261d06d6bSBaptiste Daroussin.It Sy "skipping empty request"
136361d06d6bSBaptiste Daroussin.Pq roff , eqn
136461d06d6bSBaptiste DaroussinThe macro name is missing from a macro definition request,
136561d06d6bSBaptiste Daroussinor an
136661d06d6bSBaptiste Daroussin.Xr eqn 7
136761d06d6bSBaptiste Daroussincontrol statement or operation keyword lacks its required argument.
136861d06d6bSBaptiste Daroussin.It Sy "conditional request controls empty scope"
136961d06d6bSBaptiste Daroussin.Pq roff
137061d06d6bSBaptiste DaroussinA conditional request is only useful if any of the following
137161d06d6bSBaptiste Daroussinfollows it on the same logical input line:
137261d06d6bSBaptiste Daroussin.Bl -dash -compact
137361d06d6bSBaptiste Daroussin.It
137461d06d6bSBaptiste DaroussinThe
137561d06d6bSBaptiste Daroussin.Sq \e{
137661d06d6bSBaptiste Daroussinkeyword to open a multi-line scope.
137761d06d6bSBaptiste Daroussin.It
137861d06d6bSBaptiste DaroussinA request or macro or some text, resulting in a single-line scope.
137961d06d6bSBaptiste Daroussin.It
138061d06d6bSBaptiste DaroussinThe immediate end of the logical line without any intervening whitespace,
138161d06d6bSBaptiste Daroussinresulting in next-line scope.
138261d06d6bSBaptiste Daroussin.El
138361d06d6bSBaptiste DaroussinHere, a conditional request is followed by trailing whitespace only,
138461d06d6bSBaptiste Daroussinand there is no other content on its logical input line.
138561d06d6bSBaptiste DaroussinNote that it doesn't matter whether the logical input line is split
138661d06d6bSBaptiste Daroussinacross multiple physical input lines using
138761d06d6bSBaptiste Daroussin.Sq \e
138861d06d6bSBaptiste Daroussinline continuation characters.
138961d06d6bSBaptiste DaroussinThis is one of the rare cases
139061d06d6bSBaptiste Daroussinwhere trailing whitespace is syntactically significant.
139161d06d6bSBaptiste DaroussinThe conditional request controls a scope containing whitespace only,
139261d06d6bSBaptiste Daroussinso it is unlikely to have a significant effect,
139361d06d6bSBaptiste Daroussinexcept that it may control a following
139461d06d6bSBaptiste Daroussin.Ic \&el
139561d06d6bSBaptiste Daroussinclause.
139661d06d6bSBaptiste Daroussin.It Sy "skipping empty macro"
139761d06d6bSBaptiste Daroussin.Pq mdoc
139861d06d6bSBaptiste DaroussinThe indicated macro has no arguments and hence no effect.
139961d06d6bSBaptiste Daroussin.It Sy "empty block"
140061d06d6bSBaptiste Daroussin.Pq mdoc , man
140161d06d6bSBaptiste DaroussinA
140261d06d6bSBaptiste Daroussin.Ic \&Bd ,
140361d06d6bSBaptiste Daroussin.Ic \&Bk ,
140461d06d6bSBaptiste Daroussin.Ic \&Bl ,
140561d06d6bSBaptiste Daroussin.Ic \&D1 ,
140661d06d6bSBaptiste Daroussin.Ic \&Dl ,
140761d06d6bSBaptiste Daroussin.Ic \&MT ,
140861d06d6bSBaptiste Daroussin.Ic \&RS ,
140961d06d6bSBaptiste Daroussinor
141061d06d6bSBaptiste Daroussin.Ic \&UR
141161d06d6bSBaptiste Daroussinblock contains nothing in its body and will produce no output.
141261d06d6bSBaptiste Daroussin.It Sy "empty argument, using 0n"
141361d06d6bSBaptiste Daroussin.Pq mdoc
141461d06d6bSBaptiste DaroussinThe required width is missing after
141561d06d6bSBaptiste Daroussin.Ic \&Bd
141661d06d6bSBaptiste Daroussinor
141761d06d6bSBaptiste Daroussin.Ic \&Bl
141861d06d6bSBaptiste Daroussin.Fl offset
141961d06d6bSBaptiste Daroussinor
142061d06d6bSBaptiste Daroussin.Fl width .
142161d06d6bSBaptiste Daroussin.It Sy "missing display type, using -ragged"
142261d06d6bSBaptiste Daroussin.Pq mdoc
142361d06d6bSBaptiste DaroussinThe
142461d06d6bSBaptiste Daroussin.Ic \&Bd
142561d06d6bSBaptiste Daroussinmacro is invoked without the required display type.
142661d06d6bSBaptiste Daroussin.It Sy "list type is not the first argument"
142761d06d6bSBaptiste Daroussin.Pq mdoc
142861d06d6bSBaptiste DaroussinIn a
142961d06d6bSBaptiste Daroussin.Ic \&Bl
143061d06d6bSBaptiste Daroussinmacro, at least one other argument precedes the type argument.
143161d06d6bSBaptiste DaroussinThe
143261d06d6bSBaptiste Daroussin.Nm
143361d06d6bSBaptiste Daroussinutility copes with any argument order, but some other
143461d06d6bSBaptiste Daroussin.Xr mdoc 7
143561d06d6bSBaptiste Daroussinimplementations do not.
143661d06d6bSBaptiste Daroussin.It Sy "missing -width in -tag list, using 8n"
143761d06d6bSBaptiste Daroussin.Pq mdoc
143861d06d6bSBaptiste DaroussinEvery
143961d06d6bSBaptiste Daroussin.Ic \&Bl
144061d06d6bSBaptiste Daroussinmacro having the
144161d06d6bSBaptiste Daroussin.Fl tag
144261d06d6bSBaptiste Daroussinargument requires
144361d06d6bSBaptiste Daroussin.Fl width ,
144461d06d6bSBaptiste Daroussintoo.
144561d06d6bSBaptiste Daroussin.It Sy "missing utility name, using \(dq\(dq"
144661d06d6bSBaptiste Daroussin.Pq mdoc
144761d06d6bSBaptiste DaroussinThe
144861d06d6bSBaptiste Daroussin.Ic \&Ex Fl std
144961d06d6bSBaptiste Daroussinmacro is called without an argument before
145061d06d6bSBaptiste Daroussin.Ic \&Nm
145161d06d6bSBaptiste Daroussinhas first been called with an argument.
145261d06d6bSBaptiste Daroussin.It Sy "missing function name, using \(dq\(dq"
145361d06d6bSBaptiste Daroussin.Pq mdoc
145461d06d6bSBaptiste DaroussinThe
145561d06d6bSBaptiste Daroussin.Ic \&Fo
145661d06d6bSBaptiste Daroussinmacro is called without an argument.
145761d06d6bSBaptiste DaroussinNo function name is printed.
145861d06d6bSBaptiste Daroussin.It Sy "empty head in list item"
145961d06d6bSBaptiste Daroussin.Pq mdoc
146061d06d6bSBaptiste DaroussinIn a
146161d06d6bSBaptiste Daroussin.Ic \&Bl
146261d06d6bSBaptiste Daroussin.Fl diag ,
146361d06d6bSBaptiste Daroussin.Fl hang ,
146461d06d6bSBaptiste Daroussin.Fl inset ,
146561d06d6bSBaptiste Daroussin.Fl ohang ,
146661d06d6bSBaptiste Daroussinor
146761d06d6bSBaptiste Daroussin.Fl tag
146861d06d6bSBaptiste Daroussinlist, an
146961d06d6bSBaptiste Daroussin.Ic \&It
147061d06d6bSBaptiste Daroussinmacro lacks the required argument.
147161d06d6bSBaptiste DaroussinThe item head is left empty.
147261d06d6bSBaptiste Daroussin.It Sy "empty list item"
147361d06d6bSBaptiste Daroussin.Pq mdoc
147461d06d6bSBaptiste DaroussinIn a
147561d06d6bSBaptiste Daroussin.Ic \&Bl
147661d06d6bSBaptiste Daroussin.Fl bullet ,
147761d06d6bSBaptiste Daroussin.Fl dash ,
147861d06d6bSBaptiste Daroussin.Fl enum ,
147961d06d6bSBaptiste Daroussinor
148061d06d6bSBaptiste Daroussin.Fl hyphen
148161d06d6bSBaptiste Daroussinlist, an
148261d06d6bSBaptiste Daroussin.Ic \&It
148361d06d6bSBaptiste Daroussinblock is empty.
148461d06d6bSBaptiste DaroussinAn empty list item is shown.
148561d06d6bSBaptiste Daroussin.It Sy "missing argument, using next line"
148661d06d6bSBaptiste Daroussin.Pq mdoc
148761d06d6bSBaptiste DaroussinAn
148861d06d6bSBaptiste Daroussin.Ic \&It
148961d06d6bSBaptiste Daroussinmacro in a
149061d06d6bSBaptiste Daroussin.Ic \&Bd Fl column
149161d06d6bSBaptiste Daroussinlist has no arguments.
149261d06d6bSBaptiste DaroussinWhile
149361d06d6bSBaptiste Daroussin.Nm
149461d06d6bSBaptiste Daroussinuses the text or macros of the following line, if any, for the cell,
149561d06d6bSBaptiste Daroussinother formatters may misformat the list.
149661d06d6bSBaptiste Daroussin.It Sy "missing font type, using \efR"
149761d06d6bSBaptiste Daroussin.Pq mdoc
149861d06d6bSBaptiste DaroussinA
149961d06d6bSBaptiste Daroussin.Ic \&Bf
150061d06d6bSBaptiste Daroussinmacro has no argument.
150161d06d6bSBaptiste DaroussinIt switches to the default font.
150261d06d6bSBaptiste Daroussin.It Sy "unknown font type, using \efR"
150361d06d6bSBaptiste Daroussin.Pq mdoc
150461d06d6bSBaptiste DaroussinThe
150561d06d6bSBaptiste Daroussin.Ic \&Bf
150661d06d6bSBaptiste Daroussinargument is invalid.
150761d06d6bSBaptiste DaroussinThe default font is used instead.
150861d06d6bSBaptiste Daroussin.It Sy "nothing follows prefix"
150961d06d6bSBaptiste Daroussin.Pq mdoc
151061d06d6bSBaptiste DaroussinA
151161d06d6bSBaptiste Daroussin.Ic \&Pf
151261d06d6bSBaptiste Daroussinmacro has no argument, or only one argument and no macro follows
151361d06d6bSBaptiste Daroussinon the same input line.
151461d06d6bSBaptiste DaroussinThis defeats its purpose; in particular, spacing is not suppressed
151561d06d6bSBaptiste Daroussinbefore the text or macros following on the next input line.
151661d06d6bSBaptiste Daroussin.It Sy "empty reference block"
151761d06d6bSBaptiste Daroussin.Pq mdoc
151861d06d6bSBaptiste DaroussinAn
151961d06d6bSBaptiste Daroussin.Ic \&Rs
152061d06d6bSBaptiste Daroussinmacro is immediately followed by an
152161d06d6bSBaptiste Daroussin.Ic \&Re
152261d06d6bSBaptiste Daroussinmacro on the next input line.
152361d06d6bSBaptiste DaroussinSuch an empty block does not produce any output.
152461d06d6bSBaptiste Daroussin.It Sy "missing section argument"
152561d06d6bSBaptiste Daroussin.Pq mdoc
152661d06d6bSBaptiste DaroussinAn
152761d06d6bSBaptiste Daroussin.Ic \&Xr
152861d06d6bSBaptiste Daroussinmacro lacks its second, section number argument.
152961d06d6bSBaptiste DaroussinThe first argument, i.e. the name, is printed, but without subsequent
153061d06d6bSBaptiste Daroussinparentheses.
153161d06d6bSBaptiste Daroussin.It Sy "missing -std argument, adding it"
153261d06d6bSBaptiste Daroussin.Pq mdoc
153361d06d6bSBaptiste DaroussinAn
153461d06d6bSBaptiste Daroussin.Ic \&Ex
153561d06d6bSBaptiste Daroussinor
153661d06d6bSBaptiste Daroussin.Ic \&Rv
153761d06d6bSBaptiste Daroussinmacro lacks the required
153861d06d6bSBaptiste Daroussin.Fl std
153961d06d6bSBaptiste Daroussinargument.
154061d06d6bSBaptiste DaroussinThe
154161d06d6bSBaptiste Daroussin.Nm
154261d06d6bSBaptiste Daroussinutility assumes
154361d06d6bSBaptiste Daroussin.Fl std
154461d06d6bSBaptiste Daroussineven when it is not specified, but other implementations may not.
154561d06d6bSBaptiste Daroussin.It Sy "missing option string, using \(dq\(dq"
154661d06d6bSBaptiste Daroussin.Pq man
154761d06d6bSBaptiste DaroussinThe
154861d06d6bSBaptiste Daroussin.Ic \&OP
154961d06d6bSBaptiste Daroussinmacro is invoked without any argument.
155061d06d6bSBaptiste DaroussinAn empty pair of square brackets is shown.
155161d06d6bSBaptiste Daroussin.It Sy "missing resource identifier, using \(dq\(dq"
155261d06d6bSBaptiste Daroussin.Pq man
155361d06d6bSBaptiste DaroussinThe
155461d06d6bSBaptiste Daroussin.Ic \&MT
155561d06d6bSBaptiste Daroussinor
155661d06d6bSBaptiste Daroussin.Ic \&UR
155761d06d6bSBaptiste Daroussinmacro is invoked without any argument.
155861d06d6bSBaptiste DaroussinAn empty pair of angle brackets is shown.
155961d06d6bSBaptiste Daroussin.It Sy "missing eqn box, using \(dq\(dq"
156061d06d6bSBaptiste Daroussin.Pq eqn
156161d06d6bSBaptiste DaroussinA diacritic mark or a binary operator is found,
156261d06d6bSBaptiste Daroussinbut there is nothing to the left of it.
156361d06d6bSBaptiste DaroussinAn empty box is inserted.
156461d06d6bSBaptiste Daroussin.El
156561d06d6bSBaptiste Daroussin.Ss "Warnings related to bad macro arguments"
156661d06d6bSBaptiste Daroussin.Bl -ohang
156761d06d6bSBaptiste Daroussin.It Sy "duplicate argument"
156861d06d6bSBaptiste Daroussin.Pq mdoc
156961d06d6bSBaptiste DaroussinA
157061d06d6bSBaptiste Daroussin.Ic \&Bd
157161d06d6bSBaptiste Daroussinor
157261d06d6bSBaptiste Daroussin.Ic \&Bl
157361d06d6bSBaptiste Daroussinmacro has more than one
157461d06d6bSBaptiste Daroussin.Fl compact ,
157561d06d6bSBaptiste Daroussinmore than one
157661d06d6bSBaptiste Daroussin.Fl offset ,
157761d06d6bSBaptiste Daroussinor more than one
157861d06d6bSBaptiste Daroussin.Fl width
157961d06d6bSBaptiste Daroussinargument.
158061d06d6bSBaptiste DaroussinAll but the last instances of these arguments are ignored.
158161d06d6bSBaptiste Daroussin.It Sy "skipping duplicate argument"
158261d06d6bSBaptiste Daroussin.Pq mdoc
158361d06d6bSBaptiste DaroussinAn
158461d06d6bSBaptiste Daroussin.Ic \&An
158561d06d6bSBaptiste Daroussinmacro has more than one
158661d06d6bSBaptiste Daroussin.Fl split
158761d06d6bSBaptiste Daroussinor
158861d06d6bSBaptiste Daroussin.Fl nosplit
158961d06d6bSBaptiste Daroussinargument.
159061d06d6bSBaptiste DaroussinAll but the first of these arguments are ignored.
159161d06d6bSBaptiste Daroussin.It Sy "skipping duplicate display type"
159261d06d6bSBaptiste Daroussin.Pq mdoc
159361d06d6bSBaptiste DaroussinA
159461d06d6bSBaptiste Daroussin.Ic \&Bd
159561d06d6bSBaptiste Daroussinmacro has more than one type argument; the first one is used.
159661d06d6bSBaptiste Daroussin.It Sy "skipping duplicate list type"
159761d06d6bSBaptiste Daroussin.Pq mdoc
159861d06d6bSBaptiste DaroussinA
159961d06d6bSBaptiste Daroussin.Ic \&Bl
160061d06d6bSBaptiste Daroussinmacro has more than one type argument; the first one is used.
160161d06d6bSBaptiste Daroussin.It Sy "skipping -width argument"
160261d06d6bSBaptiste Daroussin.Pq mdoc
160361d06d6bSBaptiste DaroussinA
160461d06d6bSBaptiste Daroussin.Ic \&Bl
160561d06d6bSBaptiste Daroussin.Fl column ,
160661d06d6bSBaptiste Daroussin.Fl diag ,
160761d06d6bSBaptiste Daroussin.Fl ohang ,
160861d06d6bSBaptiste Daroussin.Fl inset ,
160961d06d6bSBaptiste Daroussinor
161061d06d6bSBaptiste Daroussin.Fl item
161161d06d6bSBaptiste Daroussinlist has a
161261d06d6bSBaptiste Daroussin.Fl width
161361d06d6bSBaptiste Daroussinargument.
161461d06d6bSBaptiste DaroussinThat has no effect.
161561d06d6bSBaptiste Daroussin.It Sy "wrong number of cells"
161661d06d6bSBaptiste DaroussinIn a line of a
161761d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
161861d06d6bSBaptiste Daroussinlist, the number of tabs or
161961d06d6bSBaptiste Daroussin.Ic \&Ta
162061d06d6bSBaptiste Daroussinmacros is less than the number expected from the list header line
162161d06d6bSBaptiste Daroussinor exceeds the expected number by more than one.
162261d06d6bSBaptiste DaroussinMissing cells remain empty, and all cells exceeding the number of
162361d06d6bSBaptiste Daroussincolumns are joined into one single cell.
162461d06d6bSBaptiste Daroussin.It Sy "unknown AT&T UNIX version"
162561d06d6bSBaptiste Daroussin.Pq mdoc
162661d06d6bSBaptiste DaroussinAn
162761d06d6bSBaptiste Daroussin.Ic \&At
162861d06d6bSBaptiste Daroussinmacro has an invalid argument.
162961d06d6bSBaptiste DaroussinIt is used verbatim, with
163061d06d6bSBaptiste Daroussin.Qq "AT&T UNIX "
163161d06d6bSBaptiste Daroussinprefixed to it.
163261d06d6bSBaptiste Daroussin.It Sy "comma in function argument"
163361d06d6bSBaptiste Daroussin.Pq mdoc
163461d06d6bSBaptiste DaroussinAn argument of an
163561d06d6bSBaptiste Daroussin.Ic \&Fa
163661d06d6bSBaptiste Daroussinor
163761d06d6bSBaptiste Daroussin.Ic \&Fn
163861d06d6bSBaptiste Daroussinmacro contains a comma; it should probably be split into two arguments.
163961d06d6bSBaptiste Daroussin.It Sy "parenthesis in function name"
164061d06d6bSBaptiste Daroussin.Pq mdoc
164161d06d6bSBaptiste DaroussinThe first argument of an
164261d06d6bSBaptiste Daroussin.Ic \&Fc
164361d06d6bSBaptiste Daroussinor
164461d06d6bSBaptiste Daroussin.Ic \&Fn
164561d06d6bSBaptiste Daroussinmacro contains an opening or closing parenthesis; that's probably wrong,
164661d06d6bSBaptiste Daroussinparentheses are added automatically.
164761d06d6bSBaptiste Daroussin.It Sy "unknown library name"
164861d06d6bSBaptiste Daroussin.Pq mdoc, not on Ox
164961d06d6bSBaptiste DaroussinAn
165061d06d6bSBaptiste Daroussin.Ic \&Lb
165161d06d6bSBaptiste Daroussinmacro has an unknown name argument and will be rendered as
165261d06d6bSBaptiste Daroussin.Qq library Dq Ar name .
165361d06d6bSBaptiste Daroussin.It Sy "invalid content in Rs block"
165461d06d6bSBaptiste Daroussin.Pq mdoc
165561d06d6bSBaptiste DaroussinAn
165661d06d6bSBaptiste Daroussin.Ic \&Rs
165761d06d6bSBaptiste Daroussinblock contains plain text or non-% macros.
165861d06d6bSBaptiste DaroussinThe bogus content is left in the syntax tree.
165961d06d6bSBaptiste DaroussinFormatting may be poor.
166061d06d6bSBaptiste Daroussin.It Sy "invalid Boolean argument"
166161d06d6bSBaptiste Daroussin.Pq mdoc
166261d06d6bSBaptiste DaroussinAn
166361d06d6bSBaptiste Daroussin.Ic \&Sm
166461d06d6bSBaptiste Daroussinmacro has an argument other than
166561d06d6bSBaptiste Daroussin.Cm on
166661d06d6bSBaptiste Daroussinor
166761d06d6bSBaptiste Daroussin.Cm off .
166861d06d6bSBaptiste DaroussinThe invalid argument is moved out of the macro, which leaves the macro
166961d06d6bSBaptiste Daroussinempty, causing it to toggle the spacing mode.
1670*7295610fSBaptiste Daroussin.It Sy "argument contains two font escapes"
1671*7295610fSBaptiste Daroussin.Pq roff
1672*7295610fSBaptiste DaroussinThe second argument of a
1673*7295610fSBaptiste Daroussin.Ic char
1674*7295610fSBaptiste Daroussinrequest contains more than one font escape sequence.
1675*7295610fSBaptiste DaroussinA wrong font may remain active after using the character.
167661d06d6bSBaptiste Daroussin.It Sy "unknown font, skipping request"
167761d06d6bSBaptiste Daroussin.Pq man , tbl
167861d06d6bSBaptiste DaroussinA
167961d06d6bSBaptiste Daroussin.Xr roff 7
168061d06d6bSBaptiste Daroussin.Ic \&ft
168161d06d6bSBaptiste Daroussinrequest or a
168261d06d6bSBaptiste Daroussin.Xr tbl 7
168361d06d6bSBaptiste Daroussin.Ic \&f
168461d06d6bSBaptiste Daroussinlayout modifier has an unknown
168561d06d6bSBaptiste Daroussin.Ar font
168661d06d6bSBaptiste Daroussinargument.
168761d06d6bSBaptiste Daroussin.It Sy "odd number of characters in request"
168861d06d6bSBaptiste Daroussin.Pq roff
168961d06d6bSBaptiste DaroussinA
169061d06d6bSBaptiste Daroussin.Ic \&tr
169161d06d6bSBaptiste Daroussinrequest contains an odd number of characters.
169261d06d6bSBaptiste DaroussinThe last character is mapped to the blank character.
169361d06d6bSBaptiste Daroussin.El
169461d06d6bSBaptiste Daroussin.Ss "Warnings related to plain text"
169561d06d6bSBaptiste Daroussin.Bl -ohang
169661d06d6bSBaptiste Daroussin.It Sy "blank line in fill mode, using .sp"
169761d06d6bSBaptiste Daroussin.Pq mdoc
169861d06d6bSBaptiste DaroussinThe meaning of blank input lines is only well-defined in non-fill mode:
169961d06d6bSBaptiste DaroussinIn fill mode, line breaks of text input lines are not supposed to be
170061d06d6bSBaptiste Daroussinsignificant.
170161d06d6bSBaptiste DaroussinHowever, for compatibility with groff, blank lines in fill mode
170261d06d6bSBaptiste Daroussinare replaced with
170361d06d6bSBaptiste Daroussin.Ic \&sp
170461d06d6bSBaptiste Daroussinrequests.
170561d06d6bSBaptiste Daroussin.It Sy "tab in filled text"
170661d06d6bSBaptiste Daroussin.Pq mdoc , man
170761d06d6bSBaptiste DaroussinThe meaning of tab characters is only well-defined in non-fill mode:
170861d06d6bSBaptiste DaroussinIn fill mode, whitespace is not supposed to be significant
170961d06d6bSBaptiste Daroussinon text input lines.
171061d06d6bSBaptiste DaroussinAs an implementation dependent choice, tab characters on text lines
171161d06d6bSBaptiste Daroussinare passed through to the formatters in any case.
171261d06d6bSBaptiste DaroussinGiven that the text before the tab character will be filled,
171361d06d6bSBaptiste Daroussinit is hard to predict which tab stop position the tab will advance to.
171461d06d6bSBaptiste Daroussin.It Sy "new sentence, new line"
171561d06d6bSBaptiste Daroussin.Pq mdoc
171661d06d6bSBaptiste DaroussinA new sentence starts in the middle of a text line.
171761d06d6bSBaptiste DaroussinStart it on a new input line to help formatters produce correct spacing.
171861d06d6bSBaptiste Daroussin.It Sy "invalid escape sequence"
171961d06d6bSBaptiste Daroussin.Pq roff
172061d06d6bSBaptiste DaroussinAn escape sequence has an invalid opening argument delimiter, lacks the
1721*7295610fSBaptiste Daroussinclosing argument delimiter, the argument is of an invalid form, or it is
1722*7295610fSBaptiste Daroussina character escape sequence with an invalid name.
172361d06d6bSBaptiste DaroussinIf the argument is incomplete,
172461d06d6bSBaptiste Daroussin.Ic \e*
172561d06d6bSBaptiste Daroussinand
172661d06d6bSBaptiste Daroussin.Ic \en
172761d06d6bSBaptiste Daroussinexpand to an empty string,
172861d06d6bSBaptiste Daroussin.Ic \eB
172961d06d6bSBaptiste Daroussinto the digit
173061d06d6bSBaptiste Daroussin.Sq 0 ,
173161d06d6bSBaptiste Daroussinand
173261d06d6bSBaptiste Daroussin.Ic \ew
173361d06d6bSBaptiste Daroussinto the length of the incomplete argument.
173461d06d6bSBaptiste DaroussinAll other invalid escape sequences are ignored.
1735*7295610fSBaptiste Daroussin.It Sy "undefined escape, printing literally"
1736*7295610fSBaptiste Daroussin.Pq roff
1737*7295610fSBaptiste DaroussinIn an escape sequence, the first character
1738*7295610fSBaptiste Daroussinright after the leading backslash is invalid.
1739*7295610fSBaptiste DaroussinThat character is printed literally,
1740*7295610fSBaptiste Daroussinwhich is equivalent to ignoring the backslash.
174161d06d6bSBaptiste Daroussin.It Sy "undefined string, using \(dq\(dq"
174261d06d6bSBaptiste Daroussin.Pq roff
174361d06d6bSBaptiste DaroussinIf a string is used without being defined before,
174461d06d6bSBaptiste Daroussinits value is implicitly set to the empty string.
174561d06d6bSBaptiste DaroussinHowever, defining strings explicitly before use
174661d06d6bSBaptiste Daroussinkeeps the code more readable.
174761d06d6bSBaptiste Daroussin.El
174861d06d6bSBaptiste Daroussin.Ss "Warnings related to tables"
174961d06d6bSBaptiste Daroussin.Bl -ohang
175061d06d6bSBaptiste Daroussin.It Sy "tbl line starts with span"
175161d06d6bSBaptiste Daroussin.Pq tbl
175261d06d6bSBaptiste DaroussinThe first cell in a table layout line is a horizontal span
175361d06d6bSBaptiste Daroussin.Pq Sq Cm s .
175461d06d6bSBaptiste DaroussinData provided for this cell is ignored, and nothing is printed in the cell.
175561d06d6bSBaptiste Daroussin.It Sy "tbl column starts with span"
175661d06d6bSBaptiste Daroussin.Pq tbl
175761d06d6bSBaptiste DaroussinThe first line of a table layout specification
175861d06d6bSBaptiste Daroussinrequests a vertical span
175961d06d6bSBaptiste Daroussin.Pq Sq Cm ^ .
176061d06d6bSBaptiste DaroussinData provided for this cell is ignored, and nothing is printed in the cell.
176161d06d6bSBaptiste Daroussin.It Sy "skipping vertical bar in tbl layout"
176261d06d6bSBaptiste Daroussin.Pq tbl
176361d06d6bSBaptiste DaroussinA table layout specification contains more than two consecutive vertical bars.
176461d06d6bSBaptiste DaroussinA double bar is printed, all additional bars are discarded.
176561d06d6bSBaptiste Daroussin.El
176661d06d6bSBaptiste Daroussin.Ss "Errors related to tables"
176761d06d6bSBaptiste Daroussin.Bl -ohang
176861d06d6bSBaptiste Daroussin.It Sy "non-alphabetic character in tbl options"
176961d06d6bSBaptiste Daroussin.Pq tbl
177061d06d6bSBaptiste DaroussinThe table options line contains a character other than a letter,
177161d06d6bSBaptiste Daroussinblank, or comma where the beginning of an option name is expected.
177261d06d6bSBaptiste DaroussinThe character is ignored.
177361d06d6bSBaptiste Daroussin.It Sy "skipping unknown tbl option"
177461d06d6bSBaptiste Daroussin.Pq tbl
177561d06d6bSBaptiste DaroussinThe table options line contains a string of letters that does not
177661d06d6bSBaptiste Daroussinmatch any known option name.
177761d06d6bSBaptiste DaroussinThe word is ignored.
177861d06d6bSBaptiste Daroussin.It Sy "missing tbl option argument"
177961d06d6bSBaptiste Daroussin.Pq tbl
178061d06d6bSBaptiste DaroussinA table option that requires an argument is not followed by an
178161d06d6bSBaptiste Daroussinopening parenthesis, or the opening parenthesis is immediately
178261d06d6bSBaptiste Daroussinfollowed by a closing parenthesis.
178361d06d6bSBaptiste DaroussinThe option is ignored.
178461d06d6bSBaptiste Daroussin.It Sy "wrong tbl option argument size"
178561d06d6bSBaptiste Daroussin.Pq tbl
178661d06d6bSBaptiste DaroussinA table option argument contains an invalid number of characters.
178761d06d6bSBaptiste DaroussinBoth the option and the argument are ignored.
178861d06d6bSBaptiste Daroussin.It Sy "empty tbl layout"
178961d06d6bSBaptiste Daroussin.Pq tbl
179061d06d6bSBaptiste DaroussinA table layout specification is completely empty,
179161d06d6bSBaptiste Daroussinspecifying zero lines and zero columns.
179261d06d6bSBaptiste DaroussinAs a fallback, a single left-justified column is used.
179361d06d6bSBaptiste Daroussin.It Sy "invalid character in tbl layout"
179461d06d6bSBaptiste Daroussin.Pq tbl
179561d06d6bSBaptiste DaroussinA table layout specification contains a character that can neither
179661d06d6bSBaptiste Daroussinbe interpreted as a layout key character nor as a layout modifier,
179761d06d6bSBaptiste Daroussinor a modifier precedes the first key.
179861d06d6bSBaptiste DaroussinThe invalid character is discarded.
179961d06d6bSBaptiste Daroussin.It Sy "unmatched parenthesis in tbl layout"
180061d06d6bSBaptiste Daroussin.Pq tbl
180161d06d6bSBaptiste DaroussinA table layout specification contains an opening parenthesis,
180261d06d6bSBaptiste Daroussinbut no matching closing parenthesis.
180361d06d6bSBaptiste DaroussinThe rest of the input line, starting from the parenthesis, has no effect.
180461d06d6bSBaptiste Daroussin.It Sy "tbl without any data cells"
180561d06d6bSBaptiste Daroussin.Pq tbl
180661d06d6bSBaptiste DaroussinA table does not contain any data cells.
180761d06d6bSBaptiste DaroussinIt will probably produce no output.
180861d06d6bSBaptiste Daroussin.It Sy "ignoring data in spanned tbl cell"
180961d06d6bSBaptiste Daroussin.Pq tbl
181061d06d6bSBaptiste DaroussinA table cell is marked as a horizontal span
181161d06d6bSBaptiste Daroussin.Pq Sq Cm s
181261d06d6bSBaptiste Daroussinor vertical span
181361d06d6bSBaptiste Daroussin.Pq Sq Cm ^
181461d06d6bSBaptiste Daroussinin the table layout, but it contains data.
181561d06d6bSBaptiste DaroussinThe data is ignored.
181661d06d6bSBaptiste Daroussin.It Sy "ignoring extra tbl data cells"
181761d06d6bSBaptiste Daroussin.Pq tbl
181861d06d6bSBaptiste DaroussinA data line contains more cells than the corresponding layout line.
181961d06d6bSBaptiste DaroussinThe data in the extra cells is ignored.
182061d06d6bSBaptiste Daroussin.It Sy "data block open at end of tbl"
182161d06d6bSBaptiste Daroussin.Pq tbl
182261d06d6bSBaptiste DaroussinA data block is opened with
182361d06d6bSBaptiste Daroussin.Cm T{ ,
182461d06d6bSBaptiste Daroussinbut never closed with a matching
182561d06d6bSBaptiste Daroussin.Cm T} .
182661d06d6bSBaptiste DaroussinThe remaining data lines of the table are all put into one cell,
182761d06d6bSBaptiste Daroussinand any remaining cells stay empty.
182861d06d6bSBaptiste Daroussin.El
182961d06d6bSBaptiste Daroussin.Ss "Errors related to roff, mdoc, and man code"
183061d06d6bSBaptiste Daroussin.Bl -ohang
183161d06d6bSBaptiste Daroussin.It Sy "duplicate prologue macro"
183261d06d6bSBaptiste Daroussin.Pq mdoc
183361d06d6bSBaptiste DaroussinOne of the prologue macros occurs more than once.
183461d06d6bSBaptiste DaroussinThe last instance overrides all previous ones.
183561d06d6bSBaptiste Daroussin.It Sy "skipping late title macro"
183661d06d6bSBaptiste Daroussin.Pq mdoc
183761d06d6bSBaptiste DaroussinThe
183861d06d6bSBaptiste Daroussin.Ic \&Dt
183961d06d6bSBaptiste Daroussinmacro appears after the first non-prologue macro.
184061d06d6bSBaptiste DaroussinTraditional formatters cannot handle this because
184161d06d6bSBaptiste Daroussinthey write the page header before parsing the document body.
184261d06d6bSBaptiste DaroussinEven though this technical restriction does not apply to
184361d06d6bSBaptiste Daroussin.Nm ,
184461d06d6bSBaptiste Daroussintraditional semantics is preserved.
184561d06d6bSBaptiste DaroussinThe late macro is discarded including its arguments.
184661d06d6bSBaptiste Daroussin.It Sy "input stack limit exceeded, infinite loop?"
184761d06d6bSBaptiste Daroussin.Pq roff
184861d06d6bSBaptiste DaroussinExplicit recursion limits are implemented for the following features,
184961d06d6bSBaptiste Daroussinin order to prevent infinite loops:
185061d06d6bSBaptiste Daroussin.Bl -dash -compact
185161d06d6bSBaptiste Daroussin.It
185261d06d6bSBaptiste Daroussinexpansion of nested escape sequences
185361d06d6bSBaptiste Daroussinincluding expansion of strings and number registers,
185461d06d6bSBaptiste Daroussin.It
185561d06d6bSBaptiste Daroussinexpansion of nested user-defined macros,
185661d06d6bSBaptiste Daroussin.It
185761d06d6bSBaptiste Daroussinand
185861d06d6bSBaptiste Daroussin.Ic \&so
185961d06d6bSBaptiste Daroussinfile inclusion.
186061d06d6bSBaptiste Daroussin.El
186161d06d6bSBaptiste DaroussinWhen a limit is hit, the output is incorrect, typically losing
186261d06d6bSBaptiste Daroussinsome content, but the parser can continue.
186361d06d6bSBaptiste Daroussin.It Sy "skipping bad character"
186461d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
186561d06d6bSBaptiste DaroussinThe input file contains a byte that is not a printable
186661d06d6bSBaptiste Daroussin.Xr ascii 7
186761d06d6bSBaptiste Daroussincharacter.
186861d06d6bSBaptiste DaroussinThe message mentions the character number.
186961d06d6bSBaptiste DaroussinThe offending byte is replaced with a question mark
187061d06d6bSBaptiste Daroussin.Pq Sq \&? .
187161d06d6bSBaptiste DaroussinConsider editing the input file to replace the byte with an ASCII
187261d06d6bSBaptiste Daroussintransliteration of the intended character.
187361d06d6bSBaptiste Daroussin.It Sy "skipping unknown macro"
187461d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
187561d06d6bSBaptiste DaroussinThe first identifier on a request or macro line is neither recognized as a
187661d06d6bSBaptiste Daroussin.Xr roff 7
187761d06d6bSBaptiste Daroussinrequest, nor as a user-defined macro, nor, respectively, as an
187861d06d6bSBaptiste Daroussin.Xr mdoc 7
187961d06d6bSBaptiste Daroussinor
188061d06d6bSBaptiste Daroussin.Xr man 7
188161d06d6bSBaptiste Daroussinmacro.
188261d06d6bSBaptiste DaroussinIt may be mistyped or unsupported.
188361d06d6bSBaptiste DaroussinThe request or macro is discarded including its arguments.
1884*7295610fSBaptiste Daroussin.It Sy "skipping request outside macro"
1885*7295610fSBaptiste Daroussin.Pq roff
1886*7295610fSBaptiste DaroussinA
1887*7295610fSBaptiste Daroussin.Ic shift
1888*7295610fSBaptiste Daroussinor
1889*7295610fSBaptiste Daroussin.Ic return
1890*7295610fSBaptiste Daroussinrequest occurs outside any macro definition and has no effect.
189161d06d6bSBaptiste Daroussin.It Sy "skipping insecure request"
189261d06d6bSBaptiste Daroussin.Pq roff
189361d06d6bSBaptiste DaroussinAn input file attempted to run a shell command
189461d06d6bSBaptiste Daroussinor to read or write an external file.
189561d06d6bSBaptiste DaroussinSuch attempts are denied for security reasons.
189661d06d6bSBaptiste Daroussin.It Sy "skipping item outside list"
189761d06d6bSBaptiste Daroussin.Pq mdoc , eqn
189861d06d6bSBaptiste DaroussinAn
189961d06d6bSBaptiste Daroussin.Ic \&It
190061d06d6bSBaptiste Daroussinmacro occurs outside any
190161d06d6bSBaptiste Daroussin.Ic \&Bl
190261d06d6bSBaptiste Daroussinlist, or an
190361d06d6bSBaptiste Daroussin.Xr eqn 7
190461d06d6bSBaptiste Daroussin.Ic above
190561d06d6bSBaptiste Daroussindelimiter occurs outside any pile.
190661d06d6bSBaptiste DaroussinIt is discarded including its arguments.
190761d06d6bSBaptiste Daroussin.It Sy "skipping column outside column list"
190861d06d6bSBaptiste Daroussin.Pq mdoc
190961d06d6bSBaptiste DaroussinA
191061d06d6bSBaptiste Daroussin.Ic \&Ta
191161d06d6bSBaptiste Daroussinmacro occurs outside any
191261d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
191361d06d6bSBaptiste Daroussinblock.
191461d06d6bSBaptiste DaroussinIt is discarded including its arguments.
191561d06d6bSBaptiste Daroussin.It Sy "skipping end of block that is not open"
191661d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , tbl , roff
191761d06d6bSBaptiste DaroussinVarious syntax elements can only be used to explicitly close blocks
191861d06d6bSBaptiste Daroussinthat have previously been opened.
191961d06d6bSBaptiste DaroussinAn
192061d06d6bSBaptiste Daroussin.Xr mdoc 7
192161d06d6bSBaptiste Daroussinblock closing macro, a
192261d06d6bSBaptiste Daroussin.Xr man 7
192361d06d6bSBaptiste Daroussin.Ic \&ME , \&RE
192461d06d6bSBaptiste Daroussinor
192561d06d6bSBaptiste Daroussin.Ic \&UE
192661d06d6bSBaptiste Daroussinmacro, an
192761d06d6bSBaptiste Daroussin.Xr eqn 7
192861d06d6bSBaptiste Daroussinright delimiter or closing brace, or the end of an equation, table, or
192961d06d6bSBaptiste Daroussin.Xr roff 7
193061d06d6bSBaptiste Daroussinconditional request is encountered but no matching block is open.
193161d06d6bSBaptiste DaroussinThe offending request or macro is discarded.
193261d06d6bSBaptiste Daroussin.It Sy "fewer RS blocks open, skipping"
193361d06d6bSBaptiste Daroussin.Pq man
193461d06d6bSBaptiste DaroussinThe
193561d06d6bSBaptiste Daroussin.Ic \&RE
193661d06d6bSBaptiste Daroussinmacro is invoked with an argument, but less than the specified number of
193761d06d6bSBaptiste Daroussin.Ic \&RS
193861d06d6bSBaptiste Daroussinblocks is open.
193961d06d6bSBaptiste DaroussinThe
194061d06d6bSBaptiste Daroussin.Ic \&RE
194161d06d6bSBaptiste Daroussinmacro is discarded.
194261d06d6bSBaptiste Daroussin.It Sy "inserting missing end of block"
194361d06d6bSBaptiste Daroussin.Pq mdoc , tbl
194461d06d6bSBaptiste DaroussinVarious
194561d06d6bSBaptiste Daroussin.Xr mdoc 7
194661d06d6bSBaptiste Daroussinmacros as well as tables require explicit closing by dedicated macros.
194761d06d6bSBaptiste DaroussinA block that doesn't support bad nesting
194861d06d6bSBaptiste Daroussinends before all of its children are properly closed.
194961d06d6bSBaptiste DaroussinThe open child nodes are closed implicitly.
195061d06d6bSBaptiste Daroussin.It Sy "appending missing end of block"
195161d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , tbl , roff
195261d06d6bSBaptiste DaroussinAt the end of the document, an explicit
195361d06d6bSBaptiste Daroussin.Xr mdoc 7
195461d06d6bSBaptiste Daroussinblock, a
195561d06d6bSBaptiste Daroussin.Xr man 7
195661d06d6bSBaptiste Daroussinnext-line scope or
195761d06d6bSBaptiste Daroussin.Ic \&MT , \&RS
195861d06d6bSBaptiste Daroussinor
195961d06d6bSBaptiste Daroussin.Ic \&UR
196061d06d6bSBaptiste Daroussinblock, an equation, table, or
196161d06d6bSBaptiste Daroussin.Xr roff 7
196261d06d6bSBaptiste Daroussinconditional or ignore block is still open.
196361d06d6bSBaptiste DaroussinThe open block is closed implicitly.
196461d06d6bSBaptiste Daroussin.It Sy "escaped character not allowed in a name"
196561d06d6bSBaptiste Daroussin.Pq roff
196661d06d6bSBaptiste DaroussinMacro, string and register identifiers consist of printable,
196761d06d6bSBaptiste Daroussinnon-whitespace ASCII characters.
196861d06d6bSBaptiste DaroussinEscape sequences and characters and strings expressed in terms of them
196961d06d6bSBaptiste Daroussincannot form part of a name.
197061d06d6bSBaptiste DaroussinThe first argument of an
197161d06d6bSBaptiste Daroussin.Ic \&am ,
197261d06d6bSBaptiste Daroussin.Ic \&as ,
197361d06d6bSBaptiste Daroussin.Ic \&de ,
197461d06d6bSBaptiste Daroussin.Ic \&ds ,
197561d06d6bSBaptiste Daroussin.Ic \&nr ,
197661d06d6bSBaptiste Daroussinor
197761d06d6bSBaptiste Daroussin.Ic \&rr
197861d06d6bSBaptiste Daroussinrequest, or any argument of an
197961d06d6bSBaptiste Daroussin.Ic \&rm
198061d06d6bSBaptiste Daroussinrequest, or the name of a request or user defined macro being called,
198161d06d6bSBaptiste Daroussinis terminated by an escape sequence.
198261d06d6bSBaptiste DaroussinIn the cases of
198361d06d6bSBaptiste Daroussin.Ic \&as ,
198461d06d6bSBaptiste Daroussin.Ic \&ds ,
198561d06d6bSBaptiste Daroussinand
198661d06d6bSBaptiste Daroussin.Ic \&nr ,
198761d06d6bSBaptiste Daroussinthe request has no effect at all.
198861d06d6bSBaptiste DaroussinIn the cases of
198961d06d6bSBaptiste Daroussin.Ic \&am ,
199061d06d6bSBaptiste Daroussin.Ic \&de ,
199161d06d6bSBaptiste Daroussin.Ic \&rr ,
199261d06d6bSBaptiste Daroussinand
199361d06d6bSBaptiste Daroussin.Ic \&rm ,
199461d06d6bSBaptiste Daroussinwhat was parsed up to this point is used as the arguments to the request,
199561d06d6bSBaptiste Daroussinand the rest of the input line is discarded including the escape sequence.
199661d06d6bSBaptiste DaroussinWhen parsing for a request or a user-defined macro name to be called,
199761d06d6bSBaptiste Daroussinonly the escape sequence is discarded.
199861d06d6bSBaptiste DaroussinThe characters preceding it are used as the request or macro name,
199961d06d6bSBaptiste Daroussinthe characters following it are used as the arguments to the request or macro.
2000*7295610fSBaptiste Daroussin.It Sy "using macro argument outside macro"
2001*7295610fSBaptiste Daroussin.Pq roff
2002*7295610fSBaptiste DaroussinThe escape sequence \e$ occurs outside any macro definition
2003*7295610fSBaptiste Daroussinand expands to the empty string.
2004*7295610fSBaptiste Daroussin.It Sy "argument number is not numeric"
2005*7295610fSBaptiste Daroussin.Pq roff
2006*7295610fSBaptiste DaroussinThe argument of the escape sequence \e$ is not a digit;
2007*7295610fSBaptiste Daroussinthe escape sequence expands to the empty string.
200861d06d6bSBaptiste Daroussin.It Sy "NOT IMPLEMENTED: Bd -file"
200961d06d6bSBaptiste Daroussin.Pq mdoc
201061d06d6bSBaptiste DaroussinFor security reasons, the
201161d06d6bSBaptiste Daroussin.Ic \&Bd
201261d06d6bSBaptiste Daroussinmacro does not support the
201361d06d6bSBaptiste Daroussin.Fl file
201461d06d6bSBaptiste Daroussinargument.
201561d06d6bSBaptiste DaroussinBy requesting the inclusion of a sensitive file, a malicious document
201661d06d6bSBaptiste Daroussinmight otherwise trick a privileged user into inadvertently displaying
201761d06d6bSBaptiste Daroussinthe file on the screen, revealing the file content to bystanders.
201861d06d6bSBaptiste DaroussinThe argument is ignored including the file name following it.
201961d06d6bSBaptiste Daroussin.It Sy "skipping display without arguments"
202061d06d6bSBaptiste Daroussin.Pq mdoc
202161d06d6bSBaptiste DaroussinA
202261d06d6bSBaptiste Daroussin.Ic \&Bd
202361d06d6bSBaptiste Daroussinblock macro does not have any arguments.
202461d06d6bSBaptiste DaroussinThe block is discarded, and the block content is displayed in
202561d06d6bSBaptiste Daroussinwhatever mode was active before the block.
202661d06d6bSBaptiste Daroussin.It Sy "missing list type, using -item"
202761d06d6bSBaptiste Daroussin.Pq mdoc
202861d06d6bSBaptiste DaroussinA
202961d06d6bSBaptiste Daroussin.Ic \&Bl
203061d06d6bSBaptiste Daroussinmacro fails to specify the list type.
203161d06d6bSBaptiste Daroussin.It Sy "argument is not numeric, using 1"
203261d06d6bSBaptiste Daroussin.Pq roff
203361d06d6bSBaptiste DaroussinThe argument of a
203461d06d6bSBaptiste Daroussin.Ic \&ce
203561d06d6bSBaptiste Daroussinrequest is not a number.
2036*7295610fSBaptiste Daroussin.It Sy "argument is not a character"
2037*7295610fSBaptiste Daroussin.Pq roff
2038*7295610fSBaptiste DaroussinThe first argument of a
2039*7295610fSBaptiste Daroussin.Ic char
2040*7295610fSBaptiste Daroussinrequest is neither a single ASCII character
2041*7295610fSBaptiste Daroussinnor a single character escape sequence.
2042*7295610fSBaptiste DaroussinThe request is ignored including all its arguments.
204361d06d6bSBaptiste Daroussin.It Sy "missing manual name, using \(dq\(dq"
204461d06d6bSBaptiste Daroussin.Pq mdoc
204561d06d6bSBaptiste DaroussinThe first call to
204661d06d6bSBaptiste Daroussin.Ic \&Nm ,
204761d06d6bSBaptiste Daroussinor any call in the NAME section, lacks the required argument.
204861d06d6bSBaptiste Daroussin.It Sy "uname(3) system call failed, using UNKNOWN"
204961d06d6bSBaptiste Daroussin.Pq mdoc
205061d06d6bSBaptiste DaroussinThe
205161d06d6bSBaptiste Daroussin.Ic \&Os
205261d06d6bSBaptiste Daroussinmacro is called without arguments, and the
205361d06d6bSBaptiste Daroussin.Xr uname 3
205461d06d6bSBaptiste Daroussinsystem call failed.
205561d06d6bSBaptiste DaroussinAs a workaround,
205661d06d6bSBaptiste Daroussin.Nm
205761d06d6bSBaptiste Daroussincan be compiled with
205861d06d6bSBaptiste Daroussin.Sm off
205961d06d6bSBaptiste Daroussin.Fl D Cm OSNAME=\(dq\e\(dq Ar string Cm \e\(dq\(dq .
206061d06d6bSBaptiste Daroussin.Sm on
206161d06d6bSBaptiste Daroussin.It Sy "unknown standard specifier"
206261d06d6bSBaptiste Daroussin.Pq mdoc
206361d06d6bSBaptiste DaroussinAn
206461d06d6bSBaptiste Daroussin.Ic \&St
206561d06d6bSBaptiste Daroussinmacro has an unknown argument and is discarded.
206661d06d6bSBaptiste Daroussin.It Sy "skipping request without numeric argument"
206761d06d6bSBaptiste Daroussin.Pq roff , eqn
206861d06d6bSBaptiste DaroussinAn
206961d06d6bSBaptiste Daroussin.Ic \&it
207061d06d6bSBaptiste Daroussinrequest or an
207161d06d6bSBaptiste Daroussin.Xr eqn 7
207261d06d6bSBaptiste Daroussin.Ic \&size
207361d06d6bSBaptiste Daroussinor
207461d06d6bSBaptiste Daroussin.Ic \&gsize
207561d06d6bSBaptiste Daroussinstatement has a non-numeric or negative argument or no argument at all.
207661d06d6bSBaptiste DaroussinThe invalid request or statement is ignored.
2077*7295610fSBaptiste Daroussin.It Sy "excessive shift"
2078*7295610fSBaptiste Daroussin.Pq roff
2079*7295610fSBaptiste DaroussinThe argument of a
2080*7295610fSBaptiste Daroussin.Ic shift
2081*7295610fSBaptiste Daroussinrequest is larger than the number of arguments of the macro that is
2082*7295610fSBaptiste Daroussincurrently being executed.
2083*7295610fSBaptiste DaroussinAll macro arguments are deleted and \en(.$ is set to zero.
208461d06d6bSBaptiste Daroussin.It Sy "NOT IMPLEMENTED: .so with absolute path or \(dq..\(dq"
208561d06d6bSBaptiste Daroussin.Pq roff
208661d06d6bSBaptiste DaroussinFor security reasons,
208761d06d6bSBaptiste Daroussin.Nm
208861d06d6bSBaptiste Daroussinallows
208961d06d6bSBaptiste Daroussin.Ic \&so
209061d06d6bSBaptiste Daroussinfile inclusion requests only with relative paths
209161d06d6bSBaptiste Daroussinand only without ascending to any parent directory.
209261d06d6bSBaptiste DaroussinBy requesting the inclusion of a sensitive file, a malicious document
209361d06d6bSBaptiste Daroussinmight otherwise trick a privileged user into inadvertently displaying
209461d06d6bSBaptiste Daroussinthe file on the screen, revealing the file content to bystanders.
209561d06d6bSBaptiste Daroussin.Nm
209661d06d6bSBaptiste Daroussinonly shows the path as it appears behind
209761d06d6bSBaptiste Daroussin.Ic \&so .
209861d06d6bSBaptiste Daroussin.It Sy ".so request failed"
209961d06d6bSBaptiste Daroussin.Pq roff
210061d06d6bSBaptiste DaroussinServicing a
210161d06d6bSBaptiste Daroussin.Ic \&so
210261d06d6bSBaptiste Daroussinrequest requires reading an external file, but the file could not be
210361d06d6bSBaptiste Daroussinopened.
210461d06d6bSBaptiste Daroussin.Nm
210561d06d6bSBaptiste Daroussinonly shows the path as it appears behind
210661d06d6bSBaptiste Daroussin.Ic \&so .
210761d06d6bSBaptiste Daroussin.It Sy "skipping all arguments"
210861d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , roff
210961d06d6bSBaptiste DaroussinAn
211061d06d6bSBaptiste Daroussin.Xr mdoc 7
211161d06d6bSBaptiste Daroussin.Ic \&Bt ,
211261d06d6bSBaptiste Daroussin.Ic \&Ed ,
211361d06d6bSBaptiste Daroussin.Ic \&Ef ,
211461d06d6bSBaptiste Daroussin.Ic \&Ek ,
211561d06d6bSBaptiste Daroussin.Ic \&El ,
211661d06d6bSBaptiste Daroussin.Ic \&Lp ,
211761d06d6bSBaptiste Daroussin.Ic \&Pp ,
211861d06d6bSBaptiste Daroussin.Ic \&Re ,
211961d06d6bSBaptiste Daroussin.Ic \&Rs ,
212061d06d6bSBaptiste Daroussinor
212161d06d6bSBaptiste Daroussin.Ic \&Ud
212261d06d6bSBaptiste Daroussinmacro, an
212361d06d6bSBaptiste Daroussin.Ic \&It
212461d06d6bSBaptiste Daroussinmacro in a list that don't support item heads, a
212561d06d6bSBaptiste Daroussin.Xr man 7
212661d06d6bSBaptiste Daroussin.Ic \&LP ,
212761d06d6bSBaptiste Daroussin.Ic \&P ,
212861d06d6bSBaptiste Daroussinor
212961d06d6bSBaptiste Daroussin.Ic \&PP
213061d06d6bSBaptiste Daroussinmacro, an
213161d06d6bSBaptiste Daroussin.Xr eqn 7
213261d06d6bSBaptiste Daroussin.Ic \&EQ
213361d06d6bSBaptiste Daroussinor
213461d06d6bSBaptiste Daroussin.Ic \&EN
213561d06d6bSBaptiste Daroussinmacro, or a
213661d06d6bSBaptiste Daroussin.Xr roff 7
213761d06d6bSBaptiste Daroussin.Ic \&br ,
213861d06d6bSBaptiste Daroussin.Ic \&fi ,
213961d06d6bSBaptiste Daroussinor
214061d06d6bSBaptiste Daroussin.Ic \&nf
214161d06d6bSBaptiste Daroussinrequest or
214261d06d6bSBaptiste Daroussin.Sq \&..
214361d06d6bSBaptiste Daroussinblock closing request is invoked with at least one argument.
214461d06d6bSBaptiste DaroussinAll arguments are ignored.
214561d06d6bSBaptiste Daroussin.It Sy "skipping excess arguments"
214661d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
214761d06d6bSBaptiste DaroussinA macro or request is invoked with too many arguments:
214861d06d6bSBaptiste Daroussin.Bl -dash -offset 2n -width 2n -compact
214961d06d6bSBaptiste Daroussin.It
215061d06d6bSBaptiste Daroussin.Ic \&Fo ,
215161d06d6bSBaptiste Daroussin.Ic \&MT ,
215261d06d6bSBaptiste Daroussin.Ic \&PD ,
215361d06d6bSBaptiste Daroussin.Ic \&RS ,
215461d06d6bSBaptiste Daroussin.Ic \&UR ,
215561d06d6bSBaptiste Daroussin.Ic \&ft ,
215661d06d6bSBaptiste Daroussinor
215761d06d6bSBaptiste Daroussin.Ic \&sp
215861d06d6bSBaptiste Daroussinwith more than one argument
215961d06d6bSBaptiste Daroussin.It
216061d06d6bSBaptiste Daroussin.Ic \&An
216161d06d6bSBaptiste Daroussinwith another argument after
216261d06d6bSBaptiste Daroussin.Fl split
216361d06d6bSBaptiste Daroussinor
216461d06d6bSBaptiste Daroussin.Fl nosplit
216561d06d6bSBaptiste Daroussin.It
216661d06d6bSBaptiste Daroussin.Ic \&RE
216761d06d6bSBaptiste Daroussinwith more than one argument or with a non-integer argument
216861d06d6bSBaptiste Daroussin.It
216961d06d6bSBaptiste Daroussin.Ic \&OP
217061d06d6bSBaptiste Daroussinor a request of the
217161d06d6bSBaptiste Daroussin.Ic \&de
217261d06d6bSBaptiste Daroussinfamily with more than two arguments
217361d06d6bSBaptiste Daroussin.It
217461d06d6bSBaptiste Daroussin.Ic \&Dt
217561d06d6bSBaptiste Daroussinwith more than three arguments
217661d06d6bSBaptiste Daroussin.It
217761d06d6bSBaptiste Daroussin.Ic \&TH
217861d06d6bSBaptiste Daroussinwith more than five arguments
217961d06d6bSBaptiste Daroussin.It
218061d06d6bSBaptiste Daroussin.Ic \&Bd ,
218161d06d6bSBaptiste Daroussin.Ic \&Bk ,
218261d06d6bSBaptiste Daroussinor
218361d06d6bSBaptiste Daroussin.Ic \&Bl
218461d06d6bSBaptiste Daroussinwith invalid arguments
218561d06d6bSBaptiste Daroussin.El
218661d06d6bSBaptiste DaroussinThe excess arguments are ignored.
218761d06d6bSBaptiste Daroussin.El
218861d06d6bSBaptiste Daroussin.Ss Unsupported features
218961d06d6bSBaptiste Daroussin.Bl -ohang
219061d06d6bSBaptiste Daroussin.It Sy "input too large"
219161d06d6bSBaptiste Daroussin.Pq mdoc , man
219261d06d6bSBaptiste DaroussinCurrently,
219361d06d6bSBaptiste Daroussin.Nm
219461d06d6bSBaptiste Daroussincannot handle input files larger than its arbitrary size limit
219561d06d6bSBaptiste Daroussinof 2^31 bytes (2 Gigabytes).
219661d06d6bSBaptiste DaroussinSince useful manuals are always small, this is not a problem in practice.
219761d06d6bSBaptiste DaroussinParsing is aborted as soon as the condition is detected.
219861d06d6bSBaptiste Daroussin.It Sy "unsupported control character"
219961d06d6bSBaptiste Daroussin.Pq roff
220061d06d6bSBaptiste DaroussinAn ASCII control character supported by other
220161d06d6bSBaptiste Daroussin.Xr roff 7
220261d06d6bSBaptiste Daroussinimplementations but not by
220361d06d6bSBaptiste Daroussin.Nm
220461d06d6bSBaptiste Daroussinwas found in an input file.
220561d06d6bSBaptiste DaroussinIt is replaced by a question mark.
2206*7295610fSBaptiste Daroussin.It Sy "unsupported escape sequence"
2207*7295610fSBaptiste Daroussin.Pq roff
2208*7295610fSBaptiste DaroussinAn input file contains an escape sequence supported by GNU troff
2209*7295610fSBaptiste Daroussinor Heirloom troff but not by
2210*7295610fSBaptiste Daroussin.Nm ,
2211*7295610fSBaptiste Daroussinand it is likely that this will cause information loss
2212*7295610fSBaptiste Daroussinor considerable misformatting.
221361d06d6bSBaptiste Daroussin.It Sy "unsupported roff request"
221461d06d6bSBaptiste Daroussin.Pq roff
221561d06d6bSBaptiste DaroussinAn input file contains a
221661d06d6bSBaptiste Daroussin.Xr roff 7
221761d06d6bSBaptiste Daroussinrequest supported by GNU troff or Heirloom troff but not by
221861d06d6bSBaptiste Daroussin.Nm ,
221961d06d6bSBaptiste Daroussinand it is likely that this will cause information loss
222061d06d6bSBaptiste Daroussinor considerable misformatting.
222161d06d6bSBaptiste Daroussin.It Sy "eqn delim option in tbl"
222261d06d6bSBaptiste Daroussin.Pq eqn , tbl
222361d06d6bSBaptiste DaroussinThe options line of a table defines equation delimiters.
222461d06d6bSBaptiste DaroussinAny equation source code contained in the table will be printed unformatted.
222561d06d6bSBaptiste Daroussin.It Sy "unsupported table layout modifier"
222661d06d6bSBaptiste Daroussin.Pq tbl
222761d06d6bSBaptiste DaroussinA table layout specification contains an
222861d06d6bSBaptiste Daroussin.Sq Cm m
222961d06d6bSBaptiste Daroussinmodifier.
223061d06d6bSBaptiste DaroussinThe modifier is discarded.
223161d06d6bSBaptiste Daroussin.It Sy "ignoring macro in table"
223261d06d6bSBaptiste Daroussin.Pq tbl , mdoc , man
223361d06d6bSBaptiste DaroussinA table contains an invocation of an
223461d06d6bSBaptiste Daroussin.Xr mdoc 7
223561d06d6bSBaptiste Daroussinor
223661d06d6bSBaptiste Daroussin.Xr man 7
223761d06d6bSBaptiste Daroussinmacro or of an undefined macro.
223861d06d6bSBaptiste DaroussinThe macro is ignored, and its arguments are handled
223961d06d6bSBaptiste Daroussinas if they were a text line.
224061d06d6bSBaptiste Daroussin.El
224161d06d6bSBaptiste Daroussin.Sh SEE ALSO
224261d06d6bSBaptiste Daroussin.Xr apropos 1 ,
224361d06d6bSBaptiste Daroussin.Xr man 1 ,
224461d06d6bSBaptiste Daroussin.Xr eqn 7 ,
224561d06d6bSBaptiste Daroussin.Xr man 7 ,
224661d06d6bSBaptiste Daroussin.Xr mandoc_char 7 ,
224761d06d6bSBaptiste Daroussin.Xr mdoc 7 ,
224861d06d6bSBaptiste Daroussin.Xr roff 7 ,
224961d06d6bSBaptiste Daroussin.Xr tbl 7
225061d06d6bSBaptiste Daroussin.Sh HISTORY
225161d06d6bSBaptiste DaroussinThe
225261d06d6bSBaptiste Daroussin.Nm
225361d06d6bSBaptiste Daroussinutility first appeared in
225461d06d6bSBaptiste Daroussin.Ox 4.8 .
225561d06d6bSBaptiste DaroussinThe option
225661d06d6bSBaptiste Daroussin.Fl I
225761d06d6bSBaptiste Daroussinappeared in
225861d06d6bSBaptiste Daroussin.Ox 5.2 ,
225961d06d6bSBaptiste Daroussinand
226061d06d6bSBaptiste Daroussin.Fl aCcfhKklMSsw
226161d06d6bSBaptiste Daroussinin
226261d06d6bSBaptiste Daroussin.Ox 5.7 .
226361d06d6bSBaptiste Daroussin.Sh AUTHORS
226461d06d6bSBaptiste Daroussin.An -nosplit
226561d06d6bSBaptiste DaroussinThe
226661d06d6bSBaptiste Daroussin.Nm
226761d06d6bSBaptiste Daroussinutility was written by
226861d06d6bSBaptiste Daroussin.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
226961d06d6bSBaptiste Daroussinand is maintained by
227061d06d6bSBaptiste Daroussin.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2271