xref: /freebsd/contrib/mandoc/mandoc.1 (revision 61d06d6bd19dafe8ea971dd43e8328fa1b473456)
1*61d06d6bSBaptiste Daroussin.\"	$Id: mandoc.1,v 1.226 2018/07/28 18:34:15 schwarze Exp $
2*61d06d6bSBaptiste Daroussin.\"
3*61d06d6bSBaptiste Daroussin.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4*61d06d6bSBaptiste Daroussin.\" Copyright (c) 2012, 2014-2018 Ingo Schwarze <schwarze@openbsd.org>
5*61d06d6bSBaptiste Daroussin.\"
6*61d06d6bSBaptiste Daroussin.\" Permission to use, copy, modify, and distribute this software for any
7*61d06d6bSBaptiste Daroussin.\" purpose with or without fee is hereby granted, provided that the above
8*61d06d6bSBaptiste Daroussin.\" copyright notice and this permission notice appear in all copies.
9*61d06d6bSBaptiste Daroussin.\"
10*61d06d6bSBaptiste Daroussin.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*61d06d6bSBaptiste Daroussin.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*61d06d6bSBaptiste Daroussin.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*61d06d6bSBaptiste Daroussin.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*61d06d6bSBaptiste Daroussin.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15*61d06d6bSBaptiste Daroussin.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16*61d06d6bSBaptiste Daroussin.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*61d06d6bSBaptiste Daroussin.\"
18*61d06d6bSBaptiste Daroussin.Dd $Mdocdate: July 28 2018 $
19*61d06d6bSBaptiste Daroussin.Dt MANDOC 1
20*61d06d6bSBaptiste Daroussin.Os
21*61d06d6bSBaptiste Daroussin.Sh NAME
22*61d06d6bSBaptiste Daroussin.Nm mandoc
23*61d06d6bSBaptiste Daroussin.Nd format manual pages
24*61d06d6bSBaptiste Daroussin.Sh SYNOPSIS
25*61d06d6bSBaptiste Daroussin.Nm mandoc
26*61d06d6bSBaptiste Daroussin.Op Fl ac
27*61d06d6bSBaptiste Daroussin.Op Fl I Cm os Ns = Ns Ar name
28*61d06d6bSBaptiste Daroussin.Op Fl K Ar encoding
29*61d06d6bSBaptiste Daroussin.Op Fl mdoc | man
30*61d06d6bSBaptiste Daroussin.Op Fl O Ar options
31*61d06d6bSBaptiste Daroussin.Op Fl T Ar output
32*61d06d6bSBaptiste Daroussin.Op Fl W Ar level
33*61d06d6bSBaptiste Daroussin.Op Ar
34*61d06d6bSBaptiste Daroussin.Sh DESCRIPTION
35*61d06d6bSBaptiste DaroussinThe
36*61d06d6bSBaptiste Daroussin.Nm
37*61d06d6bSBaptiste Daroussinutility formats manual pages for display.
38*61d06d6bSBaptiste Daroussin.Pp
39*61d06d6bSBaptiste DaroussinBy default,
40*61d06d6bSBaptiste Daroussin.Nm
41*61d06d6bSBaptiste Daroussinreads
42*61d06d6bSBaptiste Daroussin.Xr mdoc 7
43*61d06d6bSBaptiste Daroussinor
44*61d06d6bSBaptiste Daroussin.Xr man 7
45*61d06d6bSBaptiste Daroussintext from stdin and produces
46*61d06d6bSBaptiste Daroussin.Fl T Cm locale
47*61d06d6bSBaptiste Daroussinoutput.
48*61d06d6bSBaptiste Daroussin.Pp
49*61d06d6bSBaptiste DaroussinThe options are as follows:
50*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds
51*61d06d6bSBaptiste Daroussin.It Fl a
52*61d06d6bSBaptiste DaroussinIf the standard output is a terminal device and
53*61d06d6bSBaptiste Daroussin.Fl c
54*61d06d6bSBaptiste Daroussinis not specified, use
55*61d06d6bSBaptiste Daroussin.Xr more 1
56*61d06d6bSBaptiste Daroussinto paginate the output, just like
57*61d06d6bSBaptiste Daroussin.Xr man 1
58*61d06d6bSBaptiste Daroussinwould.
59*61d06d6bSBaptiste Daroussin.It Fl c
60*61d06d6bSBaptiste DaroussinCopy the formatted manual pages to the standard output without using
61*61d06d6bSBaptiste Daroussin.Xr more 1
62*61d06d6bSBaptiste Daroussinto paginate them.
63*61d06d6bSBaptiste DaroussinThis is the default.
64*61d06d6bSBaptiste DaroussinIt can be specified to override
65*61d06d6bSBaptiste Daroussin.Fl a .
66*61d06d6bSBaptiste Daroussin.It Fl I Cm os Ns = Ns Ar name
67*61d06d6bSBaptiste DaroussinOverride the default operating system
68*61d06d6bSBaptiste Daroussin.Ar name
69*61d06d6bSBaptiste Daroussinfor the
70*61d06d6bSBaptiste Daroussin.Xr mdoc 7
71*61d06d6bSBaptiste Daroussin.Ic \&Os
72*61d06d6bSBaptiste Daroussinand for the
73*61d06d6bSBaptiste Daroussin.Xr man 7
74*61d06d6bSBaptiste Daroussin.Ic \&TH
75*61d06d6bSBaptiste Daroussinmacro.
76*61d06d6bSBaptiste Daroussin.It Fl K Ar encoding
77*61d06d6bSBaptiste DaroussinSpecify the input encoding.
78*61d06d6bSBaptiste DaroussinThe supported
79*61d06d6bSBaptiste Daroussin.Ar encoding
80*61d06d6bSBaptiste Daroussinarguments are
81*61d06d6bSBaptiste Daroussin.Cm us-ascii ,
82*61d06d6bSBaptiste Daroussin.Cm iso-8859-1 ,
83*61d06d6bSBaptiste Daroussinand
84*61d06d6bSBaptiste Daroussin.Cm utf-8 .
85*61d06d6bSBaptiste DaroussinIf not specified, autodetection uses the first match in the following
86*61d06d6bSBaptiste Daroussinlist:
87*61d06d6bSBaptiste Daroussin.Bl -enum
88*61d06d6bSBaptiste Daroussin.It
89*61d06d6bSBaptiste DaroussinIf the first three bytes of the input file are the UTF-8 byte order
90*61d06d6bSBaptiste Daroussinmark (BOM, 0xefbbbf), input is interpreted as
91*61d06d6bSBaptiste Daroussin.Cm utf-8 .
92*61d06d6bSBaptiste Daroussin.It
93*61d06d6bSBaptiste DaroussinIf the first or second line of the input file matches the
94*61d06d6bSBaptiste Daroussin.Sy emacs
95*61d06d6bSBaptiste Daroussinmode line format
96*61d06d6bSBaptiste Daroussin.Pp
97*61d06d6bSBaptiste Daroussin.D1 .\e" -*- Oo ...; Oc coding: Ar encoding ; No -*-
98*61d06d6bSBaptiste Daroussin.Pp
99*61d06d6bSBaptiste Daroussinthen input is interpreted according to
100*61d06d6bSBaptiste Daroussin.Ar encoding .
101*61d06d6bSBaptiste Daroussin.It
102*61d06d6bSBaptiste DaroussinIf the first non-ASCII byte in the file introduces a valid UTF-8
103*61d06d6bSBaptiste Daroussinsequence, input is interpreted as
104*61d06d6bSBaptiste Daroussin.Cm utf-8 .
105*61d06d6bSBaptiste Daroussin.It
106*61d06d6bSBaptiste DaroussinOtherwise, input is interpreted as
107*61d06d6bSBaptiste Daroussin.Cm iso-8859-1 .
108*61d06d6bSBaptiste Daroussin.El
109*61d06d6bSBaptiste Daroussin.It Fl mdoc | man
110*61d06d6bSBaptiste DaroussinWith
111*61d06d6bSBaptiste Daroussin.Fl mdoc ,
112*61d06d6bSBaptiste Daroussinall input files are interpreted as
113*61d06d6bSBaptiste Daroussin.Xr mdoc 7 .
114*61d06d6bSBaptiste DaroussinWith
115*61d06d6bSBaptiste Daroussin.Fl man ,
116*61d06d6bSBaptiste Daroussinall input files are interpreted as
117*61d06d6bSBaptiste Daroussin.Xr man 7 .
118*61d06d6bSBaptiste DaroussinBy default, the input language is automatically detected for each file:
119*61d06d6bSBaptiste Daroussinif the first macro is
120*61d06d6bSBaptiste Daroussin.Ic \&Dd
121*61d06d6bSBaptiste Daroussinor
122*61d06d6bSBaptiste Daroussin.Ic \&Dt ,
123*61d06d6bSBaptiste Daroussinthe
124*61d06d6bSBaptiste Daroussin.Xr mdoc 7
125*61d06d6bSBaptiste Daroussinparser is used; otherwise, the
126*61d06d6bSBaptiste Daroussin.Xr man 7
127*61d06d6bSBaptiste Daroussinparser is used.
128*61d06d6bSBaptiste DaroussinWith other arguments,
129*61d06d6bSBaptiste Daroussin.Fl m
130*61d06d6bSBaptiste Daroussinis silently ignored.
131*61d06d6bSBaptiste Daroussin.It Fl O Ar options
132*61d06d6bSBaptiste DaroussinComma-separated output options.
133*61d06d6bSBaptiste DaroussinSee the descriptions of the individual output formats for supported
134*61d06d6bSBaptiste Daroussin.Ar options .
135*61d06d6bSBaptiste Daroussin.It Fl T Ar output
136*61d06d6bSBaptiste DaroussinSelect the output format.
137*61d06d6bSBaptiste DaroussinSupported values for the
138*61d06d6bSBaptiste Daroussin.Ar output
139*61d06d6bSBaptiste Daroussinargument are
140*61d06d6bSBaptiste Daroussin.Cm ascii ,
141*61d06d6bSBaptiste Daroussin.Cm html ,
142*61d06d6bSBaptiste Daroussinthe default of
143*61d06d6bSBaptiste Daroussin.Cm locale ,
144*61d06d6bSBaptiste Daroussin.Cm man ,
145*61d06d6bSBaptiste Daroussin.Cm markdown ,
146*61d06d6bSBaptiste Daroussin.Cm pdf ,
147*61d06d6bSBaptiste Daroussin.Cm ps ,
148*61d06d6bSBaptiste Daroussin.Cm tree ,
149*61d06d6bSBaptiste Daroussinand
150*61d06d6bSBaptiste Daroussin.Cm utf8 .
151*61d06d6bSBaptiste Daroussin.Pp
152*61d06d6bSBaptiste DaroussinThe special
153*61d06d6bSBaptiste Daroussin.Fl T Cm lint
154*61d06d6bSBaptiste Daroussinmode only parses the input and produces no output.
155*61d06d6bSBaptiste DaroussinIt implies
156*61d06d6bSBaptiste Daroussin.Fl W Cm all
157*61d06d6bSBaptiste Daroussinand redirects parser messages, which usually appear on standard
158*61d06d6bSBaptiste Daroussinerror output, to standard output.
159*61d06d6bSBaptiste Daroussin.It Fl W Ar level
160*61d06d6bSBaptiste DaroussinSpecify the minimum message
161*61d06d6bSBaptiste Daroussin.Ar level
162*61d06d6bSBaptiste Daroussinto be reported on the standard error output and to affect the exit status.
163*61d06d6bSBaptiste DaroussinThe
164*61d06d6bSBaptiste Daroussin.Ar level
165*61d06d6bSBaptiste Daroussincan be
166*61d06d6bSBaptiste Daroussin.Cm base ,
167*61d06d6bSBaptiste Daroussin.Cm style ,
168*61d06d6bSBaptiste Daroussin.Cm warning ,
169*61d06d6bSBaptiste Daroussin.Cm error ,
170*61d06d6bSBaptiste Daroussinor
171*61d06d6bSBaptiste Daroussin.Cm unsupp .
172*61d06d6bSBaptiste DaroussinThe
173*61d06d6bSBaptiste Daroussin.Cm base
174*61d06d6bSBaptiste Daroussinlevel automatically derives the operating system from the contents of the
175*61d06d6bSBaptiste Daroussin.Ic \&Os
176*61d06d6bSBaptiste Daroussinmacro, from the
177*61d06d6bSBaptiste Daroussin.Fl Ios
178*61d06d6bSBaptiste Daroussincommand line option, or from the
179*61d06d6bSBaptiste Daroussin.Xr uname 3
180*61d06d6bSBaptiste Daroussinreturn value.
181*61d06d6bSBaptiste DaroussinThe levels
182*61d06d6bSBaptiste Daroussin.Cm openbsd
183*61d06d6bSBaptiste Daroussinand
184*61d06d6bSBaptiste Daroussin.Cm netbsd
185*61d06d6bSBaptiste Daroussinare variants of
186*61d06d6bSBaptiste Daroussin.Cm base
187*61d06d6bSBaptiste Daroussinthat bypass autodetection and request validation of base system
188*61d06d6bSBaptiste Daroussinconventions for a particular operating system.
189*61d06d6bSBaptiste DaroussinThe level
190*61d06d6bSBaptiste Daroussin.Cm all
191*61d06d6bSBaptiste Daroussinis an alias for
192*61d06d6bSBaptiste Daroussin.Cm base .
193*61d06d6bSBaptiste DaroussinBy default,
194*61d06d6bSBaptiste Daroussin.Nm
195*61d06d6bSBaptiste Daroussinis silent.
196*61d06d6bSBaptiste DaroussinSee
197*61d06d6bSBaptiste Daroussin.Sx EXIT STATUS
198*61d06d6bSBaptiste Daroussinand
199*61d06d6bSBaptiste Daroussin.Sx DIAGNOSTICS
200*61d06d6bSBaptiste Daroussinfor details.
201*61d06d6bSBaptiste Daroussin.Pp
202*61d06d6bSBaptiste DaroussinThe special option
203*61d06d6bSBaptiste Daroussin.Fl W Cm stop
204*61d06d6bSBaptiste Daroussintells
205*61d06d6bSBaptiste Daroussin.Nm
206*61d06d6bSBaptiste Daroussinto exit after parsing a file that causes warnings or errors of at least
207*61d06d6bSBaptiste Daroussinthe requested level.
208*61d06d6bSBaptiste DaroussinNo formatted output will be produced from that file.
209*61d06d6bSBaptiste DaroussinIf both a
210*61d06d6bSBaptiste Daroussin.Ar level
211*61d06d6bSBaptiste Daroussinand
212*61d06d6bSBaptiste Daroussin.Cm stop
213*61d06d6bSBaptiste Daroussinare requested, they can be joined with a comma, for example
214*61d06d6bSBaptiste Daroussin.Fl W Cm error , Ns Cm stop .
215*61d06d6bSBaptiste Daroussin.It Ar file
216*61d06d6bSBaptiste DaroussinRead from the given input file.
217*61d06d6bSBaptiste DaroussinIf multiple files are specified, they are processed in the given order.
218*61d06d6bSBaptiste DaroussinIf unspecified,
219*61d06d6bSBaptiste Daroussin.Nm
220*61d06d6bSBaptiste Daroussinreads from standard input.
221*61d06d6bSBaptiste Daroussin.El
222*61d06d6bSBaptiste Daroussin.Pp
223*61d06d6bSBaptiste DaroussinThe options
224*61d06d6bSBaptiste Daroussin.Fl fhklw
225*61d06d6bSBaptiste Daroussinare also supported and are documented in man(1).
226*61d06d6bSBaptiste DaroussinIn
227*61d06d6bSBaptiste Daroussin.Fl f
228*61d06d6bSBaptiste Daroussinand
229*61d06d6bSBaptiste Daroussin.Fl k
230*61d06d6bSBaptiste Daroussinmode,
231*61d06d6bSBaptiste Daroussin.Nm
232*61d06d6bSBaptiste Daroussinalso supports the options
233*61d06d6bSBaptiste Daroussin.Fl CMmOSs
234*61d06d6bSBaptiste Daroussindescribed in the
235*61d06d6bSBaptiste Daroussin.Xr apropos 1
236*61d06d6bSBaptiste Daroussinmanual.
237*61d06d6bSBaptiste DaroussinThe options
238*61d06d6bSBaptiste Daroussin.Fl fkl
239*61d06d6bSBaptiste Daroussinare mutually exclusive and override each other.
240*61d06d6bSBaptiste Daroussin.Ss ASCII Output
241*61d06d6bSBaptiste DaroussinUse
242*61d06d6bSBaptiste Daroussin.Fl T Cm ascii
243*61d06d6bSBaptiste Daroussinto force text output in 7-bit ASCII character encoding documented in the
244*61d06d6bSBaptiste Daroussin.Xr ascii 7
245*61d06d6bSBaptiste Daroussinmanual page, ignoring the
246*61d06d6bSBaptiste Daroussin.Xr locale 1
247*61d06d6bSBaptiste Daroussinset in the environment.
248*61d06d6bSBaptiste Daroussin.Pp
249*61d06d6bSBaptiste DaroussinFont styles are applied by using back-spaced encoding such that an
250*61d06d6bSBaptiste Daroussinunderlined character
251*61d06d6bSBaptiste Daroussin.Sq c
252*61d06d6bSBaptiste Daroussinis rendered as
253*61d06d6bSBaptiste Daroussin.Sq _ Ns \e[bs] Ns c ,
254*61d06d6bSBaptiste Daroussinwhere
255*61d06d6bSBaptiste Daroussin.Sq \e[bs]
256*61d06d6bSBaptiste Daroussinis the back-space character number 8.
257*61d06d6bSBaptiste DaroussinEmboldened characters are rendered as
258*61d06d6bSBaptiste Daroussin.Sq c Ns \e[bs] Ns c .
259*61d06d6bSBaptiste Daroussin.Pp
260*61d06d6bSBaptiste DaroussinThe special characters documented in
261*61d06d6bSBaptiste Daroussin.Xr mandoc_char 7
262*61d06d6bSBaptiste Daroussinare rendered best-effort in an ASCII equivalent.
263*61d06d6bSBaptiste Daroussin.Pp
264*61d06d6bSBaptiste DaroussinThe following
265*61d06d6bSBaptiste Daroussin.Fl O
266*61d06d6bSBaptiste Daroussinarguments are accepted:
267*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds
268*61d06d6bSBaptiste Daroussin.It Cm indent Ns = Ns Ar indent
269*61d06d6bSBaptiste DaroussinThe left margin for normal text is set to
270*61d06d6bSBaptiste Daroussin.Ar indent
271*61d06d6bSBaptiste Daroussinblank characters instead of the default of five for
272*61d06d6bSBaptiste Daroussin.Xr mdoc 7
273*61d06d6bSBaptiste Daroussinand seven for
274*61d06d6bSBaptiste Daroussin.Xr man 7 .
275*61d06d6bSBaptiste DaroussinIncreasing this is not recommended; it may result in degraded formatting,
276*61d06d6bSBaptiste Daroussinfor example overfull lines or ugly line breaks.
277*61d06d6bSBaptiste DaroussinWhen output is to a pager on a terminal that is less than 66 columns
278*61d06d6bSBaptiste Daroussinwide, the default is reduced to three columns.
279*61d06d6bSBaptiste Daroussin.It Cm mdoc
280*61d06d6bSBaptiste DaroussinFormat
281*61d06d6bSBaptiste Daroussin.Xr man 7
282*61d06d6bSBaptiste Daroussininput files in
283*61d06d6bSBaptiste Daroussin.Xr mdoc 7
284*61d06d6bSBaptiste Daroussinoutput style.
285*61d06d6bSBaptiste DaroussinSpecifically, this suppresses the two additional blank lines near the
286*61d06d6bSBaptiste Daroussintop and the bottom of each page, and it implies
287*61d06d6bSBaptiste Daroussin.Fl O Cm indent Ns =5 .
288*61d06d6bSBaptiste DaroussinOne useful application is for checking that
289*61d06d6bSBaptiste Daroussin.Fl T Cm man
290*61d06d6bSBaptiste Daroussinoutput formats in the same way as the
291*61d06d6bSBaptiste Daroussin.Xr mdoc 7
292*61d06d6bSBaptiste Daroussinsource it was generated from.
293*61d06d6bSBaptiste Daroussin.It Cm width Ns = Ns Ar width
294*61d06d6bSBaptiste DaroussinThe output width is set to
295*61d06d6bSBaptiste Daroussin.Ar width
296*61d06d6bSBaptiste Daroussininstead of the default of 78.
297*61d06d6bSBaptiste DaroussinWhen output is to a pager on a terminal that is less than 79 columns
298*61d06d6bSBaptiste Daroussinwide, the default is reduced to one less than the terminal width.
299*61d06d6bSBaptiste DaroussinIn any case, lines that are output in literal mode are never wrapped
300*61d06d6bSBaptiste Daroussinand may exceed the output width.
301*61d06d6bSBaptiste Daroussin.El
302*61d06d6bSBaptiste Daroussin.Ss HTML Output
303*61d06d6bSBaptiste DaroussinOutput produced by
304*61d06d6bSBaptiste Daroussin.Fl T Cm html
305*61d06d6bSBaptiste Daroussinconforms to HTML5 using optional self-closing tags.
306*61d06d6bSBaptiste DaroussinDefault styles use only CSS1.
307*61d06d6bSBaptiste DaroussinEquations rendered from
308*61d06d6bSBaptiste Daroussin.Xr eqn 7
309*61d06d6bSBaptiste Daroussinblocks use MathML.
310*61d06d6bSBaptiste Daroussin.Pp
311*61d06d6bSBaptiste DaroussinThe
312*61d06d6bSBaptiste Daroussin.Pa mandoc.css
313*61d06d6bSBaptiste Daroussinfile documents style-sheet classes available for customising output.
314*61d06d6bSBaptiste DaroussinIf a style-sheet is not specified with
315*61d06d6bSBaptiste Daroussin.Fl O Cm style ,
316*61d06d6bSBaptiste Daroussin.Fl T Cm html
317*61d06d6bSBaptiste Daroussindefaults to simple output (via an embedded style-sheet)
318*61d06d6bSBaptiste Daroussinreadable in any graphical or text-based web
319*61d06d6bSBaptiste Daroussinbrowser.
320*61d06d6bSBaptiste Daroussin.Pp
321*61d06d6bSBaptiste DaroussinNon-ASCII characters are rendered
322*61d06d6bSBaptiste Daroussinas hexadecimal Unicode character references.
323*61d06d6bSBaptiste Daroussin.Pp
324*61d06d6bSBaptiste DaroussinThe following
325*61d06d6bSBaptiste Daroussin.Fl O
326*61d06d6bSBaptiste Daroussinarguments are accepted:
327*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds
328*61d06d6bSBaptiste Daroussin.It Cm fragment
329*61d06d6bSBaptiste DaroussinOmit the <!DOCTYPE> declaration and the <html>, <head>, and <body>
330*61d06d6bSBaptiste Daroussinelements and only emit the subtree below the <body> element.
331*61d06d6bSBaptiste DaroussinThe
332*61d06d6bSBaptiste Daroussin.Cm style
333*61d06d6bSBaptiste Daroussinargument will be ignored.
334*61d06d6bSBaptiste DaroussinThis is useful when embedding manual content within existing documents.
335*61d06d6bSBaptiste Daroussin.It Cm includes Ns = Ns Ar fmt
336*61d06d6bSBaptiste DaroussinThe string
337*61d06d6bSBaptiste Daroussin.Ar fmt ,
338*61d06d6bSBaptiste Daroussinfor example,
339*61d06d6bSBaptiste Daroussin.Ar ../src/%I.html ,
340*61d06d6bSBaptiste Daroussinis used as a template for linked header files (usually via the
341*61d06d6bSBaptiste Daroussin.Ic \&In
342*61d06d6bSBaptiste Daroussinmacro).
343*61d06d6bSBaptiste DaroussinInstances of
344*61d06d6bSBaptiste Daroussin.Sq \&%I
345*61d06d6bSBaptiste Daroussinare replaced with the include filename.
346*61d06d6bSBaptiste DaroussinThe default is not to present a
347*61d06d6bSBaptiste Daroussinhyperlink.
348*61d06d6bSBaptiste Daroussin.It Cm man Ns = Ns Ar fmt
349*61d06d6bSBaptiste DaroussinThe string
350*61d06d6bSBaptiste Daroussin.Ar fmt ,
351*61d06d6bSBaptiste Daroussinfor example,
352*61d06d6bSBaptiste Daroussin.Ar ../html%S/%N.%S.html ,
353*61d06d6bSBaptiste Daroussinis used as a template for linked manuals (usually via the
354*61d06d6bSBaptiste Daroussin.Ic \&Xr
355*61d06d6bSBaptiste Daroussinmacro).
356*61d06d6bSBaptiste DaroussinInstances of
357*61d06d6bSBaptiste Daroussin.Sq \&%N
358*61d06d6bSBaptiste Daroussinand
359*61d06d6bSBaptiste Daroussin.Sq %S
360*61d06d6bSBaptiste Daroussinare replaced with the linked manual's name and section, respectively.
361*61d06d6bSBaptiste DaroussinIf no section is included, section 1 is assumed.
362*61d06d6bSBaptiste DaroussinThe default is not to
363*61d06d6bSBaptiste Daroussinpresent a hyperlink.
364*61d06d6bSBaptiste Daroussin.It Cm style Ns = Ns Ar style.css
365*61d06d6bSBaptiste DaroussinThe file
366*61d06d6bSBaptiste Daroussin.Ar style.css
367*61d06d6bSBaptiste Daroussinis used for an external style-sheet.
368*61d06d6bSBaptiste DaroussinThis must be a valid absolute or
369*61d06d6bSBaptiste Daroussinrelative URI.
370*61d06d6bSBaptiste Daroussin.El
371*61d06d6bSBaptiste Daroussin.Ss Locale Output
372*61d06d6bSBaptiste DaroussinBy default,
373*61d06d6bSBaptiste Daroussin.Nm
374*61d06d6bSBaptiste Daroussinautomatically selects UTF-8 or ASCII output according to the current
375*61d06d6bSBaptiste Daroussin.Xr locale 1 .
376*61d06d6bSBaptiste DaroussinIf any of the environment variables
377*61d06d6bSBaptiste Daroussin.Ev LC_ALL ,
378*61d06d6bSBaptiste Daroussin.Ev LC_CTYPE ,
379*61d06d6bSBaptiste Daroussinor
380*61d06d6bSBaptiste Daroussin.Ev LANG
381*61d06d6bSBaptiste Daroussinare set and the first one that is set
382*61d06d6bSBaptiste Daroussinselects the UTF-8 character encoding, it produces
383*61d06d6bSBaptiste Daroussin.Sx UTF-8 Output ;
384*61d06d6bSBaptiste Daroussinotherwise, it falls back to
385*61d06d6bSBaptiste Daroussin.Sx ASCII Output .
386*61d06d6bSBaptiste DaroussinThis output mode can also be selected explicitly with
387*61d06d6bSBaptiste Daroussin.Fl T Cm locale .
388*61d06d6bSBaptiste Daroussin.Ss Man Output
389*61d06d6bSBaptiste DaroussinUse
390*61d06d6bSBaptiste Daroussin.Fl T Cm man
391*61d06d6bSBaptiste Daroussinto translate
392*61d06d6bSBaptiste Daroussin.Xr mdoc 7
393*61d06d6bSBaptiste Daroussininput into
394*61d06d6bSBaptiste Daroussin.Xr man 7
395*61d06d6bSBaptiste Daroussinoutput format.
396*61d06d6bSBaptiste DaroussinThis is useful for distributing manual sources to legacy systems
397*61d06d6bSBaptiste Daroussinlacking
398*61d06d6bSBaptiste Daroussin.Xr mdoc 7
399*61d06d6bSBaptiste Daroussinformatters.
400*61d06d6bSBaptiste Daroussin.Pp
401*61d06d6bSBaptiste DaroussinIf the input format of a file is
402*61d06d6bSBaptiste Daroussin.Xr man 7 ,
403*61d06d6bSBaptiste Daroussinthe input is copied to the output, expanding any
404*61d06d6bSBaptiste Daroussin.Xr roff 7
405*61d06d6bSBaptiste Daroussin.Ic so
406*61d06d6bSBaptiste Daroussinrequests.
407*61d06d6bSBaptiste DaroussinThe parser is also run, and as usual, the
408*61d06d6bSBaptiste Daroussin.Fl W
409*61d06d6bSBaptiste Daroussinlevel controls which
410*61d06d6bSBaptiste Daroussin.Sx DIAGNOSTICS
411*61d06d6bSBaptiste Daroussinare displayed before copying the input to the output.
412*61d06d6bSBaptiste Daroussin.Ss Markdown Output
413*61d06d6bSBaptiste DaroussinUse
414*61d06d6bSBaptiste Daroussin.Fl T Cm markdown
415*61d06d6bSBaptiste Daroussinto translate
416*61d06d6bSBaptiste Daroussin.Xr mdoc 7
417*61d06d6bSBaptiste Daroussininput to the markdown format conforming to
418*61d06d6bSBaptiste Daroussin.Lk http://daringfireball.net/projects/markdown/syntax.text\
419*61d06d6bSBaptiste Daroussin "John Gruber's 2004 specification" .
420*61d06d6bSBaptiste DaroussinThe output also almost conforms to the
421*61d06d6bSBaptiste Daroussin.Lk http://commonmark.org/ CommonMark
422*61d06d6bSBaptiste Daroussinspecification.
423*61d06d6bSBaptiste Daroussin.Pp
424*61d06d6bSBaptiste DaroussinThe character set used for the markdown output is ASCII.
425*61d06d6bSBaptiste DaroussinNon-ASCII characters are encoded as HTML entities.
426*61d06d6bSBaptiste DaroussinSince that is not possible in literal font contexts, because these
427*61d06d6bSBaptiste Daroussinare rendered as code spans and code blocks in the markdown output,
428*61d06d6bSBaptiste Daroussinnon-ASCII characters are transliterated to ASCII approximations in
429*61d06d6bSBaptiste Daroussinthese contexts.
430*61d06d6bSBaptiste Daroussin.Pp
431*61d06d6bSBaptiste DaroussinMarkdown is a very weak markup language, so all semantic markup is
432*61d06d6bSBaptiste Daroussinlost, and even part of the presentational markup may be lost.
433*61d06d6bSBaptiste DaroussinDo not use this as an intermediate step in converting to HTML;
434*61d06d6bSBaptiste Daroussininstead, use
435*61d06d6bSBaptiste Daroussin.Fl T Cm html
436*61d06d6bSBaptiste Daroussindirectly.
437*61d06d6bSBaptiste Daroussin.Pp
438*61d06d6bSBaptiste DaroussinThe
439*61d06d6bSBaptiste Daroussin.Xr man 7 ,
440*61d06d6bSBaptiste Daroussin.Xr tbl 7 ,
441*61d06d6bSBaptiste Daroussinand
442*61d06d6bSBaptiste Daroussin.Xr eqn 7
443*61d06d6bSBaptiste Daroussininput languages are not supported by
444*61d06d6bSBaptiste Daroussin.Fl T Cm markdown
445*61d06d6bSBaptiste Daroussinoutput mode.
446*61d06d6bSBaptiste Daroussin.Ss PDF Output
447*61d06d6bSBaptiste DaroussinPDF-1.1 output may be generated by
448*61d06d6bSBaptiste Daroussin.Fl T Cm pdf .
449*61d06d6bSBaptiste DaroussinSee
450*61d06d6bSBaptiste Daroussin.Sx PostScript Output
451*61d06d6bSBaptiste Daroussinfor
452*61d06d6bSBaptiste Daroussin.Fl O
453*61d06d6bSBaptiste Daroussinarguments and defaults.
454*61d06d6bSBaptiste Daroussin.Ss PostScript Output
455*61d06d6bSBaptiste DaroussinPostScript
456*61d06d6bSBaptiste Daroussin.Qq Adobe-3.0
457*61d06d6bSBaptiste DaroussinLevel-2 pages may be generated by
458*61d06d6bSBaptiste Daroussin.Fl T Cm ps .
459*61d06d6bSBaptiste DaroussinOutput pages default to letter sized and are rendered in the Times font
460*61d06d6bSBaptiste Daroussinfamily, 11-point.
461*61d06d6bSBaptiste DaroussinMargins are calculated as 1/9 the page length and width.
462*61d06d6bSBaptiste DaroussinLine-height is 1.4m.
463*61d06d6bSBaptiste Daroussin.Pp
464*61d06d6bSBaptiste DaroussinSpecial characters are rendered as in
465*61d06d6bSBaptiste Daroussin.Sx ASCII Output .
466*61d06d6bSBaptiste Daroussin.Pp
467*61d06d6bSBaptiste DaroussinThe following
468*61d06d6bSBaptiste Daroussin.Fl O
469*61d06d6bSBaptiste Daroussinarguments are accepted:
470*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds
471*61d06d6bSBaptiste Daroussin.It Cm paper Ns = Ns Ar name
472*61d06d6bSBaptiste DaroussinThe paper size
473*61d06d6bSBaptiste Daroussin.Ar name
474*61d06d6bSBaptiste Daroussinmay be one of
475*61d06d6bSBaptiste Daroussin.Ar a3 ,
476*61d06d6bSBaptiste Daroussin.Ar a4 ,
477*61d06d6bSBaptiste Daroussin.Ar a5 ,
478*61d06d6bSBaptiste Daroussin.Ar legal ,
479*61d06d6bSBaptiste Daroussinor
480*61d06d6bSBaptiste Daroussin.Ar letter .
481*61d06d6bSBaptiste DaroussinYou may also manually specify dimensions as
482*61d06d6bSBaptiste Daroussin.Ar NNxNN ,
483*61d06d6bSBaptiste Daroussinwidth by height in millimetres.
484*61d06d6bSBaptiste DaroussinIf an unknown value is encountered,
485*61d06d6bSBaptiste Daroussin.Ar letter
486*61d06d6bSBaptiste Daroussinis used.
487*61d06d6bSBaptiste Daroussin.El
488*61d06d6bSBaptiste Daroussin.Ss UTF-8 Output
489*61d06d6bSBaptiste DaroussinUse
490*61d06d6bSBaptiste Daroussin.Fl T Cm utf8
491*61d06d6bSBaptiste Daroussinto force text output in UTF-8 multi-byte character encoding,
492*61d06d6bSBaptiste Daroussinignoring the
493*61d06d6bSBaptiste Daroussin.Xr locale 1
494*61d06d6bSBaptiste Daroussinsettings in the environment.
495*61d06d6bSBaptiste DaroussinSee
496*61d06d6bSBaptiste Daroussin.Sx ASCII Output
497*61d06d6bSBaptiste Daroussinregarding font styles and
498*61d06d6bSBaptiste Daroussin.Fl O
499*61d06d6bSBaptiste Daroussinarguments.
500*61d06d6bSBaptiste Daroussin.Pp
501*61d06d6bSBaptiste DaroussinOn operating systems lacking locale or wide character support, and
502*61d06d6bSBaptiste Daroussinon those where the internal character representation is not UCS-4,
503*61d06d6bSBaptiste Daroussin.Nm
504*61d06d6bSBaptiste Daroussinalways falls back to
505*61d06d6bSBaptiste Daroussin.Sx ASCII Output .
506*61d06d6bSBaptiste Daroussin.Ss Syntax tree output
507*61d06d6bSBaptiste DaroussinUse
508*61d06d6bSBaptiste Daroussin.Fl T Cm tree
509*61d06d6bSBaptiste Daroussinto show a human readable representation of the syntax tree.
510*61d06d6bSBaptiste DaroussinIt is useful for debugging the source code of manual pages.
511*61d06d6bSBaptiste DaroussinThe exact format is subject to change, so don't write parsers for it.
512*61d06d6bSBaptiste Daroussin.Pp
513*61d06d6bSBaptiste DaroussinThe first paragraph shows meta data found in the
514*61d06d6bSBaptiste Daroussin.Xr mdoc 7
515*61d06d6bSBaptiste Daroussinprologue, on the
516*61d06d6bSBaptiste Daroussin.Xr man 7
517*61d06d6bSBaptiste Daroussin.Ic \&TH
518*61d06d6bSBaptiste Daroussinline, or the fallbacks used.
519*61d06d6bSBaptiste Daroussin.Pp
520*61d06d6bSBaptiste DaroussinIn the tree dump, each output line shows one syntax tree node.
521*61d06d6bSBaptiste DaroussinChild nodes are indented with respect to their parent node.
522*61d06d6bSBaptiste DaroussinThe columns are:
523*61d06d6bSBaptiste Daroussin.Pp
524*61d06d6bSBaptiste Daroussin.Bl -enum -compact
525*61d06d6bSBaptiste Daroussin.It
526*61d06d6bSBaptiste DaroussinFor macro nodes, the macro name; for text and
527*61d06d6bSBaptiste Daroussin.Xr tbl 7
528*61d06d6bSBaptiste Daroussinnodes, the content.
529*61d06d6bSBaptiste DaroussinThere is a special format for
530*61d06d6bSBaptiste Daroussin.Xr eqn 7
531*61d06d6bSBaptiste Daroussinnodes.
532*61d06d6bSBaptiste Daroussin.It
533*61d06d6bSBaptiste DaroussinNode type (text, elem, block, head, body, body-end, tail, tbl, eqn).
534*61d06d6bSBaptiste Daroussin.It
535*61d06d6bSBaptiste DaroussinFlags:
536*61d06d6bSBaptiste Daroussin.Bl -dash -compact
537*61d06d6bSBaptiste Daroussin.It
538*61d06d6bSBaptiste DaroussinAn opening parenthesis if the node is an opening delimiter.
539*61d06d6bSBaptiste Daroussin.It
540*61d06d6bSBaptiste DaroussinAn asterisk if the node starts a new input line.
541*61d06d6bSBaptiste Daroussin.It
542*61d06d6bSBaptiste DaroussinThe input line number (starting at one).
543*61d06d6bSBaptiste Daroussin.It
544*61d06d6bSBaptiste DaroussinA colon.
545*61d06d6bSBaptiste Daroussin.It
546*61d06d6bSBaptiste DaroussinThe input column number (starting at one).
547*61d06d6bSBaptiste Daroussin.It
548*61d06d6bSBaptiste DaroussinA closing parenthesis if the node is a closing delimiter.
549*61d06d6bSBaptiste Daroussin.It
550*61d06d6bSBaptiste DaroussinA full stop if the node ends a sentence.
551*61d06d6bSBaptiste Daroussin.It
552*61d06d6bSBaptiste DaroussinBROKEN if the node is a block broken by another block.
553*61d06d6bSBaptiste Daroussin.It
554*61d06d6bSBaptiste DaroussinNOSRC if the node is not in the input file,
555*61d06d6bSBaptiste Daroussinbut automatically generated from macros.
556*61d06d6bSBaptiste Daroussin.It
557*61d06d6bSBaptiste DaroussinNOPRT if the node is not supposed to generate output
558*61d06d6bSBaptiste Daroussinfor any output format.
559*61d06d6bSBaptiste Daroussin.El
560*61d06d6bSBaptiste Daroussin.El
561*61d06d6bSBaptiste Daroussin.Pp
562*61d06d6bSBaptiste DaroussinThe following
563*61d06d6bSBaptiste Daroussin.Fl O
564*61d06d6bSBaptiste Daroussinargument is accepted:
565*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds
566*61d06d6bSBaptiste Daroussin.It Cm noval
567*61d06d6bSBaptiste DaroussinSkip validation and show the unvalidated syntax tree.
568*61d06d6bSBaptiste DaroussinThis can help to find out whether a given behaviour is caused by
569*61d06d6bSBaptiste Daroussinthe parser or by the validator.
570*61d06d6bSBaptiste DaroussinMeta data is not available in this case.
571*61d06d6bSBaptiste Daroussin.El
572*61d06d6bSBaptiste Daroussin.Sh ENVIRONMENT
573*61d06d6bSBaptiste Daroussin.Bl -tag -width MANPAGER
574*61d06d6bSBaptiste Daroussin.It Ev LC_CTYPE
575*61d06d6bSBaptiste DaroussinThe character encoding
576*61d06d6bSBaptiste Daroussin.Xr locale 1 .
577*61d06d6bSBaptiste DaroussinWhen
578*61d06d6bSBaptiste Daroussin.Sx Locale Output
579*61d06d6bSBaptiste Daroussinis selected, it decides whether to use ASCII or UTF-8 output format.
580*61d06d6bSBaptiste DaroussinIt never affects the interpretation of input files.
581*61d06d6bSBaptiste Daroussin.It Ev MANPAGER
582*61d06d6bSBaptiste DaroussinAny non-empty value of the environment variable
583*61d06d6bSBaptiste Daroussin.Ev MANPAGER
584*61d06d6bSBaptiste Daroussinis used instead of the standard pagination program,
585*61d06d6bSBaptiste Daroussin.Xr more 1 ;
586*61d06d6bSBaptiste Daroussinsee
587*61d06d6bSBaptiste Daroussin.Xr man 1
588*61d06d6bSBaptiste Daroussinfor details.
589*61d06d6bSBaptiste DaroussinOnly used if
590*61d06d6bSBaptiste Daroussin.Fl a
591*61d06d6bSBaptiste Daroussinor
592*61d06d6bSBaptiste Daroussin.Fl l
593*61d06d6bSBaptiste Daroussinis specified.
594*61d06d6bSBaptiste Daroussin.It Ev PAGER
595*61d06d6bSBaptiste DaroussinSpecifies the pagination program to use when
596*61d06d6bSBaptiste Daroussin.Ev MANPAGER
597*61d06d6bSBaptiste Daroussinis not defined.
598*61d06d6bSBaptiste DaroussinIf neither PAGER nor MANPAGER is defined,
599*61d06d6bSBaptiste Daroussin.Xr more 1
600*61d06d6bSBaptiste Daroussin.Fl s
601*61d06d6bSBaptiste Daroussinis used.
602*61d06d6bSBaptiste DaroussinOnly used if
603*61d06d6bSBaptiste Daroussin.Fl a
604*61d06d6bSBaptiste Daroussinor
605*61d06d6bSBaptiste Daroussin.Fl l
606*61d06d6bSBaptiste Daroussinis specified.
607*61d06d6bSBaptiste Daroussin.El
608*61d06d6bSBaptiste Daroussin.Sh EXIT STATUS
609*61d06d6bSBaptiste DaroussinThe
610*61d06d6bSBaptiste Daroussin.Nm
611*61d06d6bSBaptiste Daroussinutility exits with one of the following values, controlled by the message
612*61d06d6bSBaptiste Daroussin.Ar level
613*61d06d6bSBaptiste Daroussinassociated with the
614*61d06d6bSBaptiste Daroussin.Fl W
615*61d06d6bSBaptiste Daroussinoption:
616*61d06d6bSBaptiste Daroussin.Pp
617*61d06d6bSBaptiste Daroussin.Bl -tag -width Ds -compact
618*61d06d6bSBaptiste Daroussin.It 0
619*61d06d6bSBaptiste DaroussinNo base system convention violations, style suggestions, warnings,
620*61d06d6bSBaptiste Daroussinor errors occurred, or those that did were ignored because they
621*61d06d6bSBaptiste Daroussinwere lower than the requested
622*61d06d6bSBaptiste Daroussin.Ar level .
623*61d06d6bSBaptiste Daroussin.It 1
624*61d06d6bSBaptiste DaroussinAt least one base system convention violation or style suggestion
625*61d06d6bSBaptiste Daroussinoccurred, but no warning or error, and
626*61d06d6bSBaptiste Daroussin.Fl W Cm base
627*61d06d6bSBaptiste Daroussinor
628*61d06d6bSBaptiste Daroussin.Fl W Cm style
629*61d06d6bSBaptiste Daroussinwas specified.
630*61d06d6bSBaptiste Daroussin.It 2
631*61d06d6bSBaptiste DaroussinAt least one warning occurred, but no error, and
632*61d06d6bSBaptiste Daroussin.Fl W Cm warning
633*61d06d6bSBaptiste Daroussinor a lower
634*61d06d6bSBaptiste Daroussin.Ar level
635*61d06d6bSBaptiste Daroussinwas requested.
636*61d06d6bSBaptiste Daroussin.It 3
637*61d06d6bSBaptiste DaroussinAt least one parsing error occurred,
638*61d06d6bSBaptiste Daroussinbut no unsupported feature was encountered, and
639*61d06d6bSBaptiste Daroussin.Fl W Cm error
640*61d06d6bSBaptiste Daroussinor a lower
641*61d06d6bSBaptiste Daroussin.Ar level
642*61d06d6bSBaptiste Daroussinwas requested.
643*61d06d6bSBaptiste Daroussin.It 4
644*61d06d6bSBaptiste DaroussinAt least one unsupported feature was encountered, and
645*61d06d6bSBaptiste Daroussin.Fl W Cm unsupp
646*61d06d6bSBaptiste Daroussinor a lower
647*61d06d6bSBaptiste Daroussin.Ar level
648*61d06d6bSBaptiste Daroussinwas requested.
649*61d06d6bSBaptiste Daroussin.It 5
650*61d06d6bSBaptiste DaroussinInvalid command line arguments were specified.
651*61d06d6bSBaptiste DaroussinNo input files have been read.
652*61d06d6bSBaptiste Daroussin.It 6
653*61d06d6bSBaptiste DaroussinAn operating system error occurred, for example exhaustion
654*61d06d6bSBaptiste Daroussinof memory, file descriptors, or process table entries.
655*61d06d6bSBaptiste DaroussinSuch errors cause
656*61d06d6bSBaptiste Daroussin.Nm
657*61d06d6bSBaptiste Daroussinto exit at once, possibly in the middle of parsing or formatting a file.
658*61d06d6bSBaptiste Daroussin.El
659*61d06d6bSBaptiste Daroussin.Pp
660*61d06d6bSBaptiste DaroussinNote that selecting
661*61d06d6bSBaptiste Daroussin.Fl T Cm lint
662*61d06d6bSBaptiste Daroussinoutput mode implies
663*61d06d6bSBaptiste Daroussin.Fl W Cm all .
664*61d06d6bSBaptiste Daroussin.Sh EXAMPLES
665*61d06d6bSBaptiste DaroussinTo page manuals to the terminal:
666*61d06d6bSBaptiste Daroussin.Pp
667*61d06d6bSBaptiste Daroussin.Dl $ mandoc -l mandoc.1 man.1 apropos.1 makewhatis.8
668*61d06d6bSBaptiste Daroussin.Pp
669*61d06d6bSBaptiste DaroussinTo produce HTML manuals with
670*61d06d6bSBaptiste Daroussin.Pa mandoc.css
671*61d06d6bSBaptiste Daroussinas the style-sheet:
672*61d06d6bSBaptiste Daroussin.Pp
673*61d06d6bSBaptiste Daroussin.Dl $ mandoc \-T html -O style=mandoc.css mdoc.7 \*(Gt mdoc.7.html
674*61d06d6bSBaptiste Daroussin.Pp
675*61d06d6bSBaptiste DaroussinTo check over a large set of manuals:
676*61d06d6bSBaptiste Daroussin.Pp
677*61d06d6bSBaptiste Daroussin.Dl $ mandoc \-T lint \(gafind /usr/src -name \e*\e.[1-9]\(ga
678*61d06d6bSBaptiste Daroussin.Pp
679*61d06d6bSBaptiste DaroussinTo produce a series of PostScript manuals for A4 paper:
680*61d06d6bSBaptiste Daroussin.Pp
681*61d06d6bSBaptiste Daroussin.Dl $ mandoc \-T ps \-O paper=a4 mdoc.7 man.7 \*(Gt manuals.ps
682*61d06d6bSBaptiste Daroussin.Pp
683*61d06d6bSBaptiste DaroussinConvert a modern
684*61d06d6bSBaptiste Daroussin.Xr mdoc 7
685*61d06d6bSBaptiste Daroussinmanual to the older
686*61d06d6bSBaptiste Daroussin.Xr man 7
687*61d06d6bSBaptiste Daroussinformat, for use on systems lacking an
688*61d06d6bSBaptiste Daroussin.Xr mdoc 7
689*61d06d6bSBaptiste Daroussinparser:
690*61d06d6bSBaptiste Daroussin.Pp
691*61d06d6bSBaptiste Daroussin.Dl $ mandoc \-T man foo.mdoc \*(Gt foo.man
692*61d06d6bSBaptiste Daroussin.Sh DIAGNOSTICS
693*61d06d6bSBaptiste DaroussinMessages displayed by
694*61d06d6bSBaptiste Daroussin.Nm
695*61d06d6bSBaptiste Daroussinfollow this format:
696*61d06d6bSBaptiste Daroussin.Bd -ragged -offset indent
697*61d06d6bSBaptiste Daroussin.Nm :
698*61d06d6bSBaptiste Daroussin.Ar file : Ns Ar line : Ns Ar column : level : message : macro args
699*61d06d6bSBaptiste Daroussin.Pq Ar os
700*61d06d6bSBaptiste Daroussin.Ed
701*61d06d6bSBaptiste Daroussin.Pp
702*61d06d6bSBaptiste DaroussinLine and column numbers start at 1.
703*61d06d6bSBaptiste DaroussinBoth are omitted for messages referring to an input file as a whole.
704*61d06d6bSBaptiste DaroussinMacro names and arguments are omitted where meaningless.
705*61d06d6bSBaptiste DaroussinThe
706*61d06d6bSBaptiste Daroussin.Ar os
707*61d06d6bSBaptiste Daroussinoperating system specifier is omitted for messages that are relevant
708*61d06d6bSBaptiste Daroussinfor all operating systems.
709*61d06d6bSBaptiste DaroussinFatal messages about invalid command line arguments
710*61d06d6bSBaptiste Daroussinor operating system errors, for example when memory is exhausted,
711*61d06d6bSBaptiste Daroussinmay also omit the
712*61d06d6bSBaptiste Daroussin.Ar file
713*61d06d6bSBaptiste Daroussinand
714*61d06d6bSBaptiste Daroussin.Ar level
715*61d06d6bSBaptiste Daroussinfields.
716*61d06d6bSBaptiste Daroussin.Pp
717*61d06d6bSBaptiste DaroussinMessage levels have the following meanings:
718*61d06d6bSBaptiste Daroussin.Bl -tag -width "warning"
719*61d06d6bSBaptiste Daroussin.It Cm unsupp
720*61d06d6bSBaptiste DaroussinAn input file uses unsupported low-level
721*61d06d6bSBaptiste Daroussin.Xr roff 7
722*61d06d6bSBaptiste Daroussinfeatures.
723*61d06d6bSBaptiste DaroussinThe output may be incomplete and/or misformatted,
724*61d06d6bSBaptiste Daroussinso using GNU troff instead of
725*61d06d6bSBaptiste Daroussin.Nm
726*61d06d6bSBaptiste Daroussinto process the file may be preferable.
727*61d06d6bSBaptiste Daroussin.It Cm error
728*61d06d6bSBaptiste DaroussinIndicates a risk of information loss or severe misformatting,
729*61d06d6bSBaptiste Daroussinin most cases caused by serious syntax errors.
730*61d06d6bSBaptiste Daroussin.It Cm warning
731*61d06d6bSBaptiste DaroussinIndicates a risk that the information shown or its formatting
732*61d06d6bSBaptiste Daroussinmay mismatch the author's intent in minor ways.
733*61d06d6bSBaptiste DaroussinAdditionally, syntax errors are classified at least as warnings,
734*61d06d6bSBaptiste Daroussineven if they do not usually cause misformatting.
735*61d06d6bSBaptiste Daroussin.It Cm style
736*61d06d6bSBaptiste DaroussinAn input file uses dubious or discouraged style.
737*61d06d6bSBaptiste DaroussinThis is not a complaint about the syntax, and probably neither
738*61d06d6bSBaptiste Daroussinformatting nor portability are in danger.
739*61d06d6bSBaptiste DaroussinWhile great care is taken to avoid false positives on the higher
740*61d06d6bSBaptiste Daroussinmessage levels, the
741*61d06d6bSBaptiste Daroussin.Cm style
742*61d06d6bSBaptiste Daroussinlevel tries to reduce the probability that issues go unnoticed,
743*61d06d6bSBaptiste Daroussinso it may occasionally issue bogus suggestions.
744*61d06d6bSBaptiste DaroussinPlease use your good judgement to decide whether any particular
745*61d06d6bSBaptiste Daroussin.Cm style
746*61d06d6bSBaptiste Daroussinsuggestion really justifies a change to the input file.
747*61d06d6bSBaptiste Daroussin.It Cm base
748*61d06d6bSBaptiste DaroussinA convention used in the base system of a specific operating system
749*61d06d6bSBaptiste Daroussinis not adhered to.
750*61d06d6bSBaptiste DaroussinThese are not markup mistakes, and neither the quality of formatting
751*61d06d6bSBaptiste Daroussinnor portability are in danger.
752*61d06d6bSBaptiste DaroussinMessages of the
753*61d06d6bSBaptiste Daroussin.Cm base
754*61d06d6bSBaptiste Daroussinlevel are printed with the more intuitive
755*61d06d6bSBaptiste Daroussin.Cm style
756*61d06d6bSBaptiste Daroussin.Ar level
757*61d06d6bSBaptiste Daroussintag.
758*61d06d6bSBaptiste Daroussin.El
759*61d06d6bSBaptiste Daroussin.Pp
760*61d06d6bSBaptiste DaroussinMessages of the
761*61d06d6bSBaptiste Daroussin.Cm base ,
762*61d06d6bSBaptiste Daroussin.Cm style ,
763*61d06d6bSBaptiste Daroussin.Cm warning ,
764*61d06d6bSBaptiste Daroussin.Cm error ,
765*61d06d6bSBaptiste Daroussinand
766*61d06d6bSBaptiste Daroussin.Cm unsupp
767*61d06d6bSBaptiste Daroussinlevels except those about non-existent or unreadable input files
768*61d06d6bSBaptiste Daroussinare hidden unless their level, or a lower level, is requested using a
769*61d06d6bSBaptiste Daroussin.Fl W
770*61d06d6bSBaptiste Daroussinoption or
771*61d06d6bSBaptiste Daroussin.Fl T Cm lint
772*61d06d6bSBaptiste Daroussinoutput mode.
773*61d06d6bSBaptiste Daroussin.Pp
774*61d06d6bSBaptiste DaroussinAs indicated below, all
775*61d06d6bSBaptiste Daroussin.Cm base
776*61d06d6bSBaptiste Daroussinand some
777*61d06d6bSBaptiste Daroussin.Cm style
778*61d06d6bSBaptiste Daroussinchecks are only performed if a specific operating system name occurs
779*61d06d6bSBaptiste Daroussinin the arguments of the
780*61d06d6bSBaptiste Daroussin.Fl W
781*61d06d6bSBaptiste Daroussincommand line option, of the
782*61d06d6bSBaptiste Daroussin.Ic \&Os
783*61d06d6bSBaptiste Daroussinmacro, of the
784*61d06d6bSBaptiste Daroussin.Fl Ios
785*61d06d6bSBaptiste Daroussincommand line option, or, if neither are present, in the return value
786*61d06d6bSBaptiste Daroussinof the
787*61d06d6bSBaptiste Daroussin.Xr uname 3
788*61d06d6bSBaptiste Daroussinfunction.
789*61d06d6bSBaptiste Daroussin.Ss Conventions for base system manuals
790*61d06d6bSBaptiste Daroussin.Bl -ohang
791*61d06d6bSBaptiste Daroussin.It Sy "Mdocdate found"
792*61d06d6bSBaptiste Daroussin.Pq mdoc , Nx
793*61d06d6bSBaptiste DaroussinThe
794*61d06d6bSBaptiste Daroussin.Ic \&Dd
795*61d06d6bSBaptiste Daroussinmacro uses CVS
796*61d06d6bSBaptiste Daroussin.Ic Mdocdate
797*61d06d6bSBaptiste Daroussinkeyword substitution, which is not supported by the
798*61d06d6bSBaptiste Daroussin.Nx
799*61d06d6bSBaptiste Daroussinbase system.
800*61d06d6bSBaptiste DaroussinConsider using the conventional
801*61d06d6bSBaptiste Daroussin.Dq "Month dd, yyyy"
802*61d06d6bSBaptiste Daroussinformat instead.
803*61d06d6bSBaptiste Daroussin.It Sy "Mdocdate missing"
804*61d06d6bSBaptiste Daroussin.Pq mdoc , Ox
805*61d06d6bSBaptiste DaroussinThe
806*61d06d6bSBaptiste Daroussin.Ic \&Dd
807*61d06d6bSBaptiste Daroussinmacro does not use CVS
808*61d06d6bSBaptiste Daroussin.Ic Mdocdate
809*61d06d6bSBaptiste Daroussinkeyword substitution, but using it is conventionally expected in the
810*61d06d6bSBaptiste Daroussin.Ox
811*61d06d6bSBaptiste Daroussinbase system.
812*61d06d6bSBaptiste Daroussin.It Sy "unknown architecture"
813*61d06d6bSBaptiste Daroussin.Pq mdoc , Ox , Nx
814*61d06d6bSBaptiste DaroussinThe third argument of the
815*61d06d6bSBaptiste Daroussin.Ic \&Dt
816*61d06d6bSBaptiste Daroussinmacro does not match any of the architectures this operating system
817*61d06d6bSBaptiste Daroussinis running on.
818*61d06d6bSBaptiste Daroussin.It Sy "operating system explicitly specified"
819*61d06d6bSBaptiste Daroussin.Pq mdoc , Ox , Nx
820*61d06d6bSBaptiste DaroussinThe
821*61d06d6bSBaptiste Daroussin.Ic \&Os
822*61d06d6bSBaptiste Daroussinmacro has an argument.
823*61d06d6bSBaptiste DaroussinIn the base system, it is conventionally left blank.
824*61d06d6bSBaptiste Daroussin.It Sy "RCS id missing"
825*61d06d6bSBaptiste Daroussin.Pq Ox , Nx
826*61d06d6bSBaptiste DaroussinThe manual page lacks the comment line with the RCS identifier
827*61d06d6bSBaptiste Daroussingenerated by CVS
828*61d06d6bSBaptiste Daroussin.Ic OpenBSD
829*61d06d6bSBaptiste Daroussinor
830*61d06d6bSBaptiste Daroussin.Ic NetBSD
831*61d06d6bSBaptiste Daroussinkeyword substitution as conventionally used in these operating systems.
832*61d06d6bSBaptiste Daroussin.It Sy "referenced manual not found"
833*61d06d6bSBaptiste Daroussin.Pq mdoc
834*61d06d6bSBaptiste DaroussinAn
835*61d06d6bSBaptiste Daroussin.Ic \&Xr
836*61d06d6bSBaptiste Daroussinmacro references a manual page that is not found in the base system.
837*61d06d6bSBaptiste DaroussinThe path to look for base system manuals is configurable at compile
838*61d06d6bSBaptiste Daroussintime and defaults to
839*61d06d6bSBaptiste Daroussin.Pa /usr/share/man : /usr/X11R6/man .
840*61d06d6bSBaptiste Daroussin.El
841*61d06d6bSBaptiste Daroussin.Ss Style suggestions
842*61d06d6bSBaptiste Daroussin.Bl -ohang
843*61d06d6bSBaptiste Daroussin.It Sy "legacy man(7) date format"
844*61d06d6bSBaptiste Daroussin.Pq mdoc
845*61d06d6bSBaptiste DaroussinThe
846*61d06d6bSBaptiste Daroussin.Ic \&Dd
847*61d06d6bSBaptiste Daroussinmacro uses the legacy
848*61d06d6bSBaptiste Daroussin.Xr man 7
849*61d06d6bSBaptiste Daroussindate format
850*61d06d6bSBaptiste Daroussin.Dq yyyy-dd-mm .
851*61d06d6bSBaptiste DaroussinConsider using the conventional
852*61d06d6bSBaptiste Daroussin.Xr mdoc 7
853*61d06d6bSBaptiste Daroussindate format
854*61d06d6bSBaptiste Daroussin.Dq "Month dd, yyyy"
855*61d06d6bSBaptiste Daroussininstead.
856*61d06d6bSBaptiste Daroussin.It Sy "normalizing date format to" : No ...
857*61d06d6bSBaptiste Daroussin.Pq mdoc , man
858*61d06d6bSBaptiste DaroussinThe
859*61d06d6bSBaptiste Daroussin.Ic \&Dd
860*61d06d6bSBaptiste Daroussinor
861*61d06d6bSBaptiste Daroussin.Ic \&TH
862*61d06d6bSBaptiste Daroussinmacro provides an abbreviated month name or a day number with a
863*61d06d6bSBaptiste Daroussinleading zero.
864*61d06d6bSBaptiste DaroussinIn the formatted output, the month name is written out in full
865*61d06d6bSBaptiste Daroussinand the leading zero is omitted.
866*61d06d6bSBaptiste Daroussin.It Sy "lower case character in document title"
867*61d06d6bSBaptiste Daroussin.Pq mdoc , man
868*61d06d6bSBaptiste DaroussinThe title is still used as given in the
869*61d06d6bSBaptiste Daroussin.Ic \&Dt
870*61d06d6bSBaptiste Daroussinor
871*61d06d6bSBaptiste Daroussin.Ic \&TH
872*61d06d6bSBaptiste Daroussinmacro.
873*61d06d6bSBaptiste Daroussin.It Sy "duplicate RCS id"
874*61d06d6bSBaptiste DaroussinA single manual page contains two copies of the RCS identifier for
875*61d06d6bSBaptiste Daroussinthe same operating system.
876*61d06d6bSBaptiste DaroussinConsider deleting the later instance and moving the first one up
877*61d06d6bSBaptiste Daroussinto the top of the page.
878*61d06d6bSBaptiste Daroussin.It Sy "possible typo in section name"
879*61d06d6bSBaptiste Daroussin.Pq mdoc
880*61d06d6bSBaptiste DaroussinFuzzy string matching revealed that the argument of an
881*61d06d6bSBaptiste Daroussin.Ic \&Sh
882*61d06d6bSBaptiste Daroussinmacro is similar, but not identical to a standard section name.
883*61d06d6bSBaptiste Daroussin.It Sy "unterminated quoted argument"
884*61d06d6bSBaptiste Daroussin.Pq roff
885*61d06d6bSBaptiste DaroussinMacro arguments can be enclosed in double quote characters
886*61d06d6bSBaptiste Daroussinsuch that space characters and macro names contained in the quoted
887*61d06d6bSBaptiste Daroussinargument need not be escaped.
888*61d06d6bSBaptiste DaroussinThe closing quote of the last argument of a macro can be omitted.
889*61d06d6bSBaptiste DaroussinHowever, omitting it is not recommended because it makes the code
890*61d06d6bSBaptiste Daroussinharder to read.
891*61d06d6bSBaptiste Daroussin.It Sy "useless macro"
892*61d06d6bSBaptiste Daroussin.Pq mdoc
893*61d06d6bSBaptiste DaroussinA
894*61d06d6bSBaptiste Daroussin.Ic \&Bt ,
895*61d06d6bSBaptiste Daroussin.Ic \&Tn ,
896*61d06d6bSBaptiste Daroussinor
897*61d06d6bSBaptiste Daroussin.Ic \&Ud
898*61d06d6bSBaptiste Daroussinmacro was found.
899*61d06d6bSBaptiste DaroussinSimply delete it: it serves no useful purpose.
900*61d06d6bSBaptiste Daroussin.It Sy "consider using OS macro"
901*61d06d6bSBaptiste Daroussin.Pq mdoc
902*61d06d6bSBaptiste DaroussinA string was found in plain text or in a
903*61d06d6bSBaptiste Daroussin.Ic \&Bx
904*61d06d6bSBaptiste Daroussinmacro that could be represented using
905*61d06d6bSBaptiste Daroussin.Ic \&Ox ,
906*61d06d6bSBaptiste Daroussin.Ic \&Nx ,
907*61d06d6bSBaptiste Daroussin.Ic \&Fx ,
908*61d06d6bSBaptiste Daroussinor
909*61d06d6bSBaptiste Daroussin.Ic \&Dx .
910*61d06d6bSBaptiste Daroussin.It Sy "errnos out of order"
911*61d06d6bSBaptiste Daroussin.Pq mdoc, Nx
912*61d06d6bSBaptiste DaroussinThe
913*61d06d6bSBaptiste Daroussin.Ic \&Er
914*61d06d6bSBaptiste Daroussinitems in a
915*61d06d6bSBaptiste Daroussin.Ic \&Bl
916*61d06d6bSBaptiste Daroussinlist are not in alphabetical order.
917*61d06d6bSBaptiste Daroussin.It Sy "duplicate errno"
918*61d06d6bSBaptiste Daroussin.Pq mdoc, Nx
919*61d06d6bSBaptiste DaroussinA
920*61d06d6bSBaptiste Daroussin.Ic \&Bl
921*61d06d6bSBaptiste Daroussinlist contains two consecutive
922*61d06d6bSBaptiste Daroussin.Ic \&It
923*61d06d6bSBaptiste Daroussinentries describing the same
924*61d06d6bSBaptiste Daroussin.Ic \&Er
925*61d06d6bSBaptiste Daroussinnumber.
926*61d06d6bSBaptiste Daroussin.It Sy "trailing delimiter"
927*61d06d6bSBaptiste Daroussin.Pq mdoc
928*61d06d6bSBaptiste DaroussinThe last argument of an
929*61d06d6bSBaptiste Daroussin.Ic \&Ex , \&Fo , \&Nd , \&Nm , \&Os , \&Sh , \&Ss , \&St ,
930*61d06d6bSBaptiste Daroussinor
931*61d06d6bSBaptiste Daroussin.Ic \&Sx
932*61d06d6bSBaptiste Daroussinmacro ends with a trailing delimiter.
933*61d06d6bSBaptiste DaroussinThis is usually bad style and often indicates typos.
934*61d06d6bSBaptiste DaroussinMost likely, the delimiter can be removed.
935*61d06d6bSBaptiste Daroussin.It Sy "no blank before trailing delimiter"
936*61d06d6bSBaptiste Daroussin.Pq mdoc
937*61d06d6bSBaptiste DaroussinThe last argument of a macro that supports trailing delimiter
938*61d06d6bSBaptiste Daroussinarguments is longer than one byte and ends with a trailing delimiter.
939*61d06d6bSBaptiste DaroussinConsider inserting a blank such that the delimiter becomes a separate
940*61d06d6bSBaptiste Daroussinargument, thus moving it out of the scope of the macro.
941*61d06d6bSBaptiste Daroussin.It Sy "fill mode already enabled, skipping"
942*61d06d6bSBaptiste Daroussin.Pq man
943*61d06d6bSBaptiste DaroussinA
944*61d06d6bSBaptiste Daroussin.Ic \&fi
945*61d06d6bSBaptiste Daroussinrequest occurs even though the document is still in fill mode,
946*61d06d6bSBaptiste Daroussinor already switched back to fill mode.
947*61d06d6bSBaptiste DaroussinIt has no effect.
948*61d06d6bSBaptiste Daroussin.It Sy "fill mode already disabled, skipping"
949*61d06d6bSBaptiste Daroussin.Pq man
950*61d06d6bSBaptiste DaroussinAn
951*61d06d6bSBaptiste Daroussin.Ic \&nf
952*61d06d6bSBaptiste Daroussinrequest occurs even though the document already switched to no-fill mode
953*61d06d6bSBaptiste Daroussinand did not switch back to fill mode yet.
954*61d06d6bSBaptiste DaroussinIt has no effect.
955*61d06d6bSBaptiste Daroussin.It Sy "verbatim \(dq--\(dq, maybe consider using \e(em"
956*61d06d6bSBaptiste Daroussin.Pq mdoc
957*61d06d6bSBaptiste DaroussinEven though the ASCII output device renders an em-dash as
958*61d06d6bSBaptiste Daroussin.Qq \-\- ,
959*61d06d6bSBaptiste Daroussinthat is not a good way to write it in an input file
960*61d06d6bSBaptiste Daroussinbecause it renders poorly on all other output devices.
961*61d06d6bSBaptiste Daroussin.It Sy "function name without markup"
962*61d06d6bSBaptiste Daroussin.Pq mdoc
963*61d06d6bSBaptiste DaroussinA word followed by an empty pair of parentheses occurs on a text line.
964*61d06d6bSBaptiste DaroussinConsider using an
965*61d06d6bSBaptiste Daroussin.Ic \&Fn
966*61d06d6bSBaptiste Daroussinor
967*61d06d6bSBaptiste Daroussin.Ic \&Xr
968*61d06d6bSBaptiste Daroussinmacro.
969*61d06d6bSBaptiste Daroussin.It Sy "whitespace at end of input line"
970*61d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
971*61d06d6bSBaptiste DaroussinWhitespace at the end of input lines is almost never semantically
972*61d06d6bSBaptiste Daroussinsignificant \(em but in the odd case where it might be, it is
973*61d06d6bSBaptiste Daroussinextremely confusing when reviewing and maintaining documents.
974*61d06d6bSBaptiste Daroussin.It Sy "bad comment style"
975*61d06d6bSBaptiste Daroussin.Pq roff
976*61d06d6bSBaptiste DaroussinComment lines start with a dot, a backslash, and a double-quote character.
977*61d06d6bSBaptiste DaroussinThe
978*61d06d6bSBaptiste Daroussin.Nm
979*61d06d6bSBaptiste Daroussinutility treats the line as a comment line even without the backslash,
980*61d06d6bSBaptiste Daroussinbut leaving out the backslash might not be portable.
981*61d06d6bSBaptiste Daroussin.El
982*61d06d6bSBaptiste Daroussin.Ss Warnings related to the document prologue
983*61d06d6bSBaptiste Daroussin.Bl -ohang
984*61d06d6bSBaptiste Daroussin.It Sy "missing manual title, using UNTITLED"
985*61d06d6bSBaptiste Daroussin.Pq mdoc
986*61d06d6bSBaptiste DaroussinA
987*61d06d6bSBaptiste Daroussin.Ic \&Dt
988*61d06d6bSBaptiste Daroussinmacro has no arguments, or there is no
989*61d06d6bSBaptiste Daroussin.Ic \&Dt
990*61d06d6bSBaptiste Daroussinmacro before the first non-prologue macro.
991*61d06d6bSBaptiste Daroussin.It Sy "missing manual title, using \(dq\(dq"
992*61d06d6bSBaptiste Daroussin.Pq man
993*61d06d6bSBaptiste DaroussinThere is no
994*61d06d6bSBaptiste Daroussin.Ic \&TH
995*61d06d6bSBaptiste Daroussinmacro, or it has no arguments.
996*61d06d6bSBaptiste Daroussin.It Sy "missing manual section, using \(dq\(dq"
997*61d06d6bSBaptiste Daroussin.Pq mdoc , man
998*61d06d6bSBaptiste DaroussinA
999*61d06d6bSBaptiste Daroussin.Ic \&Dt
1000*61d06d6bSBaptiste Daroussinor
1001*61d06d6bSBaptiste Daroussin.Ic \&TH
1002*61d06d6bSBaptiste Daroussinmacro lacks the mandatory section argument.
1003*61d06d6bSBaptiste Daroussin.It Sy "unknown manual section"
1004*61d06d6bSBaptiste Daroussin.Pq mdoc
1005*61d06d6bSBaptiste DaroussinThe section number in a
1006*61d06d6bSBaptiste Daroussin.Ic \&Dt
1007*61d06d6bSBaptiste Daroussinline is invalid, but still used.
1008*61d06d6bSBaptiste Daroussin.It Sy "missing date, using today's date"
1009*61d06d6bSBaptiste Daroussin.Pq mdoc, man
1010*61d06d6bSBaptiste DaroussinThe document was parsed as
1011*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1012*61d06d6bSBaptiste Daroussinand it has no
1013*61d06d6bSBaptiste Daroussin.Ic \&Dd
1014*61d06d6bSBaptiste Daroussinmacro, or the
1015*61d06d6bSBaptiste Daroussin.Ic \&Dd
1016*61d06d6bSBaptiste Daroussinmacro has no arguments or only empty arguments;
1017*61d06d6bSBaptiste Daroussinor the document was parsed as
1018*61d06d6bSBaptiste Daroussin.Xr man 7
1019*61d06d6bSBaptiste Daroussinand it has no
1020*61d06d6bSBaptiste Daroussin.Ic \&TH
1021*61d06d6bSBaptiste Daroussinmacro, or the
1022*61d06d6bSBaptiste Daroussin.Ic \&TH
1023*61d06d6bSBaptiste Daroussinmacro has less than three arguments or its third argument is empty.
1024*61d06d6bSBaptiste Daroussin.It Sy "cannot parse date, using it verbatim"
1025*61d06d6bSBaptiste Daroussin.Pq mdoc , man
1026*61d06d6bSBaptiste DaroussinThe date given in a
1027*61d06d6bSBaptiste Daroussin.Ic \&Dd
1028*61d06d6bSBaptiste Daroussinor
1029*61d06d6bSBaptiste Daroussin.Ic \&TH
1030*61d06d6bSBaptiste Daroussinmacro does not follow the conventional format.
1031*61d06d6bSBaptiste Daroussin.It Sy "date in the future, using it anyway"
1032*61d06d6bSBaptiste Daroussin.Pq mdoc , man
1033*61d06d6bSBaptiste DaroussinThe date given in a
1034*61d06d6bSBaptiste Daroussin.Ic \&Dd
1035*61d06d6bSBaptiste Daroussinor
1036*61d06d6bSBaptiste Daroussin.Ic \&TH
1037*61d06d6bSBaptiste Daroussinmacro is more than a day ahead of the current system
1038*61d06d6bSBaptiste Daroussin.Xr time 3 .
1039*61d06d6bSBaptiste Daroussin.It Sy "missing Os macro, using \(dq\(dq"
1040*61d06d6bSBaptiste Daroussin.Pq mdoc
1041*61d06d6bSBaptiste DaroussinThe default or current system is not shown in this case.
1042*61d06d6bSBaptiste Daroussin.It Sy "late prologue macro"
1043*61d06d6bSBaptiste Daroussin.Pq mdoc
1044*61d06d6bSBaptiste DaroussinA
1045*61d06d6bSBaptiste Daroussin.Ic \&Dd
1046*61d06d6bSBaptiste Daroussinor
1047*61d06d6bSBaptiste Daroussin.Ic \&Os
1048*61d06d6bSBaptiste Daroussinmacro occurs after some non-prologue macro, but still takes effect.
1049*61d06d6bSBaptiste Daroussin.It Sy "prologue macros out of order"
1050*61d06d6bSBaptiste Daroussin.Pq mdoc
1051*61d06d6bSBaptiste DaroussinThe prologue macros are not given in the conventional order
1052*61d06d6bSBaptiste Daroussin.Ic \&Dd ,
1053*61d06d6bSBaptiste Daroussin.Ic \&Dt ,
1054*61d06d6bSBaptiste Daroussin.Ic \&Os .
1055*61d06d6bSBaptiste DaroussinAll three macros are used even when given in another order.
1056*61d06d6bSBaptiste Daroussin.El
1057*61d06d6bSBaptiste Daroussin.Ss Warnings regarding document structure
1058*61d06d6bSBaptiste Daroussin.Bl -ohang
1059*61d06d6bSBaptiste Daroussin.It Sy ".so is fragile, better use ln(1)"
1060*61d06d6bSBaptiste Daroussin.Pq roff
1061*61d06d6bSBaptiste DaroussinIncluding files only works when the parser program runs with the correct
1062*61d06d6bSBaptiste Daroussincurrent working directory.
1063*61d06d6bSBaptiste Daroussin.It Sy "no document body"
1064*61d06d6bSBaptiste Daroussin.Pq mdoc , man
1065*61d06d6bSBaptiste DaroussinThe document body contains neither text nor macros.
1066*61d06d6bSBaptiste DaroussinAn empty document is shown, consisting only of a header and a footer line.
1067*61d06d6bSBaptiste Daroussin.It Sy "content before first section header"
1068*61d06d6bSBaptiste Daroussin.Pq mdoc , man
1069*61d06d6bSBaptiste DaroussinSome macros or text precede the first
1070*61d06d6bSBaptiste Daroussin.Ic \&Sh
1071*61d06d6bSBaptiste Daroussinor
1072*61d06d6bSBaptiste Daroussin.Ic \&SH
1073*61d06d6bSBaptiste Daroussinsection header.
1074*61d06d6bSBaptiste DaroussinThe offending macros and text are parsed and added to the top level
1075*61d06d6bSBaptiste Daroussinof the syntax tree, outside any section block.
1076*61d06d6bSBaptiste Daroussin.It Sy "first section is not NAME"
1077*61d06d6bSBaptiste Daroussin.Pq mdoc
1078*61d06d6bSBaptiste DaroussinThe argument of the first
1079*61d06d6bSBaptiste Daroussin.Ic \&Sh
1080*61d06d6bSBaptiste Daroussinmacro is not
1081*61d06d6bSBaptiste Daroussin.Sq NAME .
1082*61d06d6bSBaptiste DaroussinThis may confuse
1083*61d06d6bSBaptiste Daroussin.Xr makewhatis 8
1084*61d06d6bSBaptiste Daroussinand
1085*61d06d6bSBaptiste Daroussin.Xr apropos 1 .
1086*61d06d6bSBaptiste Daroussin.It Sy "NAME section without Nm before Nd"
1087*61d06d6bSBaptiste Daroussin.Pq mdoc
1088*61d06d6bSBaptiste DaroussinThe NAME section does not contain any
1089*61d06d6bSBaptiste Daroussin.Ic \&Nm
1090*61d06d6bSBaptiste Daroussinchild macro before the first
1091*61d06d6bSBaptiste Daroussin.Ic \&Nd
1092*61d06d6bSBaptiste Daroussinmacro.
1093*61d06d6bSBaptiste Daroussin.It Sy "NAME section without description"
1094*61d06d6bSBaptiste Daroussin.Pq mdoc
1095*61d06d6bSBaptiste DaroussinThe NAME section lacks the mandatory
1096*61d06d6bSBaptiste Daroussin.Ic \&Nd
1097*61d06d6bSBaptiste Daroussinchild macro.
1098*61d06d6bSBaptiste Daroussin.It Sy "description not at the end of NAME"
1099*61d06d6bSBaptiste Daroussin.Pq mdoc
1100*61d06d6bSBaptiste DaroussinThe NAME section does contain an
1101*61d06d6bSBaptiste Daroussin.Ic \&Nd
1102*61d06d6bSBaptiste Daroussinchild macro, but other content follows it.
1103*61d06d6bSBaptiste Daroussin.It Sy "bad NAME section content"
1104*61d06d6bSBaptiste Daroussin.Pq mdoc
1105*61d06d6bSBaptiste DaroussinThe NAME section contains plain text or macros other than
1106*61d06d6bSBaptiste Daroussin.Ic \&Nm
1107*61d06d6bSBaptiste Daroussinand
1108*61d06d6bSBaptiste Daroussin.Ic \&Nd .
1109*61d06d6bSBaptiste Daroussin.It Sy "missing comma before name"
1110*61d06d6bSBaptiste Daroussin.Pq mdoc
1111*61d06d6bSBaptiste DaroussinThe NAME section contains an
1112*61d06d6bSBaptiste Daroussin.Ic \&Nm
1113*61d06d6bSBaptiste Daroussinmacro that is neither the first one nor preceded by a comma.
1114*61d06d6bSBaptiste Daroussin.It Sy "missing description line, using \(dq\(dq"
1115*61d06d6bSBaptiste Daroussin.Pq mdoc
1116*61d06d6bSBaptiste DaroussinThe
1117*61d06d6bSBaptiste Daroussin.Ic \&Nd
1118*61d06d6bSBaptiste Daroussinmacro lacks the required argument.
1119*61d06d6bSBaptiste DaroussinThe title line of the manual will end after the dash.
1120*61d06d6bSBaptiste Daroussin.It Sy "description line outside NAME section"
1121*61d06d6bSBaptiste Daroussin.Pq mdoc
1122*61d06d6bSBaptiste DaroussinAn
1123*61d06d6bSBaptiste Daroussin.Ic \&Nd
1124*61d06d6bSBaptiste Daroussinmacro appears outside the NAME section.
1125*61d06d6bSBaptiste DaroussinThe arguments are printed anyway and the following text is used for
1126*61d06d6bSBaptiste Daroussin.Xr apropos 1 ,
1127*61d06d6bSBaptiste Daroussinbut none of that behaviour is portable.
1128*61d06d6bSBaptiste Daroussin.It Sy "sections out of conventional order"
1129*61d06d6bSBaptiste Daroussin.Pq mdoc
1130*61d06d6bSBaptiste DaroussinA standard section occurs after another section it usually precedes.
1131*61d06d6bSBaptiste DaroussinAll section titles are used as given,
1132*61d06d6bSBaptiste Daroussinand the order of sections is not changed.
1133*61d06d6bSBaptiste Daroussin.It Sy "duplicate section title"
1134*61d06d6bSBaptiste Daroussin.Pq mdoc
1135*61d06d6bSBaptiste DaroussinThe same standard section title occurs more than once.
1136*61d06d6bSBaptiste Daroussin.It Sy "unexpected section"
1137*61d06d6bSBaptiste Daroussin.Pq mdoc
1138*61d06d6bSBaptiste DaroussinA standard section header occurs in a section of the manual
1139*61d06d6bSBaptiste Daroussinwhere it normally isn't useful.
1140*61d06d6bSBaptiste Daroussin.It Sy "cross reference to self"
1141*61d06d6bSBaptiste Daroussin.Pq mdoc
1142*61d06d6bSBaptiste DaroussinAn
1143*61d06d6bSBaptiste Daroussin.Ic \&Xr
1144*61d06d6bSBaptiste Daroussinmacro refers to a name and section matching the section of the present
1145*61d06d6bSBaptiste Daroussinmanual page and a name mentioned in an
1146*61d06d6bSBaptiste Daroussin.Ic \&Nm
1147*61d06d6bSBaptiste Daroussinmacro in the NAME or SYNOPSIS section, or in an
1148*61d06d6bSBaptiste Daroussin.Ic \&Fn
1149*61d06d6bSBaptiste Daroussinor
1150*61d06d6bSBaptiste Daroussin.Ic \&Fo
1151*61d06d6bSBaptiste Daroussinmacro in the SYNOPSIS.
1152*61d06d6bSBaptiste DaroussinConsider using
1153*61d06d6bSBaptiste Daroussin.Ic \&Nm
1154*61d06d6bSBaptiste Daroussinor
1155*61d06d6bSBaptiste Daroussin.Ic \&Fn
1156*61d06d6bSBaptiste Daroussininstead of
1157*61d06d6bSBaptiste Daroussin.Ic \&Xr .
1158*61d06d6bSBaptiste Daroussin.It Sy "unusual Xr order"
1159*61d06d6bSBaptiste Daroussin.Pq mdoc
1160*61d06d6bSBaptiste DaroussinIn the SEE ALSO section, an
1161*61d06d6bSBaptiste Daroussin.Ic \&Xr
1162*61d06d6bSBaptiste Daroussinmacro with a lower section number follows one with a higher number,
1163*61d06d6bSBaptiste Daroussinor two
1164*61d06d6bSBaptiste Daroussin.Ic \&Xr
1165*61d06d6bSBaptiste Daroussinmacros referring to the same section are out of alphabetical order.
1166*61d06d6bSBaptiste Daroussin.It Sy "unusual Xr punctuation"
1167*61d06d6bSBaptiste Daroussin.Pq mdoc
1168*61d06d6bSBaptiste DaroussinIn the SEE ALSO section, punctuation between two
1169*61d06d6bSBaptiste Daroussin.Ic \&Xr
1170*61d06d6bSBaptiste Daroussinmacros differs from a single comma, or there is trailing punctuation
1171*61d06d6bSBaptiste Daroussinafter the last
1172*61d06d6bSBaptiste Daroussin.Ic \&Xr
1173*61d06d6bSBaptiste Daroussinmacro.
1174*61d06d6bSBaptiste Daroussin.It Sy "AUTHORS section without An macro"
1175*61d06d6bSBaptiste Daroussin.Pq mdoc
1176*61d06d6bSBaptiste DaroussinAn AUTHORS sections contains no
1177*61d06d6bSBaptiste Daroussin.Ic \&An
1178*61d06d6bSBaptiste Daroussinmacros, or only empty ones.
1179*61d06d6bSBaptiste DaroussinProbably, there are author names lacking markup.
1180*61d06d6bSBaptiste Daroussin.El
1181*61d06d6bSBaptiste Daroussin.Ss "Warnings related to macros and nesting"
1182*61d06d6bSBaptiste Daroussin.Bl -ohang
1183*61d06d6bSBaptiste Daroussin.It Sy "obsolete macro"
1184*61d06d6bSBaptiste Daroussin.Pq mdoc
1185*61d06d6bSBaptiste DaroussinSee the
1186*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1187*61d06d6bSBaptiste Daroussinmanual for replacements.
1188*61d06d6bSBaptiste Daroussin.It Sy "macro neither callable nor escaped"
1189*61d06d6bSBaptiste Daroussin.Pq mdoc
1190*61d06d6bSBaptiste DaroussinThe name of a macro that is not callable appears on a macro line.
1191*61d06d6bSBaptiste DaroussinIt is printed verbatim.
1192*61d06d6bSBaptiste DaroussinIf the intention is to call it, move it to its own input line;
1193*61d06d6bSBaptiste Daroussinotherwise, escape it by prepending
1194*61d06d6bSBaptiste Daroussin.Sq \e& .
1195*61d06d6bSBaptiste Daroussin.It Sy "skipping paragraph macro"
1196*61d06d6bSBaptiste DaroussinIn
1197*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1198*61d06d6bSBaptiste Daroussindocuments, this happens
1199*61d06d6bSBaptiste Daroussin.Bl -dash -compact
1200*61d06d6bSBaptiste Daroussin.It
1201*61d06d6bSBaptiste Daroussinat the beginning and end of sections and subsections
1202*61d06d6bSBaptiste Daroussin.It
1203*61d06d6bSBaptiste Daroussinright before non-compact lists and displays
1204*61d06d6bSBaptiste Daroussin.It
1205*61d06d6bSBaptiste Daroussinat the end of items in non-column, non-compact lists
1206*61d06d6bSBaptiste Daroussin.It
1207*61d06d6bSBaptiste Daroussinand for multiple consecutive paragraph macros.
1208*61d06d6bSBaptiste Daroussin.El
1209*61d06d6bSBaptiste DaroussinIn
1210*61d06d6bSBaptiste Daroussin.Xr man 7
1211*61d06d6bSBaptiste Daroussindocuments, it happens
1212*61d06d6bSBaptiste Daroussin.Bl -dash -compact
1213*61d06d6bSBaptiste Daroussin.It
1214*61d06d6bSBaptiste Daroussinfor empty
1215*61d06d6bSBaptiste Daroussin.Ic \&P ,
1216*61d06d6bSBaptiste Daroussin.Ic \&PP ,
1217*61d06d6bSBaptiste Daroussinand
1218*61d06d6bSBaptiste Daroussin.Ic \&LP
1219*61d06d6bSBaptiste Daroussinmacros
1220*61d06d6bSBaptiste Daroussin.It
1221*61d06d6bSBaptiste Daroussinfor
1222*61d06d6bSBaptiste Daroussin.Ic \&IP
1223*61d06d6bSBaptiste Daroussinmacros having neither head nor body arguments
1224*61d06d6bSBaptiste Daroussin.It
1225*61d06d6bSBaptiste Daroussinfor
1226*61d06d6bSBaptiste Daroussin.Ic \&br
1227*61d06d6bSBaptiste Daroussinor
1228*61d06d6bSBaptiste Daroussin.Ic \&sp
1229*61d06d6bSBaptiste Daroussinright after
1230*61d06d6bSBaptiste Daroussin.Ic \&SH
1231*61d06d6bSBaptiste Daroussinor
1232*61d06d6bSBaptiste Daroussin.Ic \&SS
1233*61d06d6bSBaptiste Daroussin.El
1234*61d06d6bSBaptiste Daroussin.It Sy "moving paragraph macro out of list"
1235*61d06d6bSBaptiste Daroussin.Pq mdoc
1236*61d06d6bSBaptiste DaroussinA list item in a
1237*61d06d6bSBaptiste Daroussin.Ic \&Bl
1238*61d06d6bSBaptiste Daroussinlist contains a trailing paragraph macro.
1239*61d06d6bSBaptiste DaroussinThe paragraph macro is moved after the end of the list.
1240*61d06d6bSBaptiste Daroussin.It Sy "skipping no-space macro"
1241*61d06d6bSBaptiste Daroussin.Pq mdoc
1242*61d06d6bSBaptiste DaroussinAn input line begins with an
1243*61d06d6bSBaptiste Daroussin.Ic \&Ns
1244*61d06d6bSBaptiste Daroussinmacro, or the next argument after an
1245*61d06d6bSBaptiste Daroussin.Ic \&Ns
1246*61d06d6bSBaptiste Daroussinmacro is an isolated closing delimiter.
1247*61d06d6bSBaptiste DaroussinThe macro is ignored.
1248*61d06d6bSBaptiste Daroussin.It Sy "blocks badly nested"
1249*61d06d6bSBaptiste Daroussin.Pq mdoc
1250*61d06d6bSBaptiste DaroussinIf two blocks intersect, one should completely contain the other.
1251*61d06d6bSBaptiste DaroussinOtherwise, rendered output is likely to look strange in any output
1252*61d06d6bSBaptiste Daroussinformat, and rendering in SGML-based output formats is likely to be
1253*61d06d6bSBaptiste Daroussinoutright wrong because such languages do not support badly nested
1254*61d06d6bSBaptiste Daroussinblocks at all.
1255*61d06d6bSBaptiste DaroussinTypical examples of badly nested blocks are
1256*61d06d6bSBaptiste Daroussin.Qq Ic \&Ao \&Bo \&Ac \&Bc
1257*61d06d6bSBaptiste Daroussinand
1258*61d06d6bSBaptiste Daroussin.Qq Ic \&Ao \&Bq \&Ac .
1259*61d06d6bSBaptiste DaroussinIn these examples,
1260*61d06d6bSBaptiste Daroussin.Ic \&Ac
1261*61d06d6bSBaptiste Daroussinbreaks
1262*61d06d6bSBaptiste Daroussin.Ic \&Bo
1263*61d06d6bSBaptiste Daroussinand
1264*61d06d6bSBaptiste Daroussin.Ic \&Bq ,
1265*61d06d6bSBaptiste Daroussinrespectively.
1266*61d06d6bSBaptiste Daroussin.It Sy "nested displays are not portable"
1267*61d06d6bSBaptiste Daroussin.Pq mdoc
1268*61d06d6bSBaptiste DaroussinA
1269*61d06d6bSBaptiste Daroussin.Ic \&Bd ,
1270*61d06d6bSBaptiste Daroussin.Ic \&D1 ,
1271*61d06d6bSBaptiste Daroussinor
1272*61d06d6bSBaptiste Daroussin.Ic \&Dl
1273*61d06d6bSBaptiste Daroussindisplay occurs nested inside another
1274*61d06d6bSBaptiste Daroussin.Ic \&Bd
1275*61d06d6bSBaptiste Daroussindisplay.
1276*61d06d6bSBaptiste DaroussinThis works with
1277*61d06d6bSBaptiste Daroussin.Nm ,
1278*61d06d6bSBaptiste Daroussinbut fails with most other implementations.
1279*61d06d6bSBaptiste Daroussin.It Sy "moving content out of list"
1280*61d06d6bSBaptiste Daroussin.Pq mdoc
1281*61d06d6bSBaptiste DaroussinA
1282*61d06d6bSBaptiste Daroussin.Ic \&Bl
1283*61d06d6bSBaptiste Daroussinlist block contains text or macros before the first
1284*61d06d6bSBaptiste Daroussin.Ic \&It
1285*61d06d6bSBaptiste Daroussinmacro.
1286*61d06d6bSBaptiste DaroussinThe offending children are moved before the beginning of the list.
1287*61d06d6bSBaptiste Daroussin.It Sy "first macro on line"
1288*61d06d6bSBaptiste DaroussinInside a
1289*61d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
1290*61d06d6bSBaptiste Daroussinlist, a
1291*61d06d6bSBaptiste Daroussin.Ic \&Ta
1292*61d06d6bSBaptiste Daroussinmacro occurs as the first macro on a line, which is not portable.
1293*61d06d6bSBaptiste Daroussin.It Sy "line scope broken"
1294*61d06d6bSBaptiste Daroussin.Pq man
1295*61d06d6bSBaptiste DaroussinWhile parsing the next-line scope of the previous macro,
1296*61d06d6bSBaptiste Daroussinanother macro is found that prematurely terminates the previous one.
1297*61d06d6bSBaptiste DaroussinThe previous, interrupted macro is deleted from the parse tree.
1298*61d06d6bSBaptiste Daroussin.El
1299*61d06d6bSBaptiste Daroussin.Ss "Warnings related to missing arguments"
1300*61d06d6bSBaptiste Daroussin.Bl -ohang
1301*61d06d6bSBaptiste Daroussin.It Sy "skipping empty request"
1302*61d06d6bSBaptiste Daroussin.Pq roff , eqn
1303*61d06d6bSBaptiste DaroussinThe macro name is missing from a macro definition request,
1304*61d06d6bSBaptiste Daroussinor an
1305*61d06d6bSBaptiste Daroussin.Xr eqn 7
1306*61d06d6bSBaptiste Daroussincontrol statement or operation keyword lacks its required argument.
1307*61d06d6bSBaptiste Daroussin.It Sy "conditional request controls empty scope"
1308*61d06d6bSBaptiste Daroussin.Pq roff
1309*61d06d6bSBaptiste DaroussinA conditional request is only useful if any of the following
1310*61d06d6bSBaptiste Daroussinfollows it on the same logical input line:
1311*61d06d6bSBaptiste Daroussin.Bl -dash -compact
1312*61d06d6bSBaptiste Daroussin.It
1313*61d06d6bSBaptiste DaroussinThe
1314*61d06d6bSBaptiste Daroussin.Sq \e{
1315*61d06d6bSBaptiste Daroussinkeyword to open a multi-line scope.
1316*61d06d6bSBaptiste Daroussin.It
1317*61d06d6bSBaptiste DaroussinA request or macro or some text, resulting in a single-line scope.
1318*61d06d6bSBaptiste Daroussin.It
1319*61d06d6bSBaptiste DaroussinThe immediate end of the logical line without any intervening whitespace,
1320*61d06d6bSBaptiste Daroussinresulting in next-line scope.
1321*61d06d6bSBaptiste Daroussin.El
1322*61d06d6bSBaptiste DaroussinHere, a conditional request is followed by trailing whitespace only,
1323*61d06d6bSBaptiste Daroussinand there is no other content on its logical input line.
1324*61d06d6bSBaptiste DaroussinNote that it doesn't matter whether the logical input line is split
1325*61d06d6bSBaptiste Daroussinacross multiple physical input lines using
1326*61d06d6bSBaptiste Daroussin.Sq \e
1327*61d06d6bSBaptiste Daroussinline continuation characters.
1328*61d06d6bSBaptiste DaroussinThis is one of the rare cases
1329*61d06d6bSBaptiste Daroussinwhere trailing whitespace is syntactically significant.
1330*61d06d6bSBaptiste DaroussinThe conditional request controls a scope containing whitespace only,
1331*61d06d6bSBaptiste Daroussinso it is unlikely to have a significant effect,
1332*61d06d6bSBaptiste Daroussinexcept that it may control a following
1333*61d06d6bSBaptiste Daroussin.Ic \&el
1334*61d06d6bSBaptiste Daroussinclause.
1335*61d06d6bSBaptiste Daroussin.It Sy "skipping empty macro"
1336*61d06d6bSBaptiste Daroussin.Pq mdoc
1337*61d06d6bSBaptiste DaroussinThe indicated macro has no arguments and hence no effect.
1338*61d06d6bSBaptiste Daroussin.It Sy "empty block"
1339*61d06d6bSBaptiste Daroussin.Pq mdoc , man
1340*61d06d6bSBaptiste DaroussinA
1341*61d06d6bSBaptiste Daroussin.Ic \&Bd ,
1342*61d06d6bSBaptiste Daroussin.Ic \&Bk ,
1343*61d06d6bSBaptiste Daroussin.Ic \&Bl ,
1344*61d06d6bSBaptiste Daroussin.Ic \&D1 ,
1345*61d06d6bSBaptiste Daroussin.Ic \&Dl ,
1346*61d06d6bSBaptiste Daroussin.Ic \&MT ,
1347*61d06d6bSBaptiste Daroussin.Ic \&RS ,
1348*61d06d6bSBaptiste Daroussinor
1349*61d06d6bSBaptiste Daroussin.Ic \&UR
1350*61d06d6bSBaptiste Daroussinblock contains nothing in its body and will produce no output.
1351*61d06d6bSBaptiste Daroussin.It Sy "empty argument, using 0n"
1352*61d06d6bSBaptiste Daroussin.Pq mdoc
1353*61d06d6bSBaptiste DaroussinThe required width is missing after
1354*61d06d6bSBaptiste Daroussin.Ic \&Bd
1355*61d06d6bSBaptiste Daroussinor
1356*61d06d6bSBaptiste Daroussin.Ic \&Bl
1357*61d06d6bSBaptiste Daroussin.Fl offset
1358*61d06d6bSBaptiste Daroussinor
1359*61d06d6bSBaptiste Daroussin.Fl width .
1360*61d06d6bSBaptiste Daroussin.It Sy "missing display type, using -ragged"
1361*61d06d6bSBaptiste Daroussin.Pq mdoc
1362*61d06d6bSBaptiste DaroussinThe
1363*61d06d6bSBaptiste Daroussin.Ic \&Bd
1364*61d06d6bSBaptiste Daroussinmacro is invoked without the required display type.
1365*61d06d6bSBaptiste Daroussin.It Sy "list type is not the first argument"
1366*61d06d6bSBaptiste Daroussin.Pq mdoc
1367*61d06d6bSBaptiste DaroussinIn a
1368*61d06d6bSBaptiste Daroussin.Ic \&Bl
1369*61d06d6bSBaptiste Daroussinmacro, at least one other argument precedes the type argument.
1370*61d06d6bSBaptiste DaroussinThe
1371*61d06d6bSBaptiste Daroussin.Nm
1372*61d06d6bSBaptiste Daroussinutility copes with any argument order, but some other
1373*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1374*61d06d6bSBaptiste Daroussinimplementations do not.
1375*61d06d6bSBaptiste Daroussin.It Sy "missing -width in -tag list, using 8n"
1376*61d06d6bSBaptiste Daroussin.Pq mdoc
1377*61d06d6bSBaptiste DaroussinEvery
1378*61d06d6bSBaptiste Daroussin.Ic \&Bl
1379*61d06d6bSBaptiste Daroussinmacro having the
1380*61d06d6bSBaptiste Daroussin.Fl tag
1381*61d06d6bSBaptiste Daroussinargument requires
1382*61d06d6bSBaptiste Daroussin.Fl width ,
1383*61d06d6bSBaptiste Daroussintoo.
1384*61d06d6bSBaptiste Daroussin.It Sy "missing utility name, using \(dq\(dq"
1385*61d06d6bSBaptiste Daroussin.Pq mdoc
1386*61d06d6bSBaptiste DaroussinThe
1387*61d06d6bSBaptiste Daroussin.Ic \&Ex Fl std
1388*61d06d6bSBaptiste Daroussinmacro is called without an argument before
1389*61d06d6bSBaptiste Daroussin.Ic \&Nm
1390*61d06d6bSBaptiste Daroussinhas first been called with an argument.
1391*61d06d6bSBaptiste Daroussin.It Sy "missing function name, using \(dq\(dq"
1392*61d06d6bSBaptiste Daroussin.Pq mdoc
1393*61d06d6bSBaptiste DaroussinThe
1394*61d06d6bSBaptiste Daroussin.Ic \&Fo
1395*61d06d6bSBaptiste Daroussinmacro is called without an argument.
1396*61d06d6bSBaptiste DaroussinNo function name is printed.
1397*61d06d6bSBaptiste Daroussin.It Sy "empty head in list item"
1398*61d06d6bSBaptiste Daroussin.Pq mdoc
1399*61d06d6bSBaptiste DaroussinIn a
1400*61d06d6bSBaptiste Daroussin.Ic \&Bl
1401*61d06d6bSBaptiste Daroussin.Fl diag ,
1402*61d06d6bSBaptiste Daroussin.Fl hang ,
1403*61d06d6bSBaptiste Daroussin.Fl inset ,
1404*61d06d6bSBaptiste Daroussin.Fl ohang ,
1405*61d06d6bSBaptiste Daroussinor
1406*61d06d6bSBaptiste Daroussin.Fl tag
1407*61d06d6bSBaptiste Daroussinlist, an
1408*61d06d6bSBaptiste Daroussin.Ic \&It
1409*61d06d6bSBaptiste Daroussinmacro lacks the required argument.
1410*61d06d6bSBaptiste DaroussinThe item head is left empty.
1411*61d06d6bSBaptiste Daroussin.It Sy "empty list item"
1412*61d06d6bSBaptiste Daroussin.Pq mdoc
1413*61d06d6bSBaptiste DaroussinIn a
1414*61d06d6bSBaptiste Daroussin.Ic \&Bl
1415*61d06d6bSBaptiste Daroussin.Fl bullet ,
1416*61d06d6bSBaptiste Daroussin.Fl dash ,
1417*61d06d6bSBaptiste Daroussin.Fl enum ,
1418*61d06d6bSBaptiste Daroussinor
1419*61d06d6bSBaptiste Daroussin.Fl hyphen
1420*61d06d6bSBaptiste Daroussinlist, an
1421*61d06d6bSBaptiste Daroussin.Ic \&It
1422*61d06d6bSBaptiste Daroussinblock is empty.
1423*61d06d6bSBaptiste DaroussinAn empty list item is shown.
1424*61d06d6bSBaptiste Daroussin.It Sy "missing argument, using next line"
1425*61d06d6bSBaptiste Daroussin.Pq mdoc
1426*61d06d6bSBaptiste DaroussinAn
1427*61d06d6bSBaptiste Daroussin.Ic \&It
1428*61d06d6bSBaptiste Daroussinmacro in a
1429*61d06d6bSBaptiste Daroussin.Ic \&Bd Fl column
1430*61d06d6bSBaptiste Daroussinlist has no arguments.
1431*61d06d6bSBaptiste DaroussinWhile
1432*61d06d6bSBaptiste Daroussin.Nm
1433*61d06d6bSBaptiste Daroussinuses the text or macros of the following line, if any, for the cell,
1434*61d06d6bSBaptiste Daroussinother formatters may misformat the list.
1435*61d06d6bSBaptiste Daroussin.It Sy "missing font type, using \efR"
1436*61d06d6bSBaptiste Daroussin.Pq mdoc
1437*61d06d6bSBaptiste DaroussinA
1438*61d06d6bSBaptiste Daroussin.Ic \&Bf
1439*61d06d6bSBaptiste Daroussinmacro has no argument.
1440*61d06d6bSBaptiste DaroussinIt switches to the default font.
1441*61d06d6bSBaptiste Daroussin.It Sy "unknown font type, using \efR"
1442*61d06d6bSBaptiste Daroussin.Pq mdoc
1443*61d06d6bSBaptiste DaroussinThe
1444*61d06d6bSBaptiste Daroussin.Ic \&Bf
1445*61d06d6bSBaptiste Daroussinargument is invalid.
1446*61d06d6bSBaptiste DaroussinThe default font is used instead.
1447*61d06d6bSBaptiste Daroussin.It Sy "nothing follows prefix"
1448*61d06d6bSBaptiste Daroussin.Pq mdoc
1449*61d06d6bSBaptiste DaroussinA
1450*61d06d6bSBaptiste Daroussin.Ic \&Pf
1451*61d06d6bSBaptiste Daroussinmacro has no argument, or only one argument and no macro follows
1452*61d06d6bSBaptiste Daroussinon the same input line.
1453*61d06d6bSBaptiste DaroussinThis defeats its purpose; in particular, spacing is not suppressed
1454*61d06d6bSBaptiste Daroussinbefore the text or macros following on the next input line.
1455*61d06d6bSBaptiste Daroussin.It Sy "empty reference block"
1456*61d06d6bSBaptiste Daroussin.Pq mdoc
1457*61d06d6bSBaptiste DaroussinAn
1458*61d06d6bSBaptiste Daroussin.Ic \&Rs
1459*61d06d6bSBaptiste Daroussinmacro is immediately followed by an
1460*61d06d6bSBaptiste Daroussin.Ic \&Re
1461*61d06d6bSBaptiste Daroussinmacro on the next input line.
1462*61d06d6bSBaptiste DaroussinSuch an empty block does not produce any output.
1463*61d06d6bSBaptiste Daroussin.It Sy "missing section argument"
1464*61d06d6bSBaptiste Daroussin.Pq mdoc
1465*61d06d6bSBaptiste DaroussinAn
1466*61d06d6bSBaptiste Daroussin.Ic \&Xr
1467*61d06d6bSBaptiste Daroussinmacro lacks its second, section number argument.
1468*61d06d6bSBaptiste DaroussinThe first argument, i.e. the name, is printed, but without subsequent
1469*61d06d6bSBaptiste Daroussinparentheses.
1470*61d06d6bSBaptiste Daroussin.It Sy "missing -std argument, adding it"
1471*61d06d6bSBaptiste Daroussin.Pq mdoc
1472*61d06d6bSBaptiste DaroussinAn
1473*61d06d6bSBaptiste Daroussin.Ic \&Ex
1474*61d06d6bSBaptiste Daroussinor
1475*61d06d6bSBaptiste Daroussin.Ic \&Rv
1476*61d06d6bSBaptiste Daroussinmacro lacks the required
1477*61d06d6bSBaptiste Daroussin.Fl std
1478*61d06d6bSBaptiste Daroussinargument.
1479*61d06d6bSBaptiste DaroussinThe
1480*61d06d6bSBaptiste Daroussin.Nm
1481*61d06d6bSBaptiste Daroussinutility assumes
1482*61d06d6bSBaptiste Daroussin.Fl std
1483*61d06d6bSBaptiste Daroussineven when it is not specified, but other implementations may not.
1484*61d06d6bSBaptiste Daroussin.It Sy "missing option string, using \(dq\(dq"
1485*61d06d6bSBaptiste Daroussin.Pq man
1486*61d06d6bSBaptiste DaroussinThe
1487*61d06d6bSBaptiste Daroussin.Ic \&OP
1488*61d06d6bSBaptiste Daroussinmacro is invoked without any argument.
1489*61d06d6bSBaptiste DaroussinAn empty pair of square brackets is shown.
1490*61d06d6bSBaptiste Daroussin.It Sy "missing resource identifier, using \(dq\(dq"
1491*61d06d6bSBaptiste Daroussin.Pq man
1492*61d06d6bSBaptiste DaroussinThe
1493*61d06d6bSBaptiste Daroussin.Ic \&MT
1494*61d06d6bSBaptiste Daroussinor
1495*61d06d6bSBaptiste Daroussin.Ic \&UR
1496*61d06d6bSBaptiste Daroussinmacro is invoked without any argument.
1497*61d06d6bSBaptiste DaroussinAn empty pair of angle brackets is shown.
1498*61d06d6bSBaptiste Daroussin.It Sy "missing eqn box, using \(dq\(dq"
1499*61d06d6bSBaptiste Daroussin.Pq eqn
1500*61d06d6bSBaptiste DaroussinA diacritic mark or a binary operator is found,
1501*61d06d6bSBaptiste Daroussinbut there is nothing to the left of it.
1502*61d06d6bSBaptiste DaroussinAn empty box is inserted.
1503*61d06d6bSBaptiste Daroussin.El
1504*61d06d6bSBaptiste Daroussin.Ss "Warnings related to bad macro arguments"
1505*61d06d6bSBaptiste Daroussin.Bl -ohang
1506*61d06d6bSBaptiste Daroussin.It Sy "duplicate argument"
1507*61d06d6bSBaptiste Daroussin.Pq mdoc
1508*61d06d6bSBaptiste DaroussinA
1509*61d06d6bSBaptiste Daroussin.Ic \&Bd
1510*61d06d6bSBaptiste Daroussinor
1511*61d06d6bSBaptiste Daroussin.Ic \&Bl
1512*61d06d6bSBaptiste Daroussinmacro has more than one
1513*61d06d6bSBaptiste Daroussin.Fl compact ,
1514*61d06d6bSBaptiste Daroussinmore than one
1515*61d06d6bSBaptiste Daroussin.Fl offset ,
1516*61d06d6bSBaptiste Daroussinor more than one
1517*61d06d6bSBaptiste Daroussin.Fl width
1518*61d06d6bSBaptiste Daroussinargument.
1519*61d06d6bSBaptiste DaroussinAll but the last instances of these arguments are ignored.
1520*61d06d6bSBaptiste Daroussin.It Sy "skipping duplicate argument"
1521*61d06d6bSBaptiste Daroussin.Pq mdoc
1522*61d06d6bSBaptiste DaroussinAn
1523*61d06d6bSBaptiste Daroussin.Ic \&An
1524*61d06d6bSBaptiste Daroussinmacro has more than one
1525*61d06d6bSBaptiste Daroussin.Fl split
1526*61d06d6bSBaptiste Daroussinor
1527*61d06d6bSBaptiste Daroussin.Fl nosplit
1528*61d06d6bSBaptiste Daroussinargument.
1529*61d06d6bSBaptiste DaroussinAll but the first of these arguments are ignored.
1530*61d06d6bSBaptiste Daroussin.It Sy "skipping duplicate display type"
1531*61d06d6bSBaptiste Daroussin.Pq mdoc
1532*61d06d6bSBaptiste DaroussinA
1533*61d06d6bSBaptiste Daroussin.Ic \&Bd
1534*61d06d6bSBaptiste Daroussinmacro has more than one type argument; the first one is used.
1535*61d06d6bSBaptiste Daroussin.It Sy "skipping duplicate list type"
1536*61d06d6bSBaptiste Daroussin.Pq mdoc
1537*61d06d6bSBaptiste DaroussinA
1538*61d06d6bSBaptiste Daroussin.Ic \&Bl
1539*61d06d6bSBaptiste Daroussinmacro has more than one type argument; the first one is used.
1540*61d06d6bSBaptiste Daroussin.It Sy "skipping -width argument"
1541*61d06d6bSBaptiste Daroussin.Pq mdoc
1542*61d06d6bSBaptiste DaroussinA
1543*61d06d6bSBaptiste Daroussin.Ic \&Bl
1544*61d06d6bSBaptiste Daroussin.Fl column ,
1545*61d06d6bSBaptiste Daroussin.Fl diag ,
1546*61d06d6bSBaptiste Daroussin.Fl ohang ,
1547*61d06d6bSBaptiste Daroussin.Fl inset ,
1548*61d06d6bSBaptiste Daroussinor
1549*61d06d6bSBaptiste Daroussin.Fl item
1550*61d06d6bSBaptiste Daroussinlist has a
1551*61d06d6bSBaptiste Daroussin.Fl width
1552*61d06d6bSBaptiste Daroussinargument.
1553*61d06d6bSBaptiste DaroussinThat has no effect.
1554*61d06d6bSBaptiste Daroussin.It Sy "wrong number of cells"
1555*61d06d6bSBaptiste DaroussinIn a line of a
1556*61d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
1557*61d06d6bSBaptiste Daroussinlist, the number of tabs or
1558*61d06d6bSBaptiste Daroussin.Ic \&Ta
1559*61d06d6bSBaptiste Daroussinmacros is less than the number expected from the list header line
1560*61d06d6bSBaptiste Daroussinor exceeds the expected number by more than one.
1561*61d06d6bSBaptiste DaroussinMissing cells remain empty, and all cells exceeding the number of
1562*61d06d6bSBaptiste Daroussincolumns are joined into one single cell.
1563*61d06d6bSBaptiste Daroussin.It Sy "unknown AT&T UNIX version"
1564*61d06d6bSBaptiste Daroussin.Pq mdoc
1565*61d06d6bSBaptiste DaroussinAn
1566*61d06d6bSBaptiste Daroussin.Ic \&At
1567*61d06d6bSBaptiste Daroussinmacro has an invalid argument.
1568*61d06d6bSBaptiste DaroussinIt is used verbatim, with
1569*61d06d6bSBaptiste Daroussin.Qq "AT&T UNIX "
1570*61d06d6bSBaptiste Daroussinprefixed to it.
1571*61d06d6bSBaptiste Daroussin.It Sy "comma in function argument"
1572*61d06d6bSBaptiste Daroussin.Pq mdoc
1573*61d06d6bSBaptiste DaroussinAn argument of an
1574*61d06d6bSBaptiste Daroussin.Ic \&Fa
1575*61d06d6bSBaptiste Daroussinor
1576*61d06d6bSBaptiste Daroussin.Ic \&Fn
1577*61d06d6bSBaptiste Daroussinmacro contains a comma; it should probably be split into two arguments.
1578*61d06d6bSBaptiste Daroussin.It Sy "parenthesis in function name"
1579*61d06d6bSBaptiste Daroussin.Pq mdoc
1580*61d06d6bSBaptiste DaroussinThe first argument of an
1581*61d06d6bSBaptiste Daroussin.Ic \&Fc
1582*61d06d6bSBaptiste Daroussinor
1583*61d06d6bSBaptiste Daroussin.Ic \&Fn
1584*61d06d6bSBaptiste Daroussinmacro contains an opening or closing parenthesis; that's probably wrong,
1585*61d06d6bSBaptiste Daroussinparentheses are added automatically.
1586*61d06d6bSBaptiste Daroussin.It Sy "unknown library name"
1587*61d06d6bSBaptiste Daroussin.Pq mdoc, not on Ox
1588*61d06d6bSBaptiste DaroussinAn
1589*61d06d6bSBaptiste Daroussin.Ic \&Lb
1590*61d06d6bSBaptiste Daroussinmacro has an unknown name argument and will be rendered as
1591*61d06d6bSBaptiste Daroussin.Qq library Dq Ar name .
1592*61d06d6bSBaptiste Daroussin.It Sy "invalid content in Rs block"
1593*61d06d6bSBaptiste Daroussin.Pq mdoc
1594*61d06d6bSBaptiste DaroussinAn
1595*61d06d6bSBaptiste Daroussin.Ic \&Rs
1596*61d06d6bSBaptiste Daroussinblock contains plain text or non-% macros.
1597*61d06d6bSBaptiste DaroussinThe bogus content is left in the syntax tree.
1598*61d06d6bSBaptiste DaroussinFormatting may be poor.
1599*61d06d6bSBaptiste Daroussin.It Sy "invalid Boolean argument"
1600*61d06d6bSBaptiste Daroussin.Pq mdoc
1601*61d06d6bSBaptiste DaroussinAn
1602*61d06d6bSBaptiste Daroussin.Ic \&Sm
1603*61d06d6bSBaptiste Daroussinmacro has an argument other than
1604*61d06d6bSBaptiste Daroussin.Cm on
1605*61d06d6bSBaptiste Daroussinor
1606*61d06d6bSBaptiste Daroussin.Cm off .
1607*61d06d6bSBaptiste DaroussinThe invalid argument is moved out of the macro, which leaves the macro
1608*61d06d6bSBaptiste Daroussinempty, causing it to toggle the spacing mode.
1609*61d06d6bSBaptiste Daroussin.It Sy "unknown font, skipping request"
1610*61d06d6bSBaptiste Daroussin.Pq man , tbl
1611*61d06d6bSBaptiste DaroussinA
1612*61d06d6bSBaptiste Daroussin.Xr roff 7
1613*61d06d6bSBaptiste Daroussin.Ic \&ft
1614*61d06d6bSBaptiste Daroussinrequest or a
1615*61d06d6bSBaptiste Daroussin.Xr tbl 7
1616*61d06d6bSBaptiste Daroussin.Ic \&f
1617*61d06d6bSBaptiste Daroussinlayout modifier has an unknown
1618*61d06d6bSBaptiste Daroussin.Ar font
1619*61d06d6bSBaptiste Daroussinargument.
1620*61d06d6bSBaptiste Daroussin.It Sy "odd number of characters in request"
1621*61d06d6bSBaptiste Daroussin.Pq roff
1622*61d06d6bSBaptiste DaroussinA
1623*61d06d6bSBaptiste Daroussin.Ic \&tr
1624*61d06d6bSBaptiste Daroussinrequest contains an odd number of characters.
1625*61d06d6bSBaptiste DaroussinThe last character is mapped to the blank character.
1626*61d06d6bSBaptiste Daroussin.El
1627*61d06d6bSBaptiste Daroussin.Ss "Warnings related to plain text"
1628*61d06d6bSBaptiste Daroussin.Bl -ohang
1629*61d06d6bSBaptiste Daroussin.It Sy "blank line in fill mode, using .sp"
1630*61d06d6bSBaptiste Daroussin.Pq mdoc
1631*61d06d6bSBaptiste DaroussinThe meaning of blank input lines is only well-defined in non-fill mode:
1632*61d06d6bSBaptiste DaroussinIn fill mode, line breaks of text input lines are not supposed to be
1633*61d06d6bSBaptiste Daroussinsignificant.
1634*61d06d6bSBaptiste DaroussinHowever, for compatibility with groff, blank lines in fill mode
1635*61d06d6bSBaptiste Daroussinare replaced with
1636*61d06d6bSBaptiste Daroussin.Ic \&sp
1637*61d06d6bSBaptiste Daroussinrequests.
1638*61d06d6bSBaptiste Daroussin.It Sy "tab in filled text"
1639*61d06d6bSBaptiste Daroussin.Pq mdoc , man
1640*61d06d6bSBaptiste DaroussinThe meaning of tab characters is only well-defined in non-fill mode:
1641*61d06d6bSBaptiste DaroussinIn fill mode, whitespace is not supposed to be significant
1642*61d06d6bSBaptiste Daroussinon text input lines.
1643*61d06d6bSBaptiste DaroussinAs an implementation dependent choice, tab characters on text lines
1644*61d06d6bSBaptiste Daroussinare passed through to the formatters in any case.
1645*61d06d6bSBaptiste DaroussinGiven that the text before the tab character will be filled,
1646*61d06d6bSBaptiste Daroussinit is hard to predict which tab stop position the tab will advance to.
1647*61d06d6bSBaptiste Daroussin.It Sy "new sentence, new line"
1648*61d06d6bSBaptiste Daroussin.Pq mdoc
1649*61d06d6bSBaptiste DaroussinA new sentence starts in the middle of a text line.
1650*61d06d6bSBaptiste DaroussinStart it on a new input line to help formatters produce correct spacing.
1651*61d06d6bSBaptiste Daroussin.It Sy "invalid escape sequence"
1652*61d06d6bSBaptiste Daroussin.Pq roff
1653*61d06d6bSBaptiste DaroussinAn escape sequence has an invalid opening argument delimiter, lacks the
1654*61d06d6bSBaptiste Daroussinclosing argument delimiter, or the argument has too few characters.
1655*61d06d6bSBaptiste DaroussinIf the argument is incomplete,
1656*61d06d6bSBaptiste Daroussin.Ic \e*
1657*61d06d6bSBaptiste Daroussinand
1658*61d06d6bSBaptiste Daroussin.Ic \en
1659*61d06d6bSBaptiste Daroussinexpand to an empty string,
1660*61d06d6bSBaptiste Daroussin.Ic \eB
1661*61d06d6bSBaptiste Daroussinto the digit
1662*61d06d6bSBaptiste Daroussin.Sq 0 ,
1663*61d06d6bSBaptiste Daroussinand
1664*61d06d6bSBaptiste Daroussin.Ic \ew
1665*61d06d6bSBaptiste Daroussinto the length of the incomplete argument.
1666*61d06d6bSBaptiste DaroussinAll other invalid escape sequences are ignored.
1667*61d06d6bSBaptiste Daroussin.It Sy "undefined string, using \(dq\(dq"
1668*61d06d6bSBaptiste Daroussin.Pq roff
1669*61d06d6bSBaptiste DaroussinIf a string is used without being defined before,
1670*61d06d6bSBaptiste Daroussinits value is implicitly set to the empty string.
1671*61d06d6bSBaptiste DaroussinHowever, defining strings explicitly before use
1672*61d06d6bSBaptiste Daroussinkeeps the code more readable.
1673*61d06d6bSBaptiste Daroussin.El
1674*61d06d6bSBaptiste Daroussin.Ss "Warnings related to tables"
1675*61d06d6bSBaptiste Daroussin.Bl -ohang
1676*61d06d6bSBaptiste Daroussin.It Sy "tbl line starts with span"
1677*61d06d6bSBaptiste Daroussin.Pq tbl
1678*61d06d6bSBaptiste DaroussinThe first cell in a table layout line is a horizontal span
1679*61d06d6bSBaptiste Daroussin.Pq Sq Cm s .
1680*61d06d6bSBaptiste DaroussinData provided for this cell is ignored, and nothing is printed in the cell.
1681*61d06d6bSBaptiste Daroussin.It Sy "tbl column starts with span"
1682*61d06d6bSBaptiste Daroussin.Pq tbl
1683*61d06d6bSBaptiste DaroussinThe first line of a table layout specification
1684*61d06d6bSBaptiste Daroussinrequests a vertical span
1685*61d06d6bSBaptiste Daroussin.Pq Sq Cm ^ .
1686*61d06d6bSBaptiste DaroussinData provided for this cell is ignored, and nothing is printed in the cell.
1687*61d06d6bSBaptiste Daroussin.It Sy "skipping vertical bar in tbl layout"
1688*61d06d6bSBaptiste Daroussin.Pq tbl
1689*61d06d6bSBaptiste DaroussinA table layout specification contains more than two consecutive vertical bars.
1690*61d06d6bSBaptiste DaroussinA double bar is printed, all additional bars are discarded.
1691*61d06d6bSBaptiste Daroussin.El
1692*61d06d6bSBaptiste Daroussin.Ss "Errors related to tables"
1693*61d06d6bSBaptiste Daroussin.Bl -ohang
1694*61d06d6bSBaptiste Daroussin.It Sy "non-alphabetic character in tbl options"
1695*61d06d6bSBaptiste Daroussin.Pq tbl
1696*61d06d6bSBaptiste DaroussinThe table options line contains a character other than a letter,
1697*61d06d6bSBaptiste Daroussinblank, or comma where the beginning of an option name is expected.
1698*61d06d6bSBaptiste DaroussinThe character is ignored.
1699*61d06d6bSBaptiste Daroussin.It Sy "skipping unknown tbl option"
1700*61d06d6bSBaptiste Daroussin.Pq tbl
1701*61d06d6bSBaptiste DaroussinThe table options line contains a string of letters that does not
1702*61d06d6bSBaptiste Daroussinmatch any known option name.
1703*61d06d6bSBaptiste DaroussinThe word is ignored.
1704*61d06d6bSBaptiste Daroussin.It Sy "missing tbl option argument"
1705*61d06d6bSBaptiste Daroussin.Pq tbl
1706*61d06d6bSBaptiste DaroussinA table option that requires an argument is not followed by an
1707*61d06d6bSBaptiste Daroussinopening parenthesis, or the opening parenthesis is immediately
1708*61d06d6bSBaptiste Daroussinfollowed by a closing parenthesis.
1709*61d06d6bSBaptiste DaroussinThe option is ignored.
1710*61d06d6bSBaptiste Daroussin.It Sy "wrong tbl option argument size"
1711*61d06d6bSBaptiste Daroussin.Pq tbl
1712*61d06d6bSBaptiste DaroussinA table option argument contains an invalid number of characters.
1713*61d06d6bSBaptiste DaroussinBoth the option and the argument are ignored.
1714*61d06d6bSBaptiste Daroussin.It Sy "empty tbl layout"
1715*61d06d6bSBaptiste Daroussin.Pq tbl
1716*61d06d6bSBaptiste DaroussinA table layout specification is completely empty,
1717*61d06d6bSBaptiste Daroussinspecifying zero lines and zero columns.
1718*61d06d6bSBaptiste DaroussinAs a fallback, a single left-justified column is used.
1719*61d06d6bSBaptiste Daroussin.It Sy "invalid character in tbl layout"
1720*61d06d6bSBaptiste Daroussin.Pq tbl
1721*61d06d6bSBaptiste DaroussinA table layout specification contains a character that can neither
1722*61d06d6bSBaptiste Daroussinbe interpreted as a layout key character nor as a layout modifier,
1723*61d06d6bSBaptiste Daroussinor a modifier precedes the first key.
1724*61d06d6bSBaptiste DaroussinThe invalid character is discarded.
1725*61d06d6bSBaptiste Daroussin.It Sy "unmatched parenthesis in tbl layout"
1726*61d06d6bSBaptiste Daroussin.Pq tbl
1727*61d06d6bSBaptiste DaroussinA table layout specification contains an opening parenthesis,
1728*61d06d6bSBaptiste Daroussinbut no matching closing parenthesis.
1729*61d06d6bSBaptiste DaroussinThe rest of the input line, starting from the parenthesis, has no effect.
1730*61d06d6bSBaptiste Daroussin.It Sy "tbl without any data cells"
1731*61d06d6bSBaptiste Daroussin.Pq tbl
1732*61d06d6bSBaptiste DaroussinA table does not contain any data cells.
1733*61d06d6bSBaptiste DaroussinIt will probably produce no output.
1734*61d06d6bSBaptiste Daroussin.It Sy "ignoring data in spanned tbl cell"
1735*61d06d6bSBaptiste Daroussin.Pq tbl
1736*61d06d6bSBaptiste DaroussinA table cell is marked as a horizontal span
1737*61d06d6bSBaptiste Daroussin.Pq Sq Cm s
1738*61d06d6bSBaptiste Daroussinor vertical span
1739*61d06d6bSBaptiste Daroussin.Pq Sq Cm ^
1740*61d06d6bSBaptiste Daroussinin the table layout, but it contains data.
1741*61d06d6bSBaptiste DaroussinThe data is ignored.
1742*61d06d6bSBaptiste Daroussin.It Sy "ignoring extra tbl data cells"
1743*61d06d6bSBaptiste Daroussin.Pq tbl
1744*61d06d6bSBaptiste DaroussinA data line contains more cells than the corresponding layout line.
1745*61d06d6bSBaptiste DaroussinThe data in the extra cells is ignored.
1746*61d06d6bSBaptiste Daroussin.It Sy "data block open at end of tbl"
1747*61d06d6bSBaptiste Daroussin.Pq tbl
1748*61d06d6bSBaptiste DaroussinA data block is opened with
1749*61d06d6bSBaptiste Daroussin.Cm T{ ,
1750*61d06d6bSBaptiste Daroussinbut never closed with a matching
1751*61d06d6bSBaptiste Daroussin.Cm T} .
1752*61d06d6bSBaptiste DaroussinThe remaining data lines of the table are all put into one cell,
1753*61d06d6bSBaptiste Daroussinand any remaining cells stay empty.
1754*61d06d6bSBaptiste Daroussin.El
1755*61d06d6bSBaptiste Daroussin.Ss "Errors related to roff, mdoc, and man code"
1756*61d06d6bSBaptiste Daroussin.Bl -ohang
1757*61d06d6bSBaptiste Daroussin.It Sy "duplicate prologue macro"
1758*61d06d6bSBaptiste Daroussin.Pq mdoc
1759*61d06d6bSBaptiste DaroussinOne of the prologue macros occurs more than once.
1760*61d06d6bSBaptiste DaroussinThe last instance overrides all previous ones.
1761*61d06d6bSBaptiste Daroussin.It Sy "skipping late title macro"
1762*61d06d6bSBaptiste Daroussin.Pq mdoc
1763*61d06d6bSBaptiste DaroussinThe
1764*61d06d6bSBaptiste Daroussin.Ic \&Dt
1765*61d06d6bSBaptiste Daroussinmacro appears after the first non-prologue macro.
1766*61d06d6bSBaptiste DaroussinTraditional formatters cannot handle this because
1767*61d06d6bSBaptiste Daroussinthey write the page header before parsing the document body.
1768*61d06d6bSBaptiste DaroussinEven though this technical restriction does not apply to
1769*61d06d6bSBaptiste Daroussin.Nm ,
1770*61d06d6bSBaptiste Daroussintraditional semantics is preserved.
1771*61d06d6bSBaptiste DaroussinThe late macro is discarded including its arguments.
1772*61d06d6bSBaptiste Daroussin.It Sy "input stack limit exceeded, infinite loop?"
1773*61d06d6bSBaptiste Daroussin.Pq roff
1774*61d06d6bSBaptiste DaroussinExplicit recursion limits are implemented for the following features,
1775*61d06d6bSBaptiste Daroussinin order to prevent infinite loops:
1776*61d06d6bSBaptiste Daroussin.Bl -dash -compact
1777*61d06d6bSBaptiste Daroussin.It
1778*61d06d6bSBaptiste Daroussinexpansion of nested escape sequences
1779*61d06d6bSBaptiste Daroussinincluding expansion of strings and number registers,
1780*61d06d6bSBaptiste Daroussin.It
1781*61d06d6bSBaptiste Daroussinexpansion of nested user-defined macros,
1782*61d06d6bSBaptiste Daroussin.It
1783*61d06d6bSBaptiste Daroussinand
1784*61d06d6bSBaptiste Daroussin.Ic \&so
1785*61d06d6bSBaptiste Daroussinfile inclusion.
1786*61d06d6bSBaptiste Daroussin.El
1787*61d06d6bSBaptiste DaroussinWhen a limit is hit, the output is incorrect, typically losing
1788*61d06d6bSBaptiste Daroussinsome content, but the parser can continue.
1789*61d06d6bSBaptiste Daroussin.It Sy "skipping bad character"
1790*61d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
1791*61d06d6bSBaptiste DaroussinThe input file contains a byte that is not a printable
1792*61d06d6bSBaptiste Daroussin.Xr ascii 7
1793*61d06d6bSBaptiste Daroussincharacter.
1794*61d06d6bSBaptiste DaroussinThe message mentions the character number.
1795*61d06d6bSBaptiste DaroussinThe offending byte is replaced with a question mark
1796*61d06d6bSBaptiste Daroussin.Pq Sq \&? .
1797*61d06d6bSBaptiste DaroussinConsider editing the input file to replace the byte with an ASCII
1798*61d06d6bSBaptiste Daroussintransliteration of the intended character.
1799*61d06d6bSBaptiste Daroussin.It Sy "skipping unknown macro"
1800*61d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
1801*61d06d6bSBaptiste DaroussinThe first identifier on a request or macro line is neither recognized as a
1802*61d06d6bSBaptiste Daroussin.Xr roff 7
1803*61d06d6bSBaptiste Daroussinrequest, nor as a user-defined macro, nor, respectively, as an
1804*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1805*61d06d6bSBaptiste Daroussinor
1806*61d06d6bSBaptiste Daroussin.Xr man 7
1807*61d06d6bSBaptiste Daroussinmacro.
1808*61d06d6bSBaptiste DaroussinIt may be mistyped or unsupported.
1809*61d06d6bSBaptiste DaroussinThe request or macro is discarded including its arguments.
1810*61d06d6bSBaptiste Daroussin.It Sy "skipping insecure request"
1811*61d06d6bSBaptiste Daroussin.Pq roff
1812*61d06d6bSBaptiste DaroussinAn input file attempted to run a shell command
1813*61d06d6bSBaptiste Daroussinor to read or write an external file.
1814*61d06d6bSBaptiste DaroussinSuch attempts are denied for security reasons.
1815*61d06d6bSBaptiste Daroussin.It Sy "skipping item outside list"
1816*61d06d6bSBaptiste Daroussin.Pq mdoc , eqn
1817*61d06d6bSBaptiste DaroussinAn
1818*61d06d6bSBaptiste Daroussin.Ic \&It
1819*61d06d6bSBaptiste Daroussinmacro occurs outside any
1820*61d06d6bSBaptiste Daroussin.Ic \&Bl
1821*61d06d6bSBaptiste Daroussinlist, or an
1822*61d06d6bSBaptiste Daroussin.Xr eqn 7
1823*61d06d6bSBaptiste Daroussin.Ic above
1824*61d06d6bSBaptiste Daroussindelimiter occurs outside any pile.
1825*61d06d6bSBaptiste DaroussinIt is discarded including its arguments.
1826*61d06d6bSBaptiste Daroussin.It Sy "skipping column outside column list"
1827*61d06d6bSBaptiste Daroussin.Pq mdoc
1828*61d06d6bSBaptiste DaroussinA
1829*61d06d6bSBaptiste Daroussin.Ic \&Ta
1830*61d06d6bSBaptiste Daroussinmacro occurs outside any
1831*61d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
1832*61d06d6bSBaptiste Daroussinblock.
1833*61d06d6bSBaptiste DaroussinIt is discarded including its arguments.
1834*61d06d6bSBaptiste Daroussin.It Sy "skipping end of block that is not open"
1835*61d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , tbl , roff
1836*61d06d6bSBaptiste DaroussinVarious syntax elements can only be used to explicitly close blocks
1837*61d06d6bSBaptiste Daroussinthat have previously been opened.
1838*61d06d6bSBaptiste DaroussinAn
1839*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1840*61d06d6bSBaptiste Daroussinblock closing macro, a
1841*61d06d6bSBaptiste Daroussin.Xr man 7
1842*61d06d6bSBaptiste Daroussin.Ic \&ME , \&RE
1843*61d06d6bSBaptiste Daroussinor
1844*61d06d6bSBaptiste Daroussin.Ic \&UE
1845*61d06d6bSBaptiste Daroussinmacro, an
1846*61d06d6bSBaptiste Daroussin.Xr eqn 7
1847*61d06d6bSBaptiste Daroussinright delimiter or closing brace, or the end of an equation, table, or
1848*61d06d6bSBaptiste Daroussin.Xr roff 7
1849*61d06d6bSBaptiste Daroussinconditional request is encountered but no matching block is open.
1850*61d06d6bSBaptiste DaroussinThe offending request or macro is discarded.
1851*61d06d6bSBaptiste Daroussin.It Sy "fewer RS blocks open, skipping"
1852*61d06d6bSBaptiste Daroussin.Pq man
1853*61d06d6bSBaptiste DaroussinThe
1854*61d06d6bSBaptiste Daroussin.Ic \&RE
1855*61d06d6bSBaptiste Daroussinmacro is invoked with an argument, but less than the specified number of
1856*61d06d6bSBaptiste Daroussin.Ic \&RS
1857*61d06d6bSBaptiste Daroussinblocks is open.
1858*61d06d6bSBaptiste DaroussinThe
1859*61d06d6bSBaptiste Daroussin.Ic \&RE
1860*61d06d6bSBaptiste Daroussinmacro is discarded.
1861*61d06d6bSBaptiste Daroussin.It Sy "inserting missing end of block"
1862*61d06d6bSBaptiste Daroussin.Pq mdoc , tbl
1863*61d06d6bSBaptiste DaroussinVarious
1864*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1865*61d06d6bSBaptiste Daroussinmacros as well as tables require explicit closing by dedicated macros.
1866*61d06d6bSBaptiste DaroussinA block that doesn't support bad nesting
1867*61d06d6bSBaptiste Daroussinends before all of its children are properly closed.
1868*61d06d6bSBaptiste DaroussinThe open child nodes are closed implicitly.
1869*61d06d6bSBaptiste Daroussin.It Sy "appending missing end of block"
1870*61d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , tbl , roff
1871*61d06d6bSBaptiste DaroussinAt the end of the document, an explicit
1872*61d06d6bSBaptiste Daroussin.Xr mdoc 7
1873*61d06d6bSBaptiste Daroussinblock, a
1874*61d06d6bSBaptiste Daroussin.Xr man 7
1875*61d06d6bSBaptiste Daroussinnext-line scope or
1876*61d06d6bSBaptiste Daroussin.Ic \&MT , \&RS
1877*61d06d6bSBaptiste Daroussinor
1878*61d06d6bSBaptiste Daroussin.Ic \&UR
1879*61d06d6bSBaptiste Daroussinblock, an equation, table, or
1880*61d06d6bSBaptiste Daroussin.Xr roff 7
1881*61d06d6bSBaptiste Daroussinconditional or ignore block is still open.
1882*61d06d6bSBaptiste DaroussinThe open block is closed implicitly.
1883*61d06d6bSBaptiste Daroussin.It Sy "escaped character not allowed in a name"
1884*61d06d6bSBaptiste Daroussin.Pq roff
1885*61d06d6bSBaptiste DaroussinMacro, string and register identifiers consist of printable,
1886*61d06d6bSBaptiste Daroussinnon-whitespace ASCII characters.
1887*61d06d6bSBaptiste DaroussinEscape sequences and characters and strings expressed in terms of them
1888*61d06d6bSBaptiste Daroussincannot form part of a name.
1889*61d06d6bSBaptiste DaroussinThe first argument of an
1890*61d06d6bSBaptiste Daroussin.Ic \&am ,
1891*61d06d6bSBaptiste Daroussin.Ic \&as ,
1892*61d06d6bSBaptiste Daroussin.Ic \&de ,
1893*61d06d6bSBaptiste Daroussin.Ic \&ds ,
1894*61d06d6bSBaptiste Daroussin.Ic \&nr ,
1895*61d06d6bSBaptiste Daroussinor
1896*61d06d6bSBaptiste Daroussin.Ic \&rr
1897*61d06d6bSBaptiste Daroussinrequest, or any argument of an
1898*61d06d6bSBaptiste Daroussin.Ic \&rm
1899*61d06d6bSBaptiste Daroussinrequest, or the name of a request or user defined macro being called,
1900*61d06d6bSBaptiste Daroussinis terminated by an escape sequence.
1901*61d06d6bSBaptiste DaroussinIn the cases of
1902*61d06d6bSBaptiste Daroussin.Ic \&as ,
1903*61d06d6bSBaptiste Daroussin.Ic \&ds ,
1904*61d06d6bSBaptiste Daroussinand
1905*61d06d6bSBaptiste Daroussin.Ic \&nr ,
1906*61d06d6bSBaptiste Daroussinthe request has no effect at all.
1907*61d06d6bSBaptiste DaroussinIn the cases of
1908*61d06d6bSBaptiste Daroussin.Ic \&am ,
1909*61d06d6bSBaptiste Daroussin.Ic \&de ,
1910*61d06d6bSBaptiste Daroussin.Ic \&rr ,
1911*61d06d6bSBaptiste Daroussinand
1912*61d06d6bSBaptiste Daroussin.Ic \&rm ,
1913*61d06d6bSBaptiste Daroussinwhat was parsed up to this point is used as the arguments to the request,
1914*61d06d6bSBaptiste Daroussinand the rest of the input line is discarded including the escape sequence.
1915*61d06d6bSBaptiste DaroussinWhen parsing for a request or a user-defined macro name to be called,
1916*61d06d6bSBaptiste Daroussinonly the escape sequence is discarded.
1917*61d06d6bSBaptiste DaroussinThe characters preceding it are used as the request or macro name,
1918*61d06d6bSBaptiste Daroussinthe characters following it are used as the arguments to the request or macro.
1919*61d06d6bSBaptiste Daroussin.It Sy "NOT IMPLEMENTED: Bd -file"
1920*61d06d6bSBaptiste Daroussin.Pq mdoc
1921*61d06d6bSBaptiste DaroussinFor security reasons, the
1922*61d06d6bSBaptiste Daroussin.Ic \&Bd
1923*61d06d6bSBaptiste Daroussinmacro does not support the
1924*61d06d6bSBaptiste Daroussin.Fl file
1925*61d06d6bSBaptiste Daroussinargument.
1926*61d06d6bSBaptiste DaroussinBy requesting the inclusion of a sensitive file, a malicious document
1927*61d06d6bSBaptiste Daroussinmight otherwise trick a privileged user into inadvertently displaying
1928*61d06d6bSBaptiste Daroussinthe file on the screen, revealing the file content to bystanders.
1929*61d06d6bSBaptiste DaroussinThe argument is ignored including the file name following it.
1930*61d06d6bSBaptiste Daroussin.It Sy "skipping display without arguments"
1931*61d06d6bSBaptiste Daroussin.Pq mdoc
1932*61d06d6bSBaptiste DaroussinA
1933*61d06d6bSBaptiste Daroussin.Ic \&Bd
1934*61d06d6bSBaptiste Daroussinblock macro does not have any arguments.
1935*61d06d6bSBaptiste DaroussinThe block is discarded, and the block content is displayed in
1936*61d06d6bSBaptiste Daroussinwhatever mode was active before the block.
1937*61d06d6bSBaptiste Daroussin.It Sy "missing list type, using -item"
1938*61d06d6bSBaptiste Daroussin.Pq mdoc
1939*61d06d6bSBaptiste DaroussinA
1940*61d06d6bSBaptiste Daroussin.Ic \&Bl
1941*61d06d6bSBaptiste Daroussinmacro fails to specify the list type.
1942*61d06d6bSBaptiste Daroussin.It Sy "argument is not numeric, using 1"
1943*61d06d6bSBaptiste Daroussin.Pq roff
1944*61d06d6bSBaptiste DaroussinThe argument of a
1945*61d06d6bSBaptiste Daroussin.Ic \&ce
1946*61d06d6bSBaptiste Daroussinrequest is not a number.
1947*61d06d6bSBaptiste Daroussin.It Sy "missing manual name, using \(dq\(dq"
1948*61d06d6bSBaptiste Daroussin.Pq mdoc
1949*61d06d6bSBaptiste DaroussinThe first call to
1950*61d06d6bSBaptiste Daroussin.Ic \&Nm ,
1951*61d06d6bSBaptiste Daroussinor any call in the NAME section, lacks the required argument.
1952*61d06d6bSBaptiste Daroussin.It Sy "uname(3) system call failed, using UNKNOWN"
1953*61d06d6bSBaptiste Daroussin.Pq mdoc
1954*61d06d6bSBaptiste DaroussinThe
1955*61d06d6bSBaptiste Daroussin.Ic \&Os
1956*61d06d6bSBaptiste Daroussinmacro is called without arguments, and the
1957*61d06d6bSBaptiste Daroussin.Xr uname 3
1958*61d06d6bSBaptiste Daroussinsystem call failed.
1959*61d06d6bSBaptiste DaroussinAs a workaround,
1960*61d06d6bSBaptiste Daroussin.Nm
1961*61d06d6bSBaptiste Daroussincan be compiled with
1962*61d06d6bSBaptiste Daroussin.Sm off
1963*61d06d6bSBaptiste Daroussin.Fl D Cm OSNAME=\(dq\e\(dq Ar string Cm \e\(dq\(dq .
1964*61d06d6bSBaptiste Daroussin.Sm on
1965*61d06d6bSBaptiste Daroussin.It Sy "unknown standard specifier"
1966*61d06d6bSBaptiste Daroussin.Pq mdoc
1967*61d06d6bSBaptiste DaroussinAn
1968*61d06d6bSBaptiste Daroussin.Ic \&St
1969*61d06d6bSBaptiste Daroussinmacro has an unknown argument and is discarded.
1970*61d06d6bSBaptiste Daroussin.It Sy "skipping request without numeric argument"
1971*61d06d6bSBaptiste Daroussin.Pq roff , eqn
1972*61d06d6bSBaptiste DaroussinAn
1973*61d06d6bSBaptiste Daroussin.Ic \&it
1974*61d06d6bSBaptiste Daroussinrequest or an
1975*61d06d6bSBaptiste Daroussin.Xr eqn 7
1976*61d06d6bSBaptiste Daroussin.Ic \&size
1977*61d06d6bSBaptiste Daroussinor
1978*61d06d6bSBaptiste Daroussin.Ic \&gsize
1979*61d06d6bSBaptiste Daroussinstatement has a non-numeric or negative argument or no argument at all.
1980*61d06d6bSBaptiste DaroussinThe invalid request or statement is ignored.
1981*61d06d6bSBaptiste Daroussin.It Sy "NOT IMPLEMENTED: .so with absolute path or \(dq..\(dq"
1982*61d06d6bSBaptiste Daroussin.Pq roff
1983*61d06d6bSBaptiste DaroussinFor security reasons,
1984*61d06d6bSBaptiste Daroussin.Nm
1985*61d06d6bSBaptiste Daroussinallows
1986*61d06d6bSBaptiste Daroussin.Ic \&so
1987*61d06d6bSBaptiste Daroussinfile inclusion requests only with relative paths
1988*61d06d6bSBaptiste Daroussinand only without ascending to any parent directory.
1989*61d06d6bSBaptiste DaroussinBy requesting the inclusion of a sensitive file, a malicious document
1990*61d06d6bSBaptiste Daroussinmight otherwise trick a privileged user into inadvertently displaying
1991*61d06d6bSBaptiste Daroussinthe file on the screen, revealing the file content to bystanders.
1992*61d06d6bSBaptiste Daroussin.Nm
1993*61d06d6bSBaptiste Daroussinonly shows the path as it appears behind
1994*61d06d6bSBaptiste Daroussin.Ic \&so .
1995*61d06d6bSBaptiste Daroussin.It Sy ".so request failed"
1996*61d06d6bSBaptiste Daroussin.Pq roff
1997*61d06d6bSBaptiste DaroussinServicing a
1998*61d06d6bSBaptiste Daroussin.Ic \&so
1999*61d06d6bSBaptiste Daroussinrequest requires reading an external file, but the file could not be
2000*61d06d6bSBaptiste Daroussinopened.
2001*61d06d6bSBaptiste Daroussin.Nm
2002*61d06d6bSBaptiste Daroussinonly shows the path as it appears behind
2003*61d06d6bSBaptiste Daroussin.Ic \&so .
2004*61d06d6bSBaptiste Daroussin.It Sy "skipping all arguments"
2005*61d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , roff
2006*61d06d6bSBaptiste DaroussinAn
2007*61d06d6bSBaptiste Daroussin.Xr mdoc 7
2008*61d06d6bSBaptiste Daroussin.Ic \&Bt ,
2009*61d06d6bSBaptiste Daroussin.Ic \&Ed ,
2010*61d06d6bSBaptiste Daroussin.Ic \&Ef ,
2011*61d06d6bSBaptiste Daroussin.Ic \&Ek ,
2012*61d06d6bSBaptiste Daroussin.Ic \&El ,
2013*61d06d6bSBaptiste Daroussin.Ic \&Lp ,
2014*61d06d6bSBaptiste Daroussin.Ic \&Pp ,
2015*61d06d6bSBaptiste Daroussin.Ic \&Re ,
2016*61d06d6bSBaptiste Daroussin.Ic \&Rs ,
2017*61d06d6bSBaptiste Daroussinor
2018*61d06d6bSBaptiste Daroussin.Ic \&Ud
2019*61d06d6bSBaptiste Daroussinmacro, an
2020*61d06d6bSBaptiste Daroussin.Ic \&It
2021*61d06d6bSBaptiste Daroussinmacro in a list that don't support item heads, a
2022*61d06d6bSBaptiste Daroussin.Xr man 7
2023*61d06d6bSBaptiste Daroussin.Ic \&LP ,
2024*61d06d6bSBaptiste Daroussin.Ic \&P ,
2025*61d06d6bSBaptiste Daroussinor
2026*61d06d6bSBaptiste Daroussin.Ic \&PP
2027*61d06d6bSBaptiste Daroussinmacro, an
2028*61d06d6bSBaptiste Daroussin.Xr eqn 7
2029*61d06d6bSBaptiste Daroussin.Ic \&EQ
2030*61d06d6bSBaptiste Daroussinor
2031*61d06d6bSBaptiste Daroussin.Ic \&EN
2032*61d06d6bSBaptiste Daroussinmacro, or a
2033*61d06d6bSBaptiste Daroussin.Xr roff 7
2034*61d06d6bSBaptiste Daroussin.Ic \&br ,
2035*61d06d6bSBaptiste Daroussin.Ic \&fi ,
2036*61d06d6bSBaptiste Daroussinor
2037*61d06d6bSBaptiste Daroussin.Ic \&nf
2038*61d06d6bSBaptiste Daroussinrequest or
2039*61d06d6bSBaptiste Daroussin.Sq \&..
2040*61d06d6bSBaptiste Daroussinblock closing request is invoked with at least one argument.
2041*61d06d6bSBaptiste DaroussinAll arguments are ignored.
2042*61d06d6bSBaptiste Daroussin.It Sy "skipping excess arguments"
2043*61d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
2044*61d06d6bSBaptiste DaroussinA macro or request is invoked with too many arguments:
2045*61d06d6bSBaptiste Daroussin.Bl -dash -offset 2n -width 2n -compact
2046*61d06d6bSBaptiste Daroussin.It
2047*61d06d6bSBaptiste Daroussin.Ic \&Fo ,
2048*61d06d6bSBaptiste Daroussin.Ic \&MT ,
2049*61d06d6bSBaptiste Daroussin.Ic \&PD ,
2050*61d06d6bSBaptiste Daroussin.Ic \&RS ,
2051*61d06d6bSBaptiste Daroussin.Ic \&UR ,
2052*61d06d6bSBaptiste Daroussin.Ic \&ft ,
2053*61d06d6bSBaptiste Daroussinor
2054*61d06d6bSBaptiste Daroussin.Ic \&sp
2055*61d06d6bSBaptiste Daroussinwith more than one argument
2056*61d06d6bSBaptiste Daroussin.It
2057*61d06d6bSBaptiste Daroussin.Ic \&An
2058*61d06d6bSBaptiste Daroussinwith another argument after
2059*61d06d6bSBaptiste Daroussin.Fl split
2060*61d06d6bSBaptiste Daroussinor
2061*61d06d6bSBaptiste Daroussin.Fl nosplit
2062*61d06d6bSBaptiste Daroussin.It
2063*61d06d6bSBaptiste Daroussin.Ic \&RE
2064*61d06d6bSBaptiste Daroussinwith more than one argument or with a non-integer argument
2065*61d06d6bSBaptiste Daroussin.It
2066*61d06d6bSBaptiste Daroussin.Ic \&OP
2067*61d06d6bSBaptiste Daroussinor a request of the
2068*61d06d6bSBaptiste Daroussin.Ic \&de
2069*61d06d6bSBaptiste Daroussinfamily with more than two arguments
2070*61d06d6bSBaptiste Daroussin.It
2071*61d06d6bSBaptiste Daroussin.Ic \&Dt
2072*61d06d6bSBaptiste Daroussinwith more than three arguments
2073*61d06d6bSBaptiste Daroussin.It
2074*61d06d6bSBaptiste Daroussin.Ic \&TH
2075*61d06d6bSBaptiste Daroussinwith more than five arguments
2076*61d06d6bSBaptiste Daroussin.It
2077*61d06d6bSBaptiste Daroussin.Ic \&Bd ,
2078*61d06d6bSBaptiste Daroussin.Ic \&Bk ,
2079*61d06d6bSBaptiste Daroussinor
2080*61d06d6bSBaptiste Daroussin.Ic \&Bl
2081*61d06d6bSBaptiste Daroussinwith invalid arguments
2082*61d06d6bSBaptiste Daroussin.El
2083*61d06d6bSBaptiste DaroussinThe excess arguments are ignored.
2084*61d06d6bSBaptiste Daroussin.El
2085*61d06d6bSBaptiste Daroussin.Ss Unsupported features
2086*61d06d6bSBaptiste Daroussin.Bl -ohang
2087*61d06d6bSBaptiste Daroussin.It Sy "input too large"
2088*61d06d6bSBaptiste Daroussin.Pq mdoc , man
2089*61d06d6bSBaptiste DaroussinCurrently,
2090*61d06d6bSBaptiste Daroussin.Nm
2091*61d06d6bSBaptiste Daroussincannot handle input files larger than its arbitrary size limit
2092*61d06d6bSBaptiste Daroussinof 2^31 bytes (2 Gigabytes).
2093*61d06d6bSBaptiste DaroussinSince useful manuals are always small, this is not a problem in practice.
2094*61d06d6bSBaptiste DaroussinParsing is aborted as soon as the condition is detected.
2095*61d06d6bSBaptiste Daroussin.It Sy "unsupported control character"
2096*61d06d6bSBaptiste Daroussin.Pq roff
2097*61d06d6bSBaptiste DaroussinAn ASCII control character supported by other
2098*61d06d6bSBaptiste Daroussin.Xr roff 7
2099*61d06d6bSBaptiste Daroussinimplementations but not by
2100*61d06d6bSBaptiste Daroussin.Nm
2101*61d06d6bSBaptiste Daroussinwas found in an input file.
2102*61d06d6bSBaptiste DaroussinIt is replaced by a question mark.
2103*61d06d6bSBaptiste Daroussin.It Sy "unsupported roff request"
2104*61d06d6bSBaptiste Daroussin.Pq roff
2105*61d06d6bSBaptiste DaroussinAn input file contains a
2106*61d06d6bSBaptiste Daroussin.Xr roff 7
2107*61d06d6bSBaptiste Daroussinrequest supported by GNU troff or Heirloom troff but not by
2108*61d06d6bSBaptiste Daroussin.Nm ,
2109*61d06d6bSBaptiste Daroussinand it is likely that this will cause information loss
2110*61d06d6bSBaptiste Daroussinor considerable misformatting.
2111*61d06d6bSBaptiste Daroussin.It Sy "eqn delim option in tbl"
2112*61d06d6bSBaptiste Daroussin.Pq eqn , tbl
2113*61d06d6bSBaptiste DaroussinThe options line of a table defines equation delimiters.
2114*61d06d6bSBaptiste DaroussinAny equation source code contained in the table will be printed unformatted.
2115*61d06d6bSBaptiste Daroussin.It Sy "unsupported table layout modifier"
2116*61d06d6bSBaptiste Daroussin.Pq tbl
2117*61d06d6bSBaptiste DaroussinA table layout specification contains an
2118*61d06d6bSBaptiste Daroussin.Sq Cm m
2119*61d06d6bSBaptiste Daroussinmodifier.
2120*61d06d6bSBaptiste DaroussinThe modifier is discarded.
2121*61d06d6bSBaptiste Daroussin.It Sy "ignoring macro in table"
2122*61d06d6bSBaptiste Daroussin.Pq tbl , mdoc , man
2123*61d06d6bSBaptiste DaroussinA table contains an invocation of an
2124*61d06d6bSBaptiste Daroussin.Xr mdoc 7
2125*61d06d6bSBaptiste Daroussinor
2126*61d06d6bSBaptiste Daroussin.Xr man 7
2127*61d06d6bSBaptiste Daroussinmacro or of an undefined macro.
2128*61d06d6bSBaptiste DaroussinThe macro is ignored, and its arguments are handled
2129*61d06d6bSBaptiste Daroussinas if they were a text line.
2130*61d06d6bSBaptiste Daroussin.El
2131*61d06d6bSBaptiste Daroussin.Sh SEE ALSO
2132*61d06d6bSBaptiste Daroussin.Xr apropos 1 ,
2133*61d06d6bSBaptiste Daroussin.Xr man 1 ,
2134*61d06d6bSBaptiste Daroussin.Xr eqn 7 ,
2135*61d06d6bSBaptiste Daroussin.Xr man 7 ,
2136*61d06d6bSBaptiste Daroussin.Xr mandoc_char 7 ,
2137*61d06d6bSBaptiste Daroussin.Xr mdoc 7 ,
2138*61d06d6bSBaptiste Daroussin.Xr roff 7 ,
2139*61d06d6bSBaptiste Daroussin.Xr tbl 7
2140*61d06d6bSBaptiste Daroussin.Sh HISTORY
2141*61d06d6bSBaptiste DaroussinThe
2142*61d06d6bSBaptiste Daroussin.Nm
2143*61d06d6bSBaptiste Daroussinutility first appeared in
2144*61d06d6bSBaptiste Daroussin.Ox 4.8 .
2145*61d06d6bSBaptiste DaroussinThe option
2146*61d06d6bSBaptiste Daroussin.Fl I
2147*61d06d6bSBaptiste Daroussinappeared in
2148*61d06d6bSBaptiste Daroussin.Ox 5.2 ,
2149*61d06d6bSBaptiste Daroussinand
2150*61d06d6bSBaptiste Daroussin.Fl aCcfhKklMSsw
2151*61d06d6bSBaptiste Daroussinin
2152*61d06d6bSBaptiste Daroussin.Ox 5.7 .
2153*61d06d6bSBaptiste Daroussin.Sh AUTHORS
2154*61d06d6bSBaptiste Daroussin.An -nosplit
2155*61d06d6bSBaptiste DaroussinThe
2156*61d06d6bSBaptiste Daroussin.Nm
2157*61d06d6bSBaptiste Daroussinutility was written by
2158*61d06d6bSBaptiste Daroussin.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
2159*61d06d6bSBaptiste Daroussinand is maintained by
2160*61d06d6bSBaptiste Daroussin.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2161