xref: /illumos-gate/usr/src/man/man7/mandoc_roff.7 (revision bbf215553c7233fbab8a0afdf1fac74c44781867)
1*bbf21555SRichard Lowe.\"	$Id: roff.7,v 1.116 2021/09/18 12:23:06 schwarze Exp $
2*bbf21555SRichard Lowe.\"
3*bbf21555SRichard Lowe.\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4*bbf21555SRichard Lowe.\" Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>
5*bbf21555SRichard Lowe.\"
6*bbf21555SRichard Lowe.\" Permission to use, copy, modify, and distribute this software for any
7*bbf21555SRichard Lowe.\" purpose with or without fee is hereby granted, provided that the above
8*bbf21555SRichard Lowe.\" copyright notice and this permission notice appear in all copies.
9*bbf21555SRichard Lowe.\"
10*bbf21555SRichard Lowe.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*bbf21555SRichard Lowe.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*bbf21555SRichard Lowe.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*bbf21555SRichard Lowe.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*bbf21555SRichard Lowe.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15*bbf21555SRichard Lowe.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16*bbf21555SRichard Lowe.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*bbf21555SRichard Lowe.\"
18*bbf21555SRichard Lowe.Dd $Mdocdate: September 18 2021 $
19*bbf21555SRichard Lowe.Dt ROFF 7
20*bbf21555SRichard Lowe.Os
21*bbf21555SRichard Lowe.Sh NAME
22*bbf21555SRichard Lowe.Nm roff
23*bbf21555SRichard Lowe.Nd roff language reference for mandoc
24*bbf21555SRichard Lowe.Sh DESCRIPTION
25*bbf21555SRichard LoweThe
26*bbf21555SRichard Lowe.Nm roff
27*bbf21555SRichard Lowelanguage is a general purpose text formatting language.
28*bbf21555SRichard LoweSince traditional implementations of the
29*bbf21555SRichard Lowe.Xr mdoc 7
30*bbf21555SRichard Loweand
31*bbf21555SRichard Lowe.Xr man 7
32*bbf21555SRichard Lowemanual formatting languages are based on it,
33*bbf21555SRichard Lowemany real-world manuals use small numbers of
34*bbf21555SRichard Lowe.Nm
35*bbf21555SRichard Lowerequests and escape sequences intermixed with their
36*bbf21555SRichard Lowe.Xr mdoc 7
37*bbf21555SRichard Loweor
38*bbf21555SRichard Lowe.Xr man 7
39*bbf21555SRichard Lowecode.
40*bbf21555SRichard LoweTo properly format such manuals, the
41*bbf21555SRichard Lowe.Xr mandoc 1
42*bbf21555SRichard Loweutility supports a subset of
43*bbf21555SRichard Lowe.Nm
44*bbf21555SRichard Lowerequests and escapes.
45*bbf21555SRichard LoweEven though this manual page lists all
46*bbf21555SRichard Lowe.Nm
47*bbf21555SRichard Lowerequests and escape sequences, it only contains partial information
48*bbf21555SRichard Loweabout requests not supported by
49*bbf21555SRichard Lowe.Xr mandoc 1
50*bbf21555SRichard Loweand about language features that do not matter for manual pages.
51*bbf21555SRichard LoweFor complete
52*bbf21555SRichard Lowe.Nm
53*bbf21555SRichard Lowemanuals, consult the
54*bbf21555SRichard Lowe.Sx SEE ALSO
55*bbf21555SRichard Lowesection.
56*bbf21555SRichard Lowe.Pp
57*bbf21555SRichard LoweInput lines beginning with the control character
58*bbf21555SRichard Lowe.Sq \&.
59*bbf21555SRichard Loweare parsed for requests and macros.
60*bbf21555SRichard LoweSuch lines are called
61*bbf21555SRichard Lowe.Dq request lines
62*bbf21555SRichard Loweor
63*bbf21555SRichard Lowe.Dq macro lines ,
64*bbf21555SRichard Lowerespectively.
65*bbf21555SRichard LoweRequests change the processing state and manipulate the formatting;
66*bbf21555SRichard Lowesome macros also define the document structure and produce formatted
67*bbf21555SRichard Loweoutput.
68*bbf21555SRichard LoweThe single quote
69*bbf21555SRichard Lowe.Pq Qq \(aq
70*bbf21555SRichard Loweis accepted as an alternative control character,
71*bbf21555SRichard Lowetreated by
72*bbf21555SRichard Lowe.Xr mandoc 1
73*bbf21555SRichard Lowejust like
74*bbf21555SRichard Lowe.Ql \&.
75*bbf21555SRichard Lowe.Pp
76*bbf21555SRichard LoweLines not beginning with control characters are called
77*bbf21555SRichard Lowe.Dq text lines .
78*bbf21555SRichard LoweThey provide free-form text to be printed; the formatting of the text
79*bbf21555SRichard Lowedepends on the respective processing context.
80*bbf21555SRichard Lowe.Sh LANGUAGE SYNTAX
81*bbf21555SRichard Lowe.Nm
82*bbf21555SRichard Lowedocuments may contain only graphable 7-bit ASCII characters, the space
83*bbf21555SRichard Lowecharacter, and, in certain circumstances, the tab character.
84*bbf21555SRichard LoweThe backslash character
85*bbf21555SRichard Lowe.Sq \e
86*bbf21555SRichard Loweindicates the start of an escape sequence, used for example for
87*bbf21555SRichard Lowe.Sx Comments
88*bbf21555SRichard Loweand
89*bbf21555SRichard Lowe.Sx Special Characters .
90*bbf21555SRichard LoweFor a complete listing of escape sequences, consult the
91*bbf21555SRichard Lowe.Sx ESCAPE SEQUENCE REFERENCE
92*bbf21555SRichard Lowebelow.
93*bbf21555SRichard Lowe.Ss Comments
94*bbf21555SRichard LoweText following an escaped double-quote
95*bbf21555SRichard Lowe.Sq \e\(dq ,
96*bbf21555SRichard Lowewhether in a request, macro, or text line, is ignored to the end of the line.
97*bbf21555SRichard LoweA request line beginning with a control character and comment escape
98*bbf21555SRichard Lowe.Sq \&.\e\(dq
99*bbf21555SRichard Loweis also ignored.
100*bbf21555SRichard LoweFurthermore, request lines with only a control character and optional
101*bbf21555SRichard Lowetrailing whitespace are stripped from input.
102*bbf21555SRichard Lowe.Pp
103*bbf21555SRichard LoweExamples:
104*bbf21555SRichard Lowe.Bd -literal -offset indent -compact
105*bbf21555SRichard Lowe\&.\e\(dq This is a comment line.
106*bbf21555SRichard Lowe\&.\e\(dq The next line is ignored:
107*bbf21555SRichard Lowe\&.
108*bbf21555SRichard Lowe\&.Sh EXAMPLES \e\(dq This is a comment, too.
109*bbf21555SRichard Lowe\&example text \e\(dq And so is this.
110*bbf21555SRichard Lowe.Ed
111*bbf21555SRichard Lowe.Ss Special Characters
112*bbf21555SRichard LoweSpecial characters are used to encode special glyphs and are rendered
113*bbf21555SRichard Lowedifferently across output media.
114*bbf21555SRichard LoweThey may occur in request, macro, and text lines.
115*bbf21555SRichard LoweSequences begin with the escape character
116*bbf21555SRichard Lowe.Sq \e
117*bbf21555SRichard Lowefollowed by either an open-parenthesis
118*bbf21555SRichard Lowe.Sq \&(
119*bbf21555SRichard Lowefor two-character sequences; an open-bracket
120*bbf21555SRichard Lowe.Sq \&[
121*bbf21555SRichard Lowefor n-character sequences (terminated at a close-bracket
122*bbf21555SRichard Lowe.Sq \&] ) ;
123*bbf21555SRichard Loweor a single one character sequence.
124*bbf21555SRichard Lowe.Pp
125*bbf21555SRichard LoweExamples:
126*bbf21555SRichard Lowe.Bl -tag -width Ds -offset indent -compact
127*bbf21555SRichard Lowe.It Li \e(em
128*bbf21555SRichard LoweTwo-letter em dash escape.
129*bbf21555SRichard Lowe.It Li \ee
130*bbf21555SRichard LoweOne-letter backslash escape.
131*bbf21555SRichard Lowe.El
132*bbf21555SRichard Lowe.Pp
133*bbf21555SRichard LoweSee
134*bbf21555SRichard Lowe.Xr mandoc_char 7
135*bbf21555SRichard Lowefor a complete list.
136*bbf21555SRichard Lowe.Ss Font Selection
137*bbf21555SRichard LoweIn
138*bbf21555SRichard Lowe.Xr mdoc 7
139*bbf21555SRichard Loweand
140*bbf21555SRichard Lowe.Xr man 7
141*bbf21555SRichard Lowedocuments, fonts are usually selected with macros.
142*bbf21555SRichard LoweThe
143*bbf21555SRichard Lowe.Ic \ef
144*bbf21555SRichard Loweescape sequence and the
145*bbf21555SRichard Lowe.Ic \&ft
146*bbf21555SRichard Lowerequest can be used to manually change the font,
147*bbf21555SRichard Lowebut this is not recommended in
148*bbf21555SRichard Lowe.Xr mdoc 7
149*bbf21555SRichard Lowedocuments.
150*bbf21555SRichard LoweSuch manual font changes are overridden by many subsequent macros.
151*bbf21555SRichard Lowe.Pp
152*bbf21555SRichard LoweThe following fonts are supported:
153*bbf21555SRichard Lowe.Pp
154*bbf21555SRichard Lowe.Bl -tag -width CW -offset indent -compact
155*bbf21555SRichard Lowe.It Cm B
156*bbf21555SRichard LoweBold font.
157*bbf21555SRichard Lowe.It Cm BI
158*bbf21555SRichard LoweA font that is both bold and italic.
159*bbf21555SRichard Lowe.It Cm CB
160*bbf21555SRichard LoweBold constant width font.
161*bbf21555SRichard LoweSame as
162*bbf21555SRichard Lowe.Cm B
163*bbf21555SRichard Lowein terminal output.
164*bbf21555SRichard Lowe.It Cm CI
165*bbf21555SRichard LoweItalic constant width font.
166*bbf21555SRichard LoweSame as
167*bbf21555SRichard Lowe.Cm I
168*bbf21555SRichard Lowein terminal output.
169*bbf21555SRichard Lowe.It Cm CR
170*bbf21555SRichard LoweRegular constant width font.
171*bbf21555SRichard LoweSame as
172*bbf21555SRichard Lowe.Cm R
173*bbf21555SRichard Lowein terminal output.
174*bbf21555SRichard Lowe.It Cm CW
175*bbf21555SRichard LoweAn alias for
176*bbf21555SRichard Lowe.Cm CR .
177*bbf21555SRichard Lowe.It Cm I
178*bbf21555SRichard LoweItalic font.
179*bbf21555SRichard Lowe.It Cm P
180*bbf21555SRichard LoweReturn to the previous font.
181*bbf21555SRichard LoweIf a macro caused a font change since the last
182*bbf21555SRichard Lowe.Ic \ef
183*bbf21555SRichard Loweeascape sequence or
184*bbf21555SRichard Lowe.Ic \&ft
185*bbf21555SRichard Lowerequest, this returns to the font before the last font change in
186*bbf21555SRichard Lowethe macro rather than to the font before the last manual font change.
187*bbf21555SRichard Lowe.It Cm R
188*bbf21555SRichard LoweRoman font.
189*bbf21555SRichard LoweThis is the default font.
190*bbf21555SRichard Lowe.It Cm 1
191*bbf21555SRichard LoweAn alias for
192*bbf21555SRichard Lowe.Cm R .
193*bbf21555SRichard Lowe.It Cm 2
194*bbf21555SRichard LoweAn alias for
195*bbf21555SRichard Lowe.Cm I .
196*bbf21555SRichard Lowe.It Cm 3
197*bbf21555SRichard LoweAn alias for
198*bbf21555SRichard Lowe.Cm B .
199*bbf21555SRichard Lowe.It Cm 4
200*bbf21555SRichard LoweAn alias for
201*bbf21555SRichard Lowe.Cm BI .
202*bbf21555SRichard Lowe.El
203*bbf21555SRichard Lowe.Pp
204*bbf21555SRichard LoweExamples:
205*bbf21555SRichard Lowe.Bl -tag -width Ds -offset indent -compact
206*bbf21555SRichard Lowe.It Li \efBbold\efR
207*bbf21555SRichard LoweWrite in \fBbold\fP, then switch to regular font mode.
208*bbf21555SRichard Lowe.It Li \efIitalic\efP
209*bbf21555SRichard LoweWrite in \fIitalic\fP, then return to previous font mode.
210*bbf21555SRichard Lowe.It Li \ef(BIbold italic\efP
211*bbf21555SRichard LoweWrite in \f(BIbold italic\fP, then return to previous font mode.
212*bbf21555SRichard Lowe.El
213*bbf21555SRichard Lowe.Ss Whitespace
214*bbf21555SRichard LoweWhitespace consists of the space character.
215*bbf21555SRichard LoweIn text lines, whitespace is preserved within a line.
216*bbf21555SRichard LoweIn request and macro lines, whitespace delimits arguments and is discarded.
217*bbf21555SRichard Lowe.Pp
218*bbf21555SRichard LoweUnescaped trailing spaces are stripped from text line input unless in a
219*bbf21555SRichard Loweliteral context.
220*bbf21555SRichard LoweIn general, trailing whitespace on any input line is discouraged for
221*bbf21555SRichard Lowereasons of portability.
222*bbf21555SRichard LoweIn the rare case that a space character is needed at the end of an
223*bbf21555SRichard Loweinput line, it may be forced by
224*bbf21555SRichard Lowe.Sq \e\ \e& .
225*bbf21555SRichard Lowe.Pp
226*bbf21555SRichard LoweLiteral space characters can be produced in the output
227*bbf21555SRichard Loweusing escape sequences.
228*bbf21555SRichard LoweIn macro lines, they can also be included in arguments using quotation; see
229*bbf21555SRichard Lowe.Sx MACRO SYNTAX
230*bbf21555SRichard Lowefor details.
231*bbf21555SRichard Lowe.Pp
232*bbf21555SRichard LoweBlank text lines, which may include whitespace, are only permitted
233*bbf21555SRichard Lowewithin literal contexts.
234*bbf21555SRichard LoweIf the first character of a text line is a space, that line is printed
235*bbf21555SRichard Lowewith a leading newline.
236*bbf21555SRichard Lowe.Ss Scaling Widths
237*bbf21555SRichard LoweMany requests and macros support scaled widths for their arguments.
238*bbf21555SRichard LoweThe syntax for a scaled width is
239*bbf21555SRichard Lowe.Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
240*bbf21555SRichard Lowewhere a decimal must be preceded or followed by at least one digit.
241*bbf21555SRichard Lowe.Pp
242*bbf21555SRichard LoweThe following scaling units are accepted:
243*bbf21555SRichard Lowe.Pp
244*bbf21555SRichard Lowe.Bl -tag -width Ds -offset indent -compact
245*bbf21555SRichard Lowe.It c
246*bbf21555SRichard Lowecentimetre
247*bbf21555SRichard Lowe.It i
248*bbf21555SRichard Loweinch
249*bbf21555SRichard Lowe.It P
250*bbf21555SRichard Lowepica (1/6 inch)
251*bbf21555SRichard Lowe.It p
252*bbf21555SRichard Lowepoint (1/72 inch)
253*bbf21555SRichard Lowe.It f
254*bbf21555SRichard Lowescale
255*bbf21555SRichard Lowe.Sq u
256*bbf21555SRichard Loweby 65536
257*bbf21555SRichard Lowe.It v
258*bbf21555SRichard Lowedefault vertical span
259*bbf21555SRichard Lowe.It m
260*bbf21555SRichard Lowewidth of rendered
261*bbf21555SRichard Lowe.Sq m
262*bbf21555SRichard Lowe.Pq em
263*bbf21555SRichard Lowecharacter
264*bbf21555SRichard Lowe.It n
265*bbf21555SRichard Lowewidth of rendered
266*bbf21555SRichard Lowe.Sq n
267*bbf21555SRichard Lowe.Pq en
268*bbf21555SRichard Lowecharacter
269*bbf21555SRichard Lowe.It u
270*bbf21555SRichard Lowedefault horizontal span for the terminal
271*bbf21555SRichard Lowe.It M
272*bbf21555SRichard Lowemini-em (1/100 em)
273*bbf21555SRichard Lowe.El
274*bbf21555SRichard Lowe.Pp
275*bbf21555SRichard LoweUsing anything other than
276*bbf21555SRichard Lowe.Sq m ,
277*bbf21555SRichard Lowe.Sq n ,
278*bbf21555SRichard Loweor
279*bbf21555SRichard Lowe.Sq v
280*bbf21555SRichard Loweis necessarily non-portable across output media.
281*bbf21555SRichard LoweSee
282*bbf21555SRichard Lowe.Sx COMPATIBILITY .
283*bbf21555SRichard Lowe.Pp
284*bbf21555SRichard LoweIf a scaling unit is not provided, the numerical value is interpreted
285*bbf21555SRichard Loweunder the default rules of
286*bbf21555SRichard Lowe.Sq v
287*bbf21555SRichard Lowefor vertical spaces and
288*bbf21555SRichard Lowe.Sq u
289*bbf21555SRichard Lowefor horizontal ones.
290*bbf21555SRichard Lowe.Pp
291*bbf21555SRichard LoweExamples:
292*bbf21555SRichard Lowe.Bl -tag -width ".Bl -tag -width 2i" -offset indent -compact
293*bbf21555SRichard Lowe.It Li \&.Bl -tag -width 2i
294*bbf21555SRichard Lowetwo-inch tagged list indentation in
295*bbf21555SRichard Lowe.Xr mdoc 7
296*bbf21555SRichard Lowe.It Li \&.HP 2i
297*bbf21555SRichard Lowetwo-inch tagged list indentation in
298*bbf21555SRichard Lowe.Xr man 7
299*bbf21555SRichard Lowe.It Li \&.sp 2v
300*bbf21555SRichard Lowetwo vertical spaces
301*bbf21555SRichard Lowe.El
302*bbf21555SRichard Lowe.Ss Sentence Spacing
303*bbf21555SRichard LoweEach sentence should terminate at the end of an input line.
304*bbf21555SRichard LoweBy doing this, a formatter will be able to apply the proper amount of
305*bbf21555SRichard Lowespacing after the end of sentence (unescaped) period, exclamation mark,
306*bbf21555SRichard Loweor question mark followed by zero or more non-sentence closing
307*bbf21555SRichard Lowedelimiters
308*bbf21555SRichard Lowe.Po
309*bbf21555SRichard Lowe.Sq \&) ,
310*bbf21555SRichard Lowe.Sq \&] ,
311*bbf21555SRichard Lowe.Sq \&' ,
312*bbf21555SRichard Lowe.Sq \&"
313*bbf21555SRichard Lowe.Pc .
314*bbf21555SRichard Lowe.Pp
315*bbf21555SRichard LoweThe proper spacing is also intelligently preserved if a sentence ends at
316*bbf21555SRichard Lowethe boundary of a macro line.
317*bbf21555SRichard Lowe.Pp
318*bbf21555SRichard LoweIf an input line happens to end with a period, exclamation or question
319*bbf21555SRichard Lowemark that isn't the end of a sentence, append a zero-width space
320*bbf21555SRichard Lowe.Pq Sq \e& .
321*bbf21555SRichard Lowe.Pp
322*bbf21555SRichard LoweExamples:
323*bbf21555SRichard Lowe.Bd -literal -offset indent -compact
324*bbf21555SRichard LoweDo not end sentences mid-line like this.  Instead,
325*bbf21555SRichard Loweend a sentence like this.
326*bbf21555SRichard LoweA macro would end like this:
327*bbf21555SRichard Lowe\&.Xr mandoc 1 \&.
328*bbf21555SRichard LoweAn abbreviation at the end of an input line needs escaping, e.g.\e&
329*bbf21555SRichard Lowelike this.
330*bbf21555SRichard Lowe.Ed
331*bbf21555SRichard Lowe.Sh REQUEST SYNTAX
332*bbf21555SRichard LoweA request or macro line consists of:
333*bbf21555SRichard Lowe.Pp
334*bbf21555SRichard Lowe.Bl -enum -compact
335*bbf21555SRichard Lowe.It
336*bbf21555SRichard Lowethe control character
337*bbf21555SRichard Lowe.Sq \&.
338*bbf21555SRichard Loweor
339*bbf21555SRichard Lowe.Sq \(aq
340*bbf21555SRichard Loweat the beginning of the line,
341*bbf21555SRichard Lowe.It
342*bbf21555SRichard Loweoptionally an arbitrary amount of whitespace,
343*bbf21555SRichard Lowe.It
344*bbf21555SRichard Lowethe name of the request or the macro, which is one word of arbitrary
345*bbf21555SRichard Lowelength, terminated by whitespace,
346*bbf21555SRichard Lowe.It
347*bbf21555SRichard Loweand zero or more arguments delimited by whitespace.
348*bbf21555SRichard Lowe.El
349*bbf21555SRichard Lowe.Pp
350*bbf21555SRichard LoweThus, the following request lines are all equivalent:
351*bbf21555SRichard Lowe.Bd -literal -offset indent
352*bbf21555SRichard Lowe\&.ig end
353*bbf21555SRichard Lowe\&.ig    end
354*bbf21555SRichard Lowe\&.   ig end
355*bbf21555SRichard Lowe.Ed
356*bbf21555SRichard Lowe.Sh MACRO SYNTAX
357*bbf21555SRichard LoweMacros are provided by the
358*bbf21555SRichard Lowe.Xr mdoc 7
359*bbf21555SRichard Loweand
360*bbf21555SRichard Lowe.Xr man 7
361*bbf21555SRichard Lowelanguages and can be defined by the
362*bbf21555SRichard Lowe.Ic \&de
363*bbf21555SRichard Lowerequest.
364*bbf21555SRichard LoweWhen called, they follow the same syntax as requests, except that
365*bbf21555SRichard Lowemacro arguments may optionally be quoted by enclosing them
366*bbf21555SRichard Lowein double quote characters
367*bbf21555SRichard Lowe.Pq Sq \(dq .
368*bbf21555SRichard LoweQuoted text, even if it contains whitespace or would cause
369*bbf21555SRichard Lowea macro invocation when unquoted, is always considered literal text.
370*bbf21555SRichard LoweInside quoted text, pairs of double quote characters
371*bbf21555SRichard Lowe.Pq Sq Qq
372*bbf21555SRichard Loweresolve to single double quote characters.
373*bbf21555SRichard Lowe.Pp
374*bbf21555SRichard LoweTo be recognised as the beginning of a quoted argument, the opening
375*bbf21555SRichard Lowequote character must be preceded by a space character.
376*bbf21555SRichard LoweA quoted argument extends to the next double quote character that is not
377*bbf21555SRichard Lowepart of a pair, or to the end of the input line, whichever comes earlier.
378*bbf21555SRichard LoweLeaving out the terminating double quote character at the end of the line
379*bbf21555SRichard Loweis discouraged.
380*bbf21555SRichard LoweFor clarity, if more arguments follow on the same input line,
381*bbf21555SRichard Loweit is recommended to follow the terminating double quote character
382*bbf21555SRichard Loweby a space character; in case the next character after the terminating
383*bbf21555SRichard Lowedouble quote character is anything else, it is regarded as the beginning
384*bbf21555SRichard Loweof the next, unquoted argument.
385*bbf21555SRichard Lowe.Pp
386*bbf21555SRichard LoweBoth in quoted and unquoted arguments, pairs of backslashes
387*bbf21555SRichard Lowe.Pq Sq \e\e
388*bbf21555SRichard Loweresolve to single backslashes.
389*bbf21555SRichard LoweIn unquoted arguments, space characters can alternatively be included
390*bbf21555SRichard Loweby preceding them with a backslash
391*bbf21555SRichard Lowe.Pq Sq \e\~ ,
392*bbf21555SRichard Lowebut quoting is usually better for clarity.
393*bbf21555SRichard Lowe.Pp
394*bbf21555SRichard LoweExamples:
395*bbf21555SRichard Lowe.Bl -tag -width Ds -offset indent -compact
396*bbf21555SRichard Lowe.It Li .Fn strlen \(dqconst char *s\(dq
397*bbf21555SRichard LoweGroup arguments
398*bbf21555SRichard Lowe.Qq const char *s
399*bbf21555SRichard Loweinto one function argument.
400*bbf21555SRichard LoweIf unspecified,
401*bbf21555SRichard Lowe.Qq const ,
402*bbf21555SRichard Lowe.Qq char ,
403*bbf21555SRichard Loweand
404*bbf21555SRichard Lowe.Qq *s
405*bbf21555SRichard Lowewould be considered separate arguments.
406*bbf21555SRichard Lowe.It Li .Op \(dqFl a\(dq
407*bbf21555SRichard LoweConsider
408*bbf21555SRichard Lowe.Qq \&Fl a
409*bbf21555SRichard Loweas literal text instead of a flag macro.
410*bbf21555SRichard Lowe.El
411*bbf21555SRichard Lowe.Sh REQUEST REFERENCE
412*bbf21555SRichard LoweThe
413*bbf21555SRichard Lowe.Xr mandoc 1
414*bbf21555SRichard Lowe.Nm
415*bbf21555SRichard Loweparser recognises the following requests.
416*bbf21555SRichard LoweFor requests marked as "ignored" or "unsupported", any arguments are
417*bbf21555SRichard Loweignored, and the number of arguments is not checked.
418*bbf21555SRichard Lowe.Bl -tag -width Ds
419*bbf21555SRichard Lowe.It Ic \&ab Op Ar message
420*bbf21555SRichard LoweAbort processing.
421*bbf21555SRichard LoweCurrently unsupported.
422*bbf21555SRichard Lowe.It Ic \&ad Op Cm b | c | l | n | r
423*bbf21555SRichard LoweSet line adjustment mode for subsequent text.
424*bbf21555SRichard LoweCurrently ignored.
425*bbf21555SRichard Lowe.It Ic \&af Ar registername format
426*bbf21555SRichard LoweAssign an output format to a number register.
427*bbf21555SRichard LoweCurrently ignored.
428*bbf21555SRichard Lowe.It Ic \&aln Ar newname oldname
429*bbf21555SRichard LoweCreate an alias for a number register.
430*bbf21555SRichard LoweCurrently unsupported.
431*bbf21555SRichard Lowe.It Ic \&als Ar newname oldname
432*bbf21555SRichard LoweCreate an alias for a request, string, macro, or diversion.
433*bbf21555SRichard Lowe.It Ic \&am Ar macroname Op Ar endmacro
434*bbf21555SRichard LoweAppend to a macro definition.
435*bbf21555SRichard LoweThe syntax of this request is the same as that of
436*bbf21555SRichard Lowe.Ic \&de .
437*bbf21555SRichard Lowe.It Ic \&am1 Ar macroname Op Ar endmacro
438*bbf21555SRichard LoweAppend to a macro definition, switching roff compatibility mode off
439*bbf21555SRichard Loweduring macro execution (groff extension).
440*bbf21555SRichard LoweThe syntax of this request is the same as that of
441*bbf21555SRichard Lowe.Ic \&de1 .
442*bbf21555SRichard LoweSince
443*bbf21555SRichard Lowe.Xr mandoc 1
444*bbf21555SRichard Lowedoes not implement
445*bbf21555SRichard Lowe.Nm
446*bbf21555SRichard Lowecompatibility mode at all, it handles this request as an alias for
447*bbf21555SRichard Lowe.Ic \&am .
448*bbf21555SRichard Lowe.It Ic \&ami Ar macrostring Op Ar endstring
449*bbf21555SRichard LoweAppend to a macro definition, specifying the macro name indirectly
450*bbf21555SRichard Lowe(groff extension).
451*bbf21555SRichard LoweThe syntax of this request is the same as that of
452*bbf21555SRichard Lowe.Ic \&dei .
453*bbf21555SRichard Lowe.It Ic \&ami1 Ar macrostring Op Ar endstring
454*bbf21555SRichard LoweAppend to a macro definition, specifying the macro name indirectly
455*bbf21555SRichard Loweand switching roff compatibility mode off during macro execution
456*bbf21555SRichard Lowe(groff extension).
457*bbf21555SRichard LoweThe syntax of this request is the same as that of
458*bbf21555SRichard Lowe.Ic \&dei1 .
459*bbf21555SRichard LoweSince
460*bbf21555SRichard Lowe.Xr mandoc 1
461*bbf21555SRichard Lowedoes not implement
462*bbf21555SRichard Lowe.Nm
463*bbf21555SRichard Lowecompatibility mode at all, it handles this request as an alias for
464*bbf21555SRichard Lowe.Ic \&ami .
465*bbf21555SRichard Lowe.It Ic \&as Ar stringname Op Ar string
466*bbf21555SRichard LoweAppend to a user-defined string.
467*bbf21555SRichard LoweThe syntax of this request is the same as that of
468*bbf21555SRichard Lowe.Ic \&ds .
469*bbf21555SRichard LoweIf a user-defined string with the specified name does not yet exist,
470*bbf21555SRichard Loweit is set to the empty string before appending.
471*bbf21555SRichard Lowe.It Ic \&as1 Ar stringname Op Ar string
472*bbf21555SRichard LoweAppend to a user-defined string, switching roff compatibility mode off
473*bbf21555SRichard Loweduring macro execution (groff extension).
474*bbf21555SRichard LoweThe syntax of this request is the same as that of
475*bbf21555SRichard Lowe.Ic \&ds1 .
476*bbf21555SRichard LoweSince
477*bbf21555SRichard Lowe.Xr mandoc 1
478*bbf21555SRichard Lowedoes not implement
479*bbf21555SRichard Lowe.Nm
480*bbf21555SRichard Lowecompatibility mode at all, it handles this request as an alias for
481*bbf21555SRichard Lowe.Ic \&as .
482*bbf21555SRichard Lowe.It Ic \&asciify Ar divname
483*bbf21555SRichard LoweFully unformat a diversion.
484*bbf21555SRichard LoweCurrently unsupported.
485*bbf21555SRichard Lowe.It Ic \&backtrace
486*bbf21555SRichard LowePrint a backtrace of the input stack.
487*bbf21555SRichard LoweThis is a groff extension and currently ignored.
488*bbf21555SRichard Lowe.It Ic \&bd Ar font Oo Ar curfont Oc Op Ar offset
489*bbf21555SRichard LoweArtificially embolden by repeated printing with small shifts.
490*bbf21555SRichard LoweCurrently ignored.
491*bbf21555SRichard Lowe.It Ic \&bleedat Ar left top width height
492*bbf21555SRichard LoweSet the BleedBox page parameter for PDF generation.
493*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
494*bbf21555SRichard Lowe.It Ic \&blm Ar macroname
495*bbf21555SRichard LoweSet a blank line trap.
496*bbf21555SRichard LoweCurrently unsupported.
497*bbf21555SRichard Lowe.It Ic \&box Ar divname
498*bbf21555SRichard LoweBegin a diversion without including a partially filled line.
499*bbf21555SRichard LoweCurrently unsupported.
500*bbf21555SRichard Lowe.It Ic \&boxa Ar divname
501*bbf21555SRichard LoweAdd to a diversion without including a partially filled line.
502*bbf21555SRichard LoweCurrently unsupported.
503*bbf21555SRichard Lowe.It Ic \&bp Oo Cm + Ns | Ns Cm - Oc Ns Ar pagenumber
504*bbf21555SRichard LoweBegin a new page.
505*bbf21555SRichard LoweCurrently ignored.
506*bbf21555SRichard Lowe.It Ic \&BP Ar source height width position offset flags label
507*bbf21555SRichard LoweDefine a frame and place a picture in it.
508*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
509*bbf21555SRichard Lowe.It Ic \&br
510*bbf21555SRichard LoweBreak the output line.
511*bbf21555SRichard Lowe.It Ic \&break
512*bbf21555SRichard LoweBreak out of the innermost
513*bbf21555SRichard Lowe.Ic \&while
514*bbf21555SRichard Loweloop.
515*bbf21555SRichard Lowe.It Ic \&breakchar Ar char ...
516*bbf21555SRichard LoweOptional line break characters.
517*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
518*bbf21555SRichard Lowe.It Ic \&brnl Ar N
519*bbf21555SRichard LoweBreak output line after the next
520*bbf21555SRichard Lowe.Ar N
521*bbf21555SRichard Loweinput lines.
522*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
523*bbf21555SRichard Lowe.It Ic \&brp
524*bbf21555SRichard LoweBreak and spread output line.
525*bbf21555SRichard LoweCurrently, this is implemented as an alias for
526*bbf21555SRichard Lowe.Ic \&br .
527*bbf21555SRichard Lowe.It Ic \&brpnl Ar N
528*bbf21555SRichard LoweBreak and spread output line after the next
529*bbf21555SRichard Lowe.Ar N
530*bbf21555SRichard Loweinput lines.
531*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
532*bbf21555SRichard Lowe.It Ic \&c2 Op Ar char
533*bbf21555SRichard LoweChange the no-break control character.
534*bbf21555SRichard LoweCurrently unsupported.
535*bbf21555SRichard Lowe.It Ic \&cc Op Ar char
536*bbf21555SRichard LoweChange the control character.
537*bbf21555SRichard LoweIf
538*bbf21555SRichard Lowe.Ar char
539*bbf21555SRichard Loweis not specified, the control character is reset to
540*bbf21555SRichard Lowe.Sq \&. .
541*bbf21555SRichard LoweTrailing characters are ignored.
542*bbf21555SRichard Lowe.It Ic \&ce Op Ar N
543*bbf21555SRichard LoweCenter the next
544*bbf21555SRichard Lowe.Ar N
545*bbf21555SRichard Loweinput lines without filling.
546*bbf21555SRichard Lowe.Ar N
547*bbf21555SRichard Lowedefaults to 1.
548*bbf21555SRichard LoweAn argument of 0 or less ends centering.
549*bbf21555SRichard LoweCurrently, high level macros abort centering.
550*bbf21555SRichard Lowe.It Ic \&cf Ar filename
551*bbf21555SRichard LoweOutput the contents of a file.
552*bbf21555SRichard LoweIgnored because insecure.
553*bbf21555SRichard Lowe.It Ic \&cflags Ar flags char ...
554*bbf21555SRichard LoweSet character flags.
555*bbf21555SRichard LoweThis is a groff extension and currently ignored.
556*bbf21555SRichard Lowe.It Ic \&ch Ar macroname Op Ar dist
557*bbf21555SRichard LoweChange a trap location.
558*bbf21555SRichard LoweCurrently ignored.
559*bbf21555SRichard Lowe.It Ic \&char Ar glyph Op Ar string
560*bbf21555SRichard LoweDefine or redefine the ASCII character or character escape sequence
561*bbf21555SRichard Lowe.Ar glyph
562*bbf21555SRichard Loweto be rendered as
563*bbf21555SRichard Lowe.Ar string ,
564*bbf21555SRichard Lowewhich can be empty.
565*bbf21555SRichard LoweOnly partially supported in
566*bbf21555SRichard Lowe.Xr mandoc 1 ;
567*bbf21555SRichard Lowemay interact incorrectly with
568*bbf21555SRichard Lowe.Ic \&tr .
569*bbf21555SRichard Lowe.It Ic \&chop Ar stringname
570*bbf21555SRichard LoweRemove the last character from a macro, string, or diversion.
571*bbf21555SRichard LoweCurrently unsupported.
572*bbf21555SRichard Lowe.It Ic \&class Ar classname char ...
573*bbf21555SRichard LoweDefine a character class.
574*bbf21555SRichard LoweThis is a groff extension and currently ignored.
575*bbf21555SRichard Lowe.It Ic \&close Ar streamname
576*bbf21555SRichard LoweClose an open file.
577*bbf21555SRichard LoweIgnored because insecure.
578*bbf21555SRichard Lowe.It Ic \&CL Ar color text
579*bbf21555SRichard LowePrint text in color.
580*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
581*bbf21555SRichard Lowe.It Ic \&color Op Cm 1 | 0
582*bbf21555SRichard LoweActivate or deactivate colors.
583*bbf21555SRichard LoweThis is a groff extension and currently ignored.
584*bbf21555SRichard Lowe.It Ic \&composite Ar from to
585*bbf21555SRichard LoweDefine a name component for composite glyph names.
586*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
587*bbf21555SRichard Lowe.It Ic \&continue
588*bbf21555SRichard LoweImmediately start the next iteration of a
589*bbf21555SRichard Lowe.Ic \&while
590*bbf21555SRichard Loweloop.
591*bbf21555SRichard LoweCurrently unsupported.
592*bbf21555SRichard Lowe.It Ic \&cp Op Cm 1 | 0
593*bbf21555SRichard LoweSwitch
594*bbf21555SRichard Lowe.Nm
595*bbf21555SRichard Lowecompatibility mode on or off.
596*bbf21555SRichard LoweCurrently ignored.
597*bbf21555SRichard Lowe.It Ic \&cropat Ar left top width height
598*bbf21555SRichard LoweSet the CropBox page parameter for PDF generation.
599*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
600*bbf21555SRichard Lowe.It Ic \&cs Ar font Op Ar width Op Ar emsize
601*bbf21555SRichard LoweConstant character spacing mode.
602*bbf21555SRichard LoweCurrently ignored.
603*bbf21555SRichard Lowe.It Ic \&cu Op Ar N
604*bbf21555SRichard LoweUnderline next
605*bbf21555SRichard Lowe.Ar N
606*bbf21555SRichard Loweinput lines including whitespace.
607*bbf21555SRichard LoweCurrently ignored.
608*bbf21555SRichard Lowe.It Ic \&da Ar divname
609*bbf21555SRichard LoweAppend to a diversion.
610*bbf21555SRichard LoweCurrently unsupported.
611*bbf21555SRichard Lowe.It Ic \&dch Ar macroname Op Ar dist
612*bbf21555SRichard LoweChange a trap location in the current diversion.
613*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
614*bbf21555SRichard Lowe.It Ic \&de Ar macroname Op Ar endmacro
615*bbf21555SRichard LoweDefine a
616*bbf21555SRichard Lowe.Nm
617*bbf21555SRichard Lowemacro.
618*bbf21555SRichard LoweIts syntax can be either
619*bbf21555SRichard Lowe.Bd -literal -offset indent
620*bbf21555SRichard Lowe.Pf . Ic \&de Ar macroname
621*bbf21555SRichard Lowe.Ar definition
622*bbf21555SRichard Lowe\&..
623*bbf21555SRichard Lowe.Ed
624*bbf21555SRichard Lowe.Pp
625*bbf21555SRichard Loweor
626*bbf21555SRichard Lowe.Bd -literal -offset indent
627*bbf21555SRichard Lowe.Pf . Ic \&de Ar macroname endmacro
628*bbf21555SRichard Lowe.Ar definition
629*bbf21555SRichard Lowe.Pf . Ar endmacro
630*bbf21555SRichard Lowe.Ed
631*bbf21555SRichard Lowe.Pp
632*bbf21555SRichard LoweBoth forms define or redefine the macro
633*bbf21555SRichard Lowe.Ar macroname
634*bbf21555SRichard Loweto represent the
635*bbf21555SRichard Lowe.Ar definition ,
636*bbf21555SRichard Lowewhich may consist of one or more input lines, including the newline
637*bbf21555SRichard Lowecharacters terminating each line, optionally containing calls to
638*bbf21555SRichard Lowe.Nm
639*bbf21555SRichard Lowerequests,
640*bbf21555SRichard Lowe.Nm
641*bbf21555SRichard Lowemacros or high-level macros like
642*bbf21555SRichard Lowe.Xr man 7
643*bbf21555SRichard Loweor
644*bbf21555SRichard Lowe.Xr mdoc 7
645*bbf21555SRichard Lowemacros, whichever applies to the document in question.
646*bbf21555SRichard Lowe.Pp
647*bbf21555SRichard LoweSpecifying a custom
648*bbf21555SRichard Lowe.Ar endmacro
649*bbf21555SRichard Loweworks in the same way as for
650*bbf21555SRichard Lowe.Ic \&ig ;
651*bbf21555SRichard Lowenamely, the call to
652*bbf21555SRichard Lowe.Sq Pf . Ar endmacro
653*bbf21555SRichard Lowefirst ends the
654*bbf21555SRichard Lowe.Ar definition ,
655*bbf21555SRichard Loweand after that, it is also evaluated as a
656*bbf21555SRichard Lowe.Nm
657*bbf21555SRichard Lowerequest or
658*bbf21555SRichard Lowe.Nm
659*bbf21555SRichard Lowemacro, but not as a high-level macro.
660*bbf21555SRichard Lowe.Pp
661*bbf21555SRichard LoweThe macro can be invoked later using the syntax
662*bbf21555SRichard Lowe.Pp
663*bbf21555SRichard Lowe.D1 Pf . Ar macroname Op Ar argument Op Ar argument ...
664*bbf21555SRichard Lowe.Pp
665*bbf21555SRichard LoweRegarding argument parsing, see
666*bbf21555SRichard Lowe.Sx MACRO SYNTAX
667*bbf21555SRichard Loweabove.
668*bbf21555SRichard Lowe.Pp
669*bbf21555SRichard LoweThe line invoking the macro will be replaced
670*bbf21555SRichard Lowein the input stream by the
671*bbf21555SRichard Lowe.Ar definition ,
672*bbf21555SRichard Lowereplacing all occurrences of
673*bbf21555SRichard Lowe.No \e\e$ Ns Ar N ,
674*bbf21555SRichard Lowewhere
675*bbf21555SRichard Lowe.Ar N
676*bbf21555SRichard Loweis a digit, by the
677*bbf21555SRichard Lowe.Ar N Ns th Ar argument .
678*bbf21555SRichard LoweFor example,
679*bbf21555SRichard Lowe.Bd -literal -offset indent
680*bbf21555SRichard Lowe\&.de ZN
681*bbf21555SRichard Lowe\efI\e^\e\e$1\e^\efP\e\e$2
682*bbf21555SRichard Lowe\&..
683*bbf21555SRichard Lowe\&.ZN XtFree .
684*bbf21555SRichard Lowe.Ed
685*bbf21555SRichard Lowe.Pp
686*bbf21555SRichard Loweproduces
687*bbf21555SRichard Lowe.Pp
688*bbf21555SRichard Lowe.D1 \efI\e^XtFree\e^\efP.
689*bbf21555SRichard Lowe.Pp
690*bbf21555SRichard Lowein the input stream, and thus in the output: \fI\^XtFree\^\fP.
691*bbf21555SRichard LoweEach occurrence of \e\e$* is replaced with all the arguments,
692*bbf21555SRichard Lowejoined together with single space characters.
693*bbf21555SRichard LoweThe variant \e\e$@ is similar, except that each argument is
694*bbf21555SRichard Loweindividually quoted.
695*bbf21555SRichard Lowe.Pp
696*bbf21555SRichard LoweSince macros and user-defined strings share a common string table,
697*bbf21555SRichard Lowedefining a macro
698*bbf21555SRichard Lowe.Ar macroname
699*bbf21555SRichard Loweclobbers the user-defined string
700*bbf21555SRichard Lowe.Ar macroname ,
701*bbf21555SRichard Loweand the
702*bbf21555SRichard Lowe.Ar definition
703*bbf21555SRichard Lowecan also be printed using the
704*bbf21555SRichard Lowe.Sq \e*
705*bbf21555SRichard Lowestring interpolation syntax described below
706*bbf21555SRichard Lowe.Ic ds ,
707*bbf21555SRichard Lowebut this is rarely useful because every macro definition contains at least
708*bbf21555SRichard Loweone explicit newline character.
709*bbf21555SRichard Lowe.Pp
710*bbf21555SRichard LoweIn order to prevent endless recursion, both groff and
711*bbf21555SRichard Lowe.Xr mandoc 1
712*bbf21555SRichard Lowelimit the stack depth for expanding macros and strings
713*bbf21555SRichard Loweto a large, but finite number, and
714*bbf21555SRichard Lowe.Xr mandoc 1
715*bbf21555SRichard Lowealso limits the length of the expanded input line.
716*bbf21555SRichard LoweDo not rely on the exact values of these limits.
717*bbf21555SRichard Lowe.It Ic \&de1 Ar macroname Op Ar endmacro
718*bbf21555SRichard LoweDefine a
719*bbf21555SRichard Lowe.Nm
720*bbf21555SRichard Lowemacro that will be executed with
721*bbf21555SRichard Lowe.Nm
722*bbf21555SRichard Lowecompatibility mode switched off during macro execution.
723*bbf21555SRichard LoweThis is a groff extension.
724*bbf21555SRichard LoweSince
725*bbf21555SRichard Lowe.Xr mandoc 1
726*bbf21555SRichard Lowedoes not implement
727*bbf21555SRichard Lowe.Nm
728*bbf21555SRichard Lowecompatibility mode at all, it handles this request as an alias for
729*bbf21555SRichard Lowe.Ic \&de .
730*bbf21555SRichard Lowe.It Ic \&defcolor Ar newname scheme component ...
731*bbf21555SRichard LoweDefine a color name.
732*bbf21555SRichard LoweThis is a groff extension and currently ignored.
733*bbf21555SRichard Lowe.It Ic \&dei Ar macrostring Op Ar endstring
734*bbf21555SRichard LoweDefine a
735*bbf21555SRichard Lowe.Nm
736*bbf21555SRichard Lowemacro, specifying the macro name indirectly (groff extension).
737*bbf21555SRichard LoweThe syntax of this request is the same as that of
738*bbf21555SRichard Lowe.Ic \&de .
739*bbf21555SRichard LoweThe effect is the same as:
740*bbf21555SRichard Lowe.Pp
741*bbf21555SRichard Lowe.D1 Pf . Cm \&de No \e* Ns Bo Ar macrostring Bc Op \e* Ns Bq Ar endstring
742*bbf21555SRichard Lowe.It Ic \&dei1 Ar macrostring Op Ar endstring
743*bbf21555SRichard LoweDefine a
744*bbf21555SRichard Lowe.Nm
745*bbf21555SRichard Lowemacro that will be executed with
746*bbf21555SRichard Lowe.Nm
747*bbf21555SRichard Lowecompatibility mode switched off during macro execution,
748*bbf21555SRichard Lowespecifying the macro name indirectly (groff extension).
749*bbf21555SRichard LoweSince
750*bbf21555SRichard Lowe.Xr mandoc 1
751*bbf21555SRichard Lowedoes not implement
752*bbf21555SRichard Lowe.Nm
753*bbf21555SRichard Lowecompatibility mode at all, it handles this request as an alias for
754*bbf21555SRichard Lowe.Ic \&dei .
755*bbf21555SRichard Lowe.It Ic \&device Ar string ...
756*bbf21555SRichard Lowe.It Ic \&devicem Ar stringname
757*bbf21555SRichard LoweThese two requests only make sense with the groff-specific intermediate
758*bbf21555SRichard Loweoutput format and are unsupported.
759*bbf21555SRichard Lowe.It Ic \&di Ar divname
760*bbf21555SRichard LoweBegin a diversion.
761*bbf21555SRichard LoweCurrently unsupported.
762*bbf21555SRichard Lowe.It Ic \&do Ar command Op Ar argument ...
763*bbf21555SRichard LoweExecute
764*bbf21555SRichard Lowe.Nm
765*bbf21555SRichard Lowerequest or macro line with compatibility mode disabled.
766*bbf21555SRichard LoweCurrently unsupported.
767*bbf21555SRichard Lowe.It Ic \&ds Ar stringname Op Oo \(dq Oc Ns Ar string
768*bbf21555SRichard LoweDefine a user-defined string.
769*bbf21555SRichard LoweThe
770*bbf21555SRichard Lowe.Ar stringname
771*bbf21555SRichard Loweand
772*bbf21555SRichard Lowe.Ar string
773*bbf21555SRichard Lowearguments are space-separated.
774*bbf21555SRichard LoweIf the
775*bbf21555SRichard Lowe.Ar string
776*bbf21555SRichard Lowebegins with a double-quote character, that character will not be part
777*bbf21555SRichard Loweof the string.
778*bbf21555SRichard LoweAll remaining characters on the input line form the
779*bbf21555SRichard Lowe.Ar string ,
780*bbf21555SRichard Loweincluding whitespace and double-quote characters, even trailing ones.
781*bbf21555SRichard Lowe.Pp
782*bbf21555SRichard LoweThe
783*bbf21555SRichard Lowe.Ar string
784*bbf21555SRichard Lowecan be interpolated into subsequent text by using
785*bbf21555SRichard Lowe.No \e* Ns Bq Ar stringname
786*bbf21555SRichard Lowefor a
787*bbf21555SRichard Lowe.Ar stringname
788*bbf21555SRichard Loweof arbitrary length, or \e*(NN or \e*N if the length of
789*bbf21555SRichard Lowe.Ar stringname
790*bbf21555SRichard Loweis two or one characters, respectively.
791*bbf21555SRichard LoweInterpolation can be prevented by escaping the leading backslash;
792*bbf21555SRichard Lowethat is, an asterisk preceded by an even number of backslashes
793*bbf21555SRichard Lowedoes not trigger string interpolation.
794*bbf21555SRichard Lowe.Pp
795*bbf21555SRichard LoweSince user-defined strings and macros share a common string table,
796*bbf21555SRichard Lowedefining a string
797*bbf21555SRichard Lowe.Ar stringname
798*bbf21555SRichard Loweclobbers the macro
799*bbf21555SRichard Lowe.Ar stringname ,
800*bbf21555SRichard Loweand the
801*bbf21555SRichard Lowe.Ar stringname
802*bbf21555SRichard Loweused for defining a string can also be invoked as a macro,
803*bbf21555SRichard Lowein which case the following input line will be appended to the
804*bbf21555SRichard Lowe.Ar string ,
805*bbf21555SRichard Loweforming a new input line passed to the
806*bbf21555SRichard Lowe.Nm
807*bbf21555SRichard Loweparser.
808*bbf21555SRichard LoweFor example,
809*bbf21555SRichard Lowe.Bd -literal -offset indent
810*bbf21555SRichard Lowe\&.ds badidea .S
811*bbf21555SRichard Lowe\&.badidea
812*bbf21555SRichard LoweH SYNOPSIS
813*bbf21555SRichard Lowe.Ed
814*bbf21555SRichard Lowe.Pp
815*bbf21555SRichard Loweinvokes the
816*bbf21555SRichard Lowe.Ic SH
817*bbf21555SRichard Lowemacro when used in a
818*bbf21555SRichard Lowe.Xr man 7
819*bbf21555SRichard Lowedocument.
820*bbf21555SRichard LoweSuch abuse is of course strongly discouraged.
821*bbf21555SRichard Lowe.It Ic \&ds1 Ar stringname Op Oo \(dq Oc Ns Ar string
822*bbf21555SRichard LoweDefine a user-defined string that will be expanded with
823*bbf21555SRichard Lowe.Nm
824*bbf21555SRichard Lowecompatibility mode switched off during string expansion.
825*bbf21555SRichard LoweThis is a groff extension.
826*bbf21555SRichard LoweSince
827*bbf21555SRichard Lowe.Xr mandoc 1
828*bbf21555SRichard Lowedoes not implement
829*bbf21555SRichard Lowe.Nm
830*bbf21555SRichard Lowecompatibility mode at all, it handles this request as an alias for
831*bbf21555SRichard Lowe.Ic \&ds .
832*bbf21555SRichard Lowe.It Ic \&dwh Ar dist macroname
833*bbf21555SRichard LoweSet a location trap in the current diversion.
834*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
835*bbf21555SRichard Lowe.It Ic \&dt Op Ar dist macroname
836*bbf21555SRichard LoweSet a trap within a diversion.
837*bbf21555SRichard LoweCurrently unsupported.
838*bbf21555SRichard Lowe.It Ic \&ec Op Ar char
839*bbf21555SRichard LoweEnable the escape mechanism and change the escape character.
840*bbf21555SRichard LoweThe
841*bbf21555SRichard Lowe.Ar char
842*bbf21555SRichard Loweargument defaults to the backslash
843*bbf21555SRichard Lowe.Pq Sq \e .
844*bbf21555SRichard Lowe.It Ic \&ecr
845*bbf21555SRichard LoweRestore the escape character.
846*bbf21555SRichard LoweCurrently unsupported.
847*bbf21555SRichard Lowe.It Ic \&ecs
848*bbf21555SRichard LoweSave the escape character.
849*bbf21555SRichard LoweCurrently unsupported.
850*bbf21555SRichard Lowe.It Ic \&el Ar body
851*bbf21555SRichard LoweThe
852*bbf21555SRichard Lowe.Dq else
853*bbf21555SRichard Lowehalf of an if/else conditional.
854*bbf21555SRichard LowePops a result off the stack of conditional evaluations pushed by
855*bbf21555SRichard Lowe.Ic \&ie
856*bbf21555SRichard Loweand uses it as its conditional.
857*bbf21555SRichard LoweIf no stack entries are present (e.g., due to no prior
858*bbf21555SRichard Lowe.Ic \&ie
859*bbf21555SRichard Lowecalls)
860*bbf21555SRichard Lowethen false is assumed.
861*bbf21555SRichard LoweThe syntax of this request is similar to
862*bbf21555SRichard Lowe.Ic \&if
863*bbf21555SRichard Loweexcept that the conditional is missing.
864*bbf21555SRichard Lowe.It Ic \&em Ar macroname
865*bbf21555SRichard LoweSet a trap at the end of input.
866*bbf21555SRichard LoweCurrently unsupported.
867*bbf21555SRichard Lowe.It Ic \&EN
868*bbf21555SRichard LoweEnd an equation block.
869*bbf21555SRichard LoweSee
870*bbf21555SRichard Lowe.Ic \&EQ .
871*bbf21555SRichard Lowe.It Ic \&eo
872*bbf21555SRichard LoweDisable the escape mechanism completely.
873*bbf21555SRichard Lowe.It Ic \&EP
874*bbf21555SRichard LoweEnd a picture started by
875*bbf21555SRichard Lowe.Ic \&BP .
876*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
877*bbf21555SRichard Lowe.It Ic \&EQ
878*bbf21555SRichard LoweBegin an equation block.
879*bbf21555SRichard LoweSee
880*bbf21555SRichard Lowe.Xr eqn 7
881*bbf21555SRichard Lowefor a description of the equation language.
882*bbf21555SRichard Lowe.It Ic \&errprint Ar message
883*bbf21555SRichard LowePrint a string like an error message.
884*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
885*bbf21555SRichard Lowe.It Ic \&ev Op Ar envname
886*bbf21555SRichard LoweSwitch to another environment.
887*bbf21555SRichard LoweCurrently unsupported.
888*bbf21555SRichard Lowe.It Ic \&evc Op Ar envname
889*bbf21555SRichard LoweCopy an environment into the current environment.
890*bbf21555SRichard LoweCurrently unsupported.
891*bbf21555SRichard Lowe.It Ic \&ex
892*bbf21555SRichard LoweAbort processing and exit.
893*bbf21555SRichard LoweCurrently unsupported.
894*bbf21555SRichard Lowe.It Ic \&fallback Ar curfont font ...
895*bbf21555SRichard LoweSelect the fallback sequence for a font.
896*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
897*bbf21555SRichard Lowe.It Ic \&fam Op Ar familyname
898*bbf21555SRichard LoweChange the font family.
899*bbf21555SRichard LoweThis is a groff extension and currently ignored.
900*bbf21555SRichard Lowe.It Ic \&fc Op Ar delimchar Op Ar padchar
901*bbf21555SRichard LoweDefine a delimiting and a padding character for fields.
902*bbf21555SRichard LoweCurrently unsupported.
903*bbf21555SRichard Lowe.It Ic \&fchar Ar glyphname Op Ar string
904*bbf21555SRichard LoweDefine a fallback glyph.
905*bbf21555SRichard LoweCurrently unsupported.
906*bbf21555SRichard Lowe.It Ic \&fcolor Ar colorname
907*bbf21555SRichard LoweSet the fill color for \eD objects.
908*bbf21555SRichard LoweThis is a groff extension and currently ignored.
909*bbf21555SRichard Lowe.It Ic \&fdeferlig Ar font string ...
910*bbf21555SRichard LoweDefer ligature building.
911*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
912*bbf21555SRichard Lowe.It Ic \&feature Cm + Ns | Ns Cm - Ns Ar name
913*bbf21555SRichard LoweEnable or disable an OpenType feature.
914*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
915*bbf21555SRichard Lowe.It Ic \&fi
916*bbf21555SRichard LoweBreak the output line and switch to fill mode,
917*bbf21555SRichard Lowewhich is active by default but can be ended with the
918*bbf21555SRichard Lowe.Ic \&nf
919*bbf21555SRichard Lowerequest.
920*bbf21555SRichard LoweIn fill mode, input from subsequent input lines is added to
921*bbf21555SRichard Lowethe same output line until the next word no longer fits,
922*bbf21555SRichard Loweat which point the output line is broken.
923*bbf21555SRichard LoweThis request is implied by the
924*bbf21555SRichard Lowe.Xr mdoc 7
925*bbf21555SRichard Lowe.Ic \&Sh
926*bbf21555SRichard Lowemacro and by the
927*bbf21555SRichard Lowe.Xr man 7
928*bbf21555SRichard Lowe.Ic \&SH ,
929*bbf21555SRichard Lowe.Ic \&SS ,
930*bbf21555SRichard Loweand
931*bbf21555SRichard Lowe.Ic \&EE
932*bbf21555SRichard Lowemacros.
933*bbf21555SRichard Lowe.It Ic \&fkern Ar font minkern
934*bbf21555SRichard LoweControl the use of kerning tables for a font.
935*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
936*bbf21555SRichard Lowe.It Ic \&fl
937*bbf21555SRichard LoweFlush output.
938*bbf21555SRichard LoweCurrently ignored.
939*bbf21555SRichard Lowe.It Ic \&flig Ar font string char ...
940*bbf21555SRichard LoweDefine ligatures.
941*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
942*bbf21555SRichard Lowe.It Ic \&fp Ar position font Op Ar filename
943*bbf21555SRichard LoweAssign font position.
944*bbf21555SRichard LoweCurrently ignored.
945*bbf21555SRichard Lowe.It Ic \&fps Ar mapname ...
946*bbf21555SRichard LoweMount a font with a special character map.
947*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
948*bbf21555SRichard Lowe.It Ic \&fschar Ar font glyphname Op Ar string
949*bbf21555SRichard LoweDefine a font-specific fallback glyph.
950*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
951*bbf21555SRichard Lowe.It Ic \&fspacewidth Ar font Op Ar afmunits
952*bbf21555SRichard LoweSet a font-specific width for the space character.
953*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
954*bbf21555SRichard Lowe.It Ic \&fspecial Ar curfont Op Ar font ...
955*bbf21555SRichard LoweConditionally define a special font.
956*bbf21555SRichard LoweThis is a groff extension and currently ignored.
957*bbf21555SRichard Lowe.It Ic \&ft Op Ar font
958*bbf21555SRichard LoweChange the font; see
959*bbf21555SRichard Lowe.Sx Font Selection .
960*bbf21555SRichard LoweThe
961*bbf21555SRichard Lowe.Ar font
962*bbf21555SRichard Loweargument defaults to
963*bbf21555SRichard Lowe.Cm P .
964*bbf21555SRichard Lowe.It Ic \&ftr Ar newname Op Ar oldname
965*bbf21555SRichard LoweTranslate font name.
966*bbf21555SRichard LoweThis is a groff extension and currently ignored.
967*bbf21555SRichard Lowe.It Ic \&fzoom Ar font Op Ar permille
968*bbf21555SRichard LoweZoom font size.
969*bbf21555SRichard LoweCurrently ignored.
970*bbf21555SRichard Lowe.It Ic \&gcolor Op Ar colorname
971*bbf21555SRichard LoweSet glyph color.
972*bbf21555SRichard LoweThis is a groff extension and currently ignored.
973*bbf21555SRichard Lowe.It Ic \&hc Op Ar char
974*bbf21555SRichard LoweSet the hyphenation character.
975*bbf21555SRichard LoweCurrently ignored.
976*bbf21555SRichard Lowe.It Ic \&hcode Ar char code ...
977*bbf21555SRichard LoweSet hyphenation codes of characters.
978*bbf21555SRichard LoweCurrently ignored.
979*bbf21555SRichard Lowe.It Ic \&hidechar Ar font char ...
980*bbf21555SRichard LoweHide characters in a font.
981*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
982*bbf21555SRichard Lowe.It Ic \&hla Ar language
983*bbf21555SRichard LoweSet hyphenation language.
984*bbf21555SRichard LoweThis is a groff extension and currently ignored.
985*bbf21555SRichard Lowe.It Ic \&hlm Op Ar number
986*bbf21555SRichard LoweSet maximum number of consecutive hyphenated lines.
987*bbf21555SRichard LoweCurrently ignored.
988*bbf21555SRichard Lowe.It Ic \&hpf Ar filename
989*bbf21555SRichard LoweLoad hyphenation pattern file.
990*bbf21555SRichard LoweThis is a groff extension and currently ignored.
991*bbf21555SRichard Lowe.It Ic \&hpfa Ar filename
992*bbf21555SRichard LoweLoad hyphenation pattern file, appending to the current patterns.
993*bbf21555SRichard LoweThis is a groff extension and currently ignored.
994*bbf21555SRichard Lowe.It Ic \&hpfcode Ar code code ...
995*bbf21555SRichard LoweDefine mapping values for character codes in hyphenation patterns.
996*bbf21555SRichard LoweThis is a groff extension and currently ignored.
997*bbf21555SRichard Lowe.It Ic \&hw Ar word ...
998*bbf21555SRichard LoweSpecify hyphenation points in words.
999*bbf21555SRichard LoweCurrently ignored.
1000*bbf21555SRichard Lowe.It Ic \&hy Op Ar mode
1001*bbf21555SRichard LoweSet automatic hyphenation mode.
1002*bbf21555SRichard LoweCurrently ignored.
1003*bbf21555SRichard Lowe.It Ic \&hylang Ar language
1004*bbf21555SRichard LoweSet hyphenation language.
1005*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1006*bbf21555SRichard Lowe.It Ic \&hylen Ar nchar
1007*bbf21555SRichard LoweMinimum word length for hyphenation.
1008*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1009*bbf21555SRichard Lowe.It Ic \&hym Op Ar length
1010*bbf21555SRichard LoweSet hyphenation margin.
1011*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1012*bbf21555SRichard Lowe.It Ic \&hypp Ar penalty ...
1013*bbf21555SRichard LoweDefine hyphenation penalties.
1014*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1015*bbf21555SRichard Lowe.It Ic \&hys Op Ar length
1016*bbf21555SRichard LoweSet hyphenation space.
1017*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1018*bbf21555SRichard Lowe.It Ic \&ie Ar condition body
1019*bbf21555SRichard LoweThe
1020*bbf21555SRichard Lowe.Dq if
1021*bbf21555SRichard Lowehalf of an if/else conditional.
1022*bbf21555SRichard LoweThe result of the conditional is pushed into a stack used by subsequent
1023*bbf21555SRichard Loweinvocations of
1024*bbf21555SRichard Lowe.Ic \&el ,
1025*bbf21555SRichard Lowewhich may be separated by any intervening input (or not exist at all).
1026*bbf21555SRichard LoweIts syntax is equivalent to
1027*bbf21555SRichard Lowe.Ic \&if .
1028*bbf21555SRichard Lowe.It Ic \&if Ar condition body
1029*bbf21555SRichard LoweBegin a conditional.
1030*bbf21555SRichard LoweThis request can also be written as follows:
1031*bbf21555SRichard Lowe.Bd -unfilled -offset indent
1032*bbf21555SRichard Lowe.Pf . Ic \&if Ar condition No \e{ Ns Ar body
1033*bbf21555SRichard Lowe.Ar body ... Ns \e}
1034*bbf21555SRichard Lowe.Ed
1035*bbf21555SRichard Lowe.Bd -unfilled -offset indent
1036*bbf21555SRichard Lowe.Pf . Ic \&if Ar condition No \e{\e
1037*bbf21555SRichard Lowe.Ar body ...
1038*bbf21555SRichard Lowe.Pf . No \e}
1039*bbf21555SRichard Lowe.Ed
1040*bbf21555SRichard Lowe.Pp
1041*bbf21555SRichard LoweThe
1042*bbf21555SRichard Lowe.Ar condition
1043*bbf21555SRichard Loweis a boolean expression.
1044*bbf21555SRichard LoweCurrently,
1045*bbf21555SRichard Lowe.Xr mandoc 1
1046*bbf21555SRichard Lowesupports the following subset of roff conditionals:
1047*bbf21555SRichard Lowe.Bl -bullet
1048*bbf21555SRichard Lowe.It
1049*bbf21555SRichard LoweIf
1050*bbf21555SRichard Lowe.Sq \&!
1051*bbf21555SRichard Loweis prefixed to
1052*bbf21555SRichard Lowe.Ar condition ,
1053*bbf21555SRichard Loweit is logically inverted.
1054*bbf21555SRichard Lowe.It
1055*bbf21555SRichard LoweIf the first character of
1056*bbf21555SRichard Lowe.Ar condition
1057*bbf21555SRichard Loweis
1058*bbf21555SRichard Lowe.Sq n
1059*bbf21555SRichard Lowe.Pq nroff mode
1060*bbf21555SRichard Loweor
1061*bbf21555SRichard Lowe.Sq o
1062*bbf21555SRichard Lowe.Pq odd page ,
1063*bbf21555SRichard Loweit evaluates to true, and the
1064*bbf21555SRichard Lowe.Ar body
1065*bbf21555SRichard Lowestarts with the next character.
1066*bbf21555SRichard Lowe.It
1067*bbf21555SRichard LoweIf the first character of
1068*bbf21555SRichard Lowe.Ar condition
1069*bbf21555SRichard Loweis
1070*bbf21555SRichard Lowe.Sq e
1071*bbf21555SRichard Lowe.Pq even page ,
1072*bbf21555SRichard Lowe.Sq t
1073*bbf21555SRichard Lowe.Pq troff mode ,
1074*bbf21555SRichard Loweor
1075*bbf21555SRichard Lowe.Sq v
1076*bbf21555SRichard Lowe.Pq vroff mode ,
1077*bbf21555SRichard Loweit evaluates to false, and the
1078*bbf21555SRichard Lowe.Ar body
1079*bbf21555SRichard Lowestarts with the next character.
1080*bbf21555SRichard Lowe.It
1081*bbf21555SRichard LoweIf the first character of
1082*bbf21555SRichard Lowe.Ar condition
1083*bbf21555SRichard Loweis
1084*bbf21555SRichard Lowe.Sq c
1085*bbf21555SRichard Lowe.Pq character available ,
1086*bbf21555SRichard Loweit evaluates to true if the following character is an ASCII character
1087*bbf21555SRichard Loweor a valid character escape sequence, or to false otherwise.
1088*bbf21555SRichard LoweThe
1089*bbf21555SRichard Lowe.Ar body
1090*bbf21555SRichard Lowestarts with the character following that next character.
1091*bbf21555SRichard Lowe.It
1092*bbf21555SRichard LoweIf the first character of
1093*bbf21555SRichard Lowe.Ar condition
1094*bbf21555SRichard Loweis
1095*bbf21555SRichard Lowe.Sq d ,
1096*bbf21555SRichard Loweit evaluates to true if the rest of
1097*bbf21555SRichard Lowe.Ar condition
1098*bbf21555SRichard Loweis the name of an existing user defined macro or string;
1099*bbf21555SRichard Loweotherwise, it evaluates to false.
1100*bbf21555SRichard Lowe.It
1101*bbf21555SRichard LoweIf the first character of
1102*bbf21555SRichard Lowe.Ar condition
1103*bbf21555SRichard Loweis
1104*bbf21555SRichard Lowe.Sq r ,
1105*bbf21555SRichard Loweit evaluates to true if the rest of
1106*bbf21555SRichard Lowe.Ar condition
1107*bbf21555SRichard Loweis the name of an existing number register;
1108*bbf21555SRichard Loweotherwise, it evaluates to false.
1109*bbf21555SRichard Lowe.It
1110*bbf21555SRichard LoweIf the
1111*bbf21555SRichard Lowe.Ar condition
1112*bbf21555SRichard Lowestarts with a parenthesis or with an optionally signed
1113*bbf21555SRichard Loweinteger number, it is evaluated according to the rules of
1114*bbf21555SRichard Lowe.Sx Numerical expressions
1115*bbf21555SRichard Loweexplained below.
1116*bbf21555SRichard LoweIt evaluates to true if the result is positive,
1117*bbf21555SRichard Loweor to false if the result is zero or negative.
1118*bbf21555SRichard Lowe.It
1119*bbf21555SRichard LoweOtherwise, the first character of
1120*bbf21555SRichard Lowe.Ar condition
1121*bbf21555SRichard Loweis regarded as a delimiter and it evaluates to true if the string
1122*bbf21555SRichard Loweextending from its first to its second occurrence is equal to the
1123*bbf21555SRichard Lowestring extending from its second to its third occurrence.
1124*bbf21555SRichard Lowe.It
1125*bbf21555SRichard LoweIf
1126*bbf21555SRichard Lowe.Ar condition
1127*bbf21555SRichard Lowecannot be parsed, it evaluates to false.
1128*bbf21555SRichard Lowe.El
1129*bbf21555SRichard Lowe.Pp
1130*bbf21555SRichard LoweIf a conditional is false, its children are not processed, but are
1131*bbf21555SRichard Lowesyntactically interpreted to preserve the integrity of the input
1132*bbf21555SRichard Lowedocument.
1133*bbf21555SRichard LoweThus,
1134*bbf21555SRichard Lowe.Pp
1135*bbf21555SRichard Lowe.D1 \&.if t .ig
1136*bbf21555SRichard Lowe.Pp
1137*bbf21555SRichard Lowewill discard the
1138*bbf21555SRichard Lowe.Sq \&.ig ,
1139*bbf21555SRichard Lowewhich may lead to interesting results, but
1140*bbf21555SRichard Lowe.Pp
1141*bbf21555SRichard Lowe.D1 \&.if t .if t \e{\e
1142*bbf21555SRichard Lowe.Pp
1143*bbf21555SRichard Lowewill continue to syntactically interpret to the block close of the final
1144*bbf21555SRichard Loweconditional.
1145*bbf21555SRichard LoweSub-conditionals, in this case, obviously inherit the truth value of
1146*bbf21555SRichard Lowethe parent.
1147*bbf21555SRichard Lowe.Pp
1148*bbf21555SRichard LoweIf the
1149*bbf21555SRichard Lowe.Ar body
1150*bbf21555SRichard Lowesection is begun by an escaped brace
1151*bbf21555SRichard Lowe.Sq \e{ ,
1152*bbf21555SRichard Lowescope continues until the end of the input line containing the
1153*bbf21555SRichard Lowematching closing-brace escape sequence
1154*bbf21555SRichard Lowe.Sq \e} .
1155*bbf21555SRichard LoweIf the
1156*bbf21555SRichard Lowe.Ar body
1157*bbf21555SRichard Loweis not enclosed in braces, scope continues until the end of the line.
1158*bbf21555SRichard LoweIf the
1159*bbf21555SRichard Lowe.Ar condition
1160*bbf21555SRichard Loweis followed by a
1161*bbf21555SRichard Lowe.Ar body
1162*bbf21555SRichard Loweon the same line, whether after a brace or not, then requests and macros
1163*bbf21555SRichard Lowe.Em must
1164*bbf21555SRichard Lowebegin with a control character.
1165*bbf21555SRichard LoweIt is generally more intuitive, in this case, to write
1166*bbf21555SRichard Lowe.Bd -unfilled -offset indent
1167*bbf21555SRichard Lowe.Pf . Ic \&if Ar condition No \e{\e
1168*bbf21555SRichard Lowe.Pf . Ar request
1169*bbf21555SRichard Lowe.Pf . No \e}
1170*bbf21555SRichard Lowe.Ed
1171*bbf21555SRichard Lowe.Pp
1172*bbf21555SRichard Lowethan having the request or macro follow as
1173*bbf21555SRichard Lowe.Pp
1174*bbf21555SRichard Lowe.D1 Pf . Ic \&if Ar condition Pf \e{. Ar request
1175*bbf21555SRichard Lowe.Pp
1176*bbf21555SRichard LoweThe scope of a conditional is always parsed, but only executed if the
1177*bbf21555SRichard Loweconditional evaluates to true.
1178*bbf21555SRichard Lowe.Pp
1179*bbf21555SRichard LoweNote that the
1180*bbf21555SRichard Lowe.Sq \e}
1181*bbf21555SRichard Loweis converted into a zero-width escape sequence if not passed as a
1182*bbf21555SRichard Lowestandalone macro
1183*bbf21555SRichard Lowe.Sq \&.\e} .
1184*bbf21555SRichard LoweFor example,
1185*bbf21555SRichard Lowe.Pp
1186*bbf21555SRichard Lowe.D1 \&.Fl a \e} b
1187*bbf21555SRichard Lowe.Pp
1188*bbf21555SRichard Lowewill result in
1189*bbf21555SRichard Lowe.Sq \e}
1190*bbf21555SRichard Lowebeing considered an argument of the
1191*bbf21555SRichard Lowe.Sq \&Fl
1192*bbf21555SRichard Lowemacro.
1193*bbf21555SRichard Lowe.It Ic \&ig Op Ar endmacro
1194*bbf21555SRichard LoweIgnore input.
1195*bbf21555SRichard LoweIts syntax can be either
1196*bbf21555SRichard Lowe.Bd -literal -offset indent
1197*bbf21555SRichard Lowe.Pf . Cm \&ig
1198*bbf21555SRichard Lowe.Ar ignored text
1199*bbf21555SRichard Lowe\&..
1200*bbf21555SRichard Lowe.Ed
1201*bbf21555SRichard Lowe.Pp
1202*bbf21555SRichard Loweor
1203*bbf21555SRichard Lowe.Bd -literal -offset indent
1204*bbf21555SRichard Lowe.Pf . Cm \&ig Ar endmacro
1205*bbf21555SRichard Lowe.Ar ignored text
1206*bbf21555SRichard Lowe.Pf . Ar endmacro
1207*bbf21555SRichard Lowe.Ed
1208*bbf21555SRichard Lowe.Pp
1209*bbf21555SRichard LoweIn the first case, input is ignored until a
1210*bbf21555SRichard Lowe.Sq \&..
1211*bbf21555SRichard Lowerequest is encountered on its own line.
1212*bbf21555SRichard LoweIn the second case, input is ignored until the specified
1213*bbf21555SRichard Lowe.Sq Pf . Ar endmacro
1214*bbf21555SRichard Loweis encountered.
1215*bbf21555SRichard LoweDo not use the escape character
1216*bbf21555SRichard Lowe.Sq \e
1217*bbf21555SRichard Loweanywhere in the definition of
1218*bbf21555SRichard Lowe.Ar endmacro ;
1219*bbf21555SRichard Loweit would cause very strange behaviour.
1220*bbf21555SRichard Lowe.Pp
1221*bbf21555SRichard LoweWhen the
1222*bbf21555SRichard Lowe.Ar endmacro
1223*bbf21555SRichard Loweis a roff request or a roff macro, like in
1224*bbf21555SRichard Lowe.Pp
1225*bbf21555SRichard Lowe.D1 \&.ig if
1226*bbf21555SRichard Lowe.Pp
1227*bbf21555SRichard Lowethe subsequent invocation of
1228*bbf21555SRichard Lowe.Ic \&if
1229*bbf21555SRichard Lowewill first terminate the
1230*bbf21555SRichard Lowe.Ar ignored text ,
1231*bbf21555SRichard Lowethen be invoked as usual.
1232*bbf21555SRichard LoweOtherwise, it only terminates the
1233*bbf21555SRichard Lowe.Ar ignored text ,
1234*bbf21555SRichard Loweand arguments following it or the
1235*bbf21555SRichard Lowe.Sq \&..
1236*bbf21555SRichard Lowerequest are discarded.
1237*bbf21555SRichard Lowe.It Ic \&in Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1238*bbf21555SRichard LoweChange indentation.
1239*bbf21555SRichard LoweSee
1240*bbf21555SRichard Lowe.Xr man 7 .
1241*bbf21555SRichard LoweIgnored in
1242*bbf21555SRichard Lowe.Xr mdoc 7 .
1243*bbf21555SRichard Lowe.It Ic \&index Ar register stringname substring
1244*bbf21555SRichard LoweFind a substring in a string.
1245*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1246*bbf21555SRichard Lowe.It Ic \&it Ar expression macro
1247*bbf21555SRichard LoweSet an input line trap.
1248*bbf21555SRichard LoweThe named
1249*bbf21555SRichard Lowe.Ar macro
1250*bbf21555SRichard Lowewill be invoked after processing the number of input text lines
1251*bbf21555SRichard Lowespecified by the numerical
1252*bbf21555SRichard Lowe.Ar expression .
1253*bbf21555SRichard LoweWhile evaluating the
1254*bbf21555SRichard Lowe.Ar expression ,
1255*bbf21555SRichard Lowethe unit suffixes described below
1256*bbf21555SRichard Lowe.Sx Scaling Widths
1257*bbf21555SRichard Loweare ignored.
1258*bbf21555SRichard Lowe.It Ic \&itc Ar expression macro
1259*bbf21555SRichard LoweSet an input line trap, not counting lines ending with \ec.
1260*bbf21555SRichard LoweCurrently unsupported.
1261*bbf21555SRichard Lowe.It Ic \&IX Ar class keystring
1262*bbf21555SRichard LoweTo support the generation of a table of contents,
1263*bbf21555SRichard Lowe.Xr pod2man 1
1264*bbf21555SRichard Loweemits this user-defined macro, usually without defining it.
1265*bbf21555SRichard LoweTo avoid reporting large numbers of spurious errors,
1266*bbf21555SRichard Lowe.Xr mandoc 1
1267*bbf21555SRichard Loweignores it.
1268*bbf21555SRichard Lowe.It Ic \&kern Op Cm 1 | 0
1269*bbf21555SRichard LoweSwitch kerning on or off.
1270*bbf21555SRichard LoweCurrently ignored.
1271*bbf21555SRichard Lowe.It Ic \&kernafter Ar font char ... afmunits ...
1272*bbf21555SRichard LoweIncrease kerning after some characters.
1273*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1274*bbf21555SRichard Lowe.It Ic \&kernbefore Ar font char ... afmunits ...
1275*bbf21555SRichard LoweIncrease kerning before some characters.
1276*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1277*bbf21555SRichard Lowe.It Ic \&kernpair Ar font char ... font char ... afmunits
1278*bbf21555SRichard LoweAdd a kerning pair to the kerning table.
1279*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1280*bbf21555SRichard Lowe.It Ic \&lc Op Ar glyph
1281*bbf21555SRichard LoweDefine a leader repetition character.
1282*bbf21555SRichard LoweCurrently unsupported.
1283*bbf21555SRichard Lowe.It Ic \&lc_ctype Ar localename
1284*bbf21555SRichard LoweSet the
1285*bbf21555SRichard Lowe.Dv LC_CTYPE
1286*bbf21555SRichard Lowelocale.
1287*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1288*bbf21555SRichard Lowe.It Ic \&lds Ar macroname string
1289*bbf21555SRichard LoweDefine a local string.
1290*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1291*bbf21555SRichard Lowe.It Ic \&length Ar register string
1292*bbf21555SRichard LoweCount the number of input characters in a string.
1293*bbf21555SRichard LoweCurrently unsupported.
1294*bbf21555SRichard Lowe.It Ic \&letadj Ar lspmin lshmin letss lspmax lshmax
1295*bbf21555SRichard LoweDynamic letter spacing and reshaping.
1296*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1297*bbf21555SRichard Lowe.It Ic \&lf Ar lineno Op Ar filename
1298*bbf21555SRichard LoweChange the line number for error messages.
1299*bbf21555SRichard LoweIgnored because insecure.
1300*bbf21555SRichard Lowe.It Ic \&lg Op Cm 1 | 0
1301*bbf21555SRichard LoweSwitch the ligature mechanism on or off.
1302*bbf21555SRichard LoweCurrently ignored.
1303*bbf21555SRichard Lowe.It Ic \&lhang Ar font char ... afmunits
1304*bbf21555SRichard LoweHang characters at left margin.
1305*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1306*bbf21555SRichard Lowe.It Ic \&linetabs Op Cm 1 | 0
1307*bbf21555SRichard LoweEnable or disable line-tabs mode.
1308*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
1309*bbf21555SRichard Lowe.It Ic \&ll Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1310*bbf21555SRichard LoweChange the output line length.
1311*bbf21555SRichard LoweIf the
1312*bbf21555SRichard Lowe.Ar width
1313*bbf21555SRichard Loweargument is omitted, the line length is reset to its previous value.
1314*bbf21555SRichard LoweThe default setting for terminal output is 78n.
1315*bbf21555SRichard LoweIf a sign is given, the line length is added to or subtracted from;
1316*bbf21555SRichard Loweotherwise, it is set to the provided value.
1317*bbf21555SRichard LoweUsing this request in new manuals is discouraged for several reasons,
1318*bbf21555SRichard Loweamong others because it overrides the
1319*bbf21555SRichard Lowe.Xr mandoc 1
1320*bbf21555SRichard Lowe.Fl O Cm width
1321*bbf21555SRichard Lowecommand line option.
1322*bbf21555SRichard Lowe.It Ic \&lnr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
1323*bbf21555SRichard LoweSet local number register.
1324*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1325*bbf21555SRichard Lowe.It Ic \&lnrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
1326*bbf21555SRichard LoweSet local floating-point register.
1327*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1328*bbf21555SRichard Lowe.It Ic \&lpfx Ar string
1329*bbf21555SRichard LoweSet a line prefix.
1330*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1331*bbf21555SRichard Lowe.It Ic \&ls Op Ar factor
1332*bbf21555SRichard LoweSet line spacing.
1333*bbf21555SRichard LoweIt takes one integer argument specifying the vertical distance of
1334*bbf21555SRichard Lowesubsequent output text lines measured in v units.
1335*bbf21555SRichard LoweCurrently ignored.
1336*bbf21555SRichard Lowe.It Ic \&lsm Ar macroname
1337*bbf21555SRichard LoweSet a leading spaces trap.
1338*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
1339*bbf21555SRichard Lowe.It Ic \&lt Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1340*bbf21555SRichard LoweSet title line length.
1341*bbf21555SRichard LoweCurrently ignored.
1342*bbf21555SRichard Lowe.It Ic \&mc Ar glyph Op Ar dist
1343*bbf21555SRichard LowePrint margin character in the right margin.
1344*bbf21555SRichard LoweThe
1345*bbf21555SRichard Lowe.Ar dist
1346*bbf21555SRichard Loweis currently ignored; instead, 1n is used.
1347*bbf21555SRichard Lowe.It Ic \&mediasize Ar media
1348*bbf21555SRichard LoweSet the device media size.
1349*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1350*bbf21555SRichard Lowe.It Ic \&minss Ar width
1351*bbf21555SRichard LoweSet minimum word space.
1352*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1353*bbf21555SRichard Lowe.It Ic \&mk Op Ar register
1354*bbf21555SRichard LoweMark vertical position.
1355*bbf21555SRichard LoweCurrently ignored.
1356*bbf21555SRichard Lowe.It Ic \&mso Ar filename
1357*bbf21555SRichard LoweLoad a macro file using the search path.
1358*bbf21555SRichard LoweIgnored because insecure.
1359*bbf21555SRichard Lowe.It Ic \&na
1360*bbf21555SRichard LoweDisable adjusting without changing the adjustment mode.
1361*bbf21555SRichard LoweCurrently ignored.
1362*bbf21555SRichard Lowe.It Ic \&ne Op Ar height
1363*bbf21555SRichard LoweDeclare the need for the specified minimum vertical space
1364*bbf21555SRichard Lowebefore the next trap or the bottom of the page.
1365*bbf21555SRichard LoweCurrently ignored.
1366*bbf21555SRichard Lowe.It Ic \&nf
1367*bbf21555SRichard LoweBreak the output line and switch to no-fill mode.
1368*bbf21555SRichard LoweSubsequent input lines are kept together on the same output line
1369*bbf21555SRichard Loweeven when exceeding the right margin,
1370*bbf21555SRichard Loweand line breaks in subsequent input cause output line breaks.
1371*bbf21555SRichard LoweThis request is implied by the
1372*bbf21555SRichard Lowe.Xr mdoc 7
1373*bbf21555SRichard Lowe.Ic \&Bd Fl unfilled
1374*bbf21555SRichard Loweand
1375*bbf21555SRichard Lowe.Ic \&Bd Fl literal
1376*bbf21555SRichard Lowemacros and by the
1377*bbf21555SRichard Lowe.Xr man 7
1378*bbf21555SRichard Lowe.Ic \&EX
1379*bbf21555SRichard Lowemacro.
1380*bbf21555SRichard LoweThe
1381*bbf21555SRichard Lowe.Ic \&fi
1382*bbf21555SRichard Lowerequest switches back to the default fill mode.
1383*bbf21555SRichard Lowe.It Ic \&nh
1384*bbf21555SRichard LoweTurn off automatic hyphenation mode.
1385*bbf21555SRichard LoweCurrently ignored.
1386*bbf21555SRichard Lowe.It Ic \&nhychar Ar char ...
1387*bbf21555SRichard LoweDefine hyphenation-inhibiting characters.
1388*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1389*bbf21555SRichard Lowe.It Ic \&nm Op Ar start Op Ar inc Op Ar space Op Ar indent
1390*bbf21555SRichard LowePrint line numbers.
1391*bbf21555SRichard LoweCurrently unsupported.
1392*bbf21555SRichard Lowe.It Ic \&nn Op Ar number
1393*bbf21555SRichard LoweTemporarily turn off line numbering.
1394*bbf21555SRichard LoweCurrently unsupported.
1395*bbf21555SRichard Lowe.It Ic \&nop Ar body
1396*bbf21555SRichard LoweExecute the rest of the input line as a request, macro, or text line,
1397*bbf21555SRichard Loweskipping the
1398*bbf21555SRichard Lowe.Ic \&nop
1399*bbf21555SRichard Lowerequest and any space characters immediately following it.
1400*bbf21555SRichard LoweThis is mostly used to indent text lines inside macro definitions.
1401*bbf21555SRichard Lowe.It Ic \&nr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression Op Ar stepsize
1402*bbf21555SRichard LoweDefine or change a register.
1403*bbf21555SRichard LoweA register is an arbitrary string value that defines some sort of state,
1404*bbf21555SRichard Lowewhich influences parsing and/or formatting.
1405*bbf21555SRichard LoweFor the syntax of
1406*bbf21555SRichard Lowe.Ar expression ,
1407*bbf21555SRichard Lowesee
1408*bbf21555SRichard Lowe.Sx Numerical expressions
1409*bbf21555SRichard Lowebelow.
1410*bbf21555SRichard LoweIf it is prefixed by a sign, the register will be
1411*bbf21555SRichard Loweincremented or decremented instead of assigned to.
1412*bbf21555SRichard Lowe.Pp
1413*bbf21555SRichard LoweThe
1414*bbf21555SRichard Lowe.Ar stepsize
1415*bbf21555SRichard Loweis used by the
1416*bbf21555SRichard Lowe.Ic \en+
1417*bbf21555SRichard Loweauto-increment feature.
1418*bbf21555SRichard LoweIt remains unchanged when omitted while changing an existing register,
1419*bbf21555SRichard Loweand it defaults to 0 when defining a new register.
1420*bbf21555SRichard Lowe.Pp
1421*bbf21555SRichard LoweThe following
1422*bbf21555SRichard Lowe.Ar register
1423*bbf21555SRichard Loweis handled specially:
1424*bbf21555SRichard Lowe.Bl -tag -width Ds
1425*bbf21555SRichard Lowe.It Cm nS
1426*bbf21555SRichard LoweIf set to a positive integer value, certain
1427*bbf21555SRichard Lowe.Xr mdoc 7
1428*bbf21555SRichard Lowemacros will behave in the same way as in the
1429*bbf21555SRichard Lowe.Em SYNOPSIS
1430*bbf21555SRichard Lowesection.
1431*bbf21555SRichard LoweIf set to 0, these macros will behave in the same way as outside the
1432*bbf21555SRichard Lowe.Em SYNOPSIS
1433*bbf21555SRichard Lowesection, even when called within the
1434*bbf21555SRichard Lowe.Em SYNOPSIS
1435*bbf21555SRichard Lowesection itself.
1436*bbf21555SRichard LoweNote that starting a new
1437*bbf21555SRichard Lowe.Xr mdoc 7
1438*bbf21555SRichard Lowesection with the
1439*bbf21555SRichard Lowe.Ic \&Sh
1440*bbf21555SRichard Lowemacro will reset this register.
1441*bbf21555SRichard Lowe.El
1442*bbf21555SRichard Lowe.It Xo
1443*bbf21555SRichard Lowe.Ic \&nrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression
1444*bbf21555SRichard Lowe.Op Ar increment
1445*bbf21555SRichard Lowe.Xc
1446*bbf21555SRichard LoweDefine or change a floating-point register.
1447*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1448*bbf21555SRichard Lowe.It Ic \&nroff
1449*bbf21555SRichard LoweForce nroff mode.
1450*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1451*bbf21555SRichard Lowe.It Ic \&ns
1452*bbf21555SRichard LoweTurn on no-space mode.
1453*bbf21555SRichard LoweCurrently ignored.
1454*bbf21555SRichard Lowe.It Ic \&nx Op Ar filename
1455*bbf21555SRichard LoweAbort processing of the current input file and process another one.
1456*bbf21555SRichard LoweIgnored because insecure.
1457*bbf21555SRichard Lowe.It Ic \&open Ar stream file
1458*bbf21555SRichard LoweOpen a file for writing.
1459*bbf21555SRichard LoweIgnored because insecure.
1460*bbf21555SRichard Lowe.It Ic \&opena Ar stream file
1461*bbf21555SRichard LoweOpen a file for appending.
1462*bbf21555SRichard LoweIgnored because insecure.
1463*bbf21555SRichard Lowe.It Ic \&os
1464*bbf21555SRichard LoweOutput saved vertical space.
1465*bbf21555SRichard LoweCurrently ignored.
1466*bbf21555SRichard Lowe.It Ic \&output Ar string
1467*bbf21555SRichard LoweOutput directly to intermediate output.
1468*bbf21555SRichard LoweNot supported.
1469*bbf21555SRichard Lowe.It Ic \&padj Op Cm 1 | 0
1470*bbf21555SRichard LoweGlobally control paragraph-at-once adjustment.
1471*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1472*bbf21555SRichard Lowe.It Ic \&papersize Ar media
1473*bbf21555SRichard LoweSet the paper size.
1474*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1475*bbf21555SRichard Lowe.It Ic \&pc Op Ar char
1476*bbf21555SRichard LoweChange the page number character.
1477*bbf21555SRichard LoweCurrently ignored.
1478*bbf21555SRichard Lowe.It Ic \&pev
1479*bbf21555SRichard LowePrint environments.
1480*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1481*bbf21555SRichard Lowe.It Ic \&pi Ar command
1482*bbf21555SRichard LowePipe output to a shell command.
1483*bbf21555SRichard LoweIgnored because insecure.
1484*bbf21555SRichard Lowe.It Ic \&PI
1485*bbf21555SRichard LoweLow-level request used by
1486*bbf21555SRichard Lowe.Ic \&BP .
1487*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1488*bbf21555SRichard Lowe.It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1489*bbf21555SRichard LoweChange page length.
1490*bbf21555SRichard LoweCurrently ignored.
1491*bbf21555SRichard Lowe.It Ic \&pm
1492*bbf21555SRichard LowePrint names and sizes of macros, strings, and diversions
1493*bbf21555SRichard Loweto standard error output.
1494*bbf21555SRichard LoweCurrently ignored.
1495*bbf21555SRichard Lowe.It Ic \&pn Oo Cm + Ns | Ns Cm - Oc Ns Ar number
1496*bbf21555SRichard LoweChange the page number of the next page.
1497*bbf21555SRichard LoweCurrently ignored.
1498*bbf21555SRichard Lowe.It Ic \&pnr
1499*bbf21555SRichard LowePrint all number registers on standard error output.
1500*bbf21555SRichard LoweCurrently ignored.
1501*bbf21555SRichard Lowe.It Ic \&po Op Oo Cm + Ns | Ns Cm - Oc Ns Ar offset
1502*bbf21555SRichard LoweSet a horizontal page offset.
1503*bbf21555SRichard LoweIf no argument is specified, the page offset is reverted to its
1504*bbf21555SRichard Loweprevious value.
1505*bbf21555SRichard LoweIf a sign is specified, the new page offset is calculated relative
1506*bbf21555SRichard Loweto the current one; otherwise, it is absolute.
1507*bbf21555SRichard LoweThe argument follows the syntax of
1508*bbf21555SRichard Lowe.Sx Scaling Widths
1509*bbf21555SRichard Loweand the default scaling unit is
1510*bbf21555SRichard Lowe.Cm m .
1511*bbf21555SRichard Lowe.It Ic \&ps Op Oo Cm + Ns | Ns Cm - Oc Ns size
1512*bbf21555SRichard LoweChange point size.
1513*bbf21555SRichard LoweCurrently ignored.
1514*bbf21555SRichard Lowe.It Ic \&psbb Ar filename
1515*bbf21555SRichard LoweRetrieve the bounding box of a PostScript file.
1516*bbf21555SRichard LoweCurrently unsupported.
1517*bbf21555SRichard Lowe.It Ic \&pshape Ar indent length ...
1518*bbf21555SRichard LoweSet a special shape for the current paragraph.
1519*bbf21555SRichard LoweThis is a Heirloom extension and currently unsupported.
1520*bbf21555SRichard Lowe.It Ic \&pso Ar command
1521*bbf21555SRichard LoweInclude output of a shell command.
1522*bbf21555SRichard LoweIgnored because insecure.
1523*bbf21555SRichard Lowe.It Ic \&ptr
1524*bbf21555SRichard LowePrint the names and positions of all traps on standard error output.
1525*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1526*bbf21555SRichard Lowe.It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1527*bbf21555SRichard LoweChange post-vertical spacing.
1528*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1529*bbf21555SRichard Lowe.It Ic \&rchar Ar glyph ...
1530*bbf21555SRichard LoweRemove glyph definitions.
1531*bbf21555SRichard LoweCurrently unsupported.
1532*bbf21555SRichard Lowe.It Ic \&rd Op Ar prompt Op Ar argument ...
1533*bbf21555SRichard LoweRead from standard input.
1534*bbf21555SRichard LoweCurrently ignored.
1535*bbf21555SRichard Lowe.It Ic \&recursionlimit Ar maxrec maxtail
1536*bbf21555SRichard LoweSet the maximum stack depth for recursive macros.
1537*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1538*bbf21555SRichard Lowe.It Ic \&return Op Ar twice
1539*bbf21555SRichard LoweExit the presently executed macro and return to the caller.
1540*bbf21555SRichard LoweThe argument is currently ignored.
1541*bbf21555SRichard Lowe.It Ic \&rfschar Ar font glyph ...
1542*bbf21555SRichard LoweRemove font-specific fallback glyph definitions.
1543*bbf21555SRichard LoweCurrently unsupported.
1544*bbf21555SRichard Lowe.It Ic \&rhang Ar font char ... afmunits
1545*bbf21555SRichard LoweHang characters at right margin.
1546*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1547*bbf21555SRichard Lowe.It Ic \&rj Op Ar N
1548*bbf21555SRichard LoweJustify the next
1549*bbf21555SRichard Lowe.Ar N
1550*bbf21555SRichard Loweinput lines to the right margin without filling.
1551*bbf21555SRichard Lowe.Ar N
1552*bbf21555SRichard Lowedefaults to 1.
1553*bbf21555SRichard LoweAn argument of 0 or less ends right adjustment.
1554*bbf21555SRichard Lowe.It Ic \&rm Ar macroname
1555*bbf21555SRichard LoweRemove a request, macro or string.
1556*bbf21555SRichard Lowe.It Ic \&rn Ar oldname newname
1557*bbf21555SRichard LoweRename a request, macro, diversion, or string.
1558*bbf21555SRichard LoweIn
1559*bbf21555SRichard Lowe.Xr mandoc 1 ,
1560*bbf21555SRichard Loweuser-defined macros,
1561*bbf21555SRichard Lowe.Xr mdoc 7
1562*bbf21555SRichard Loweand
1563*bbf21555SRichard Lowe.Xr man 7
1564*bbf21555SRichard Lowemacros, and user-defined strings can be renamed, but renaming of
1565*bbf21555SRichard Lowepredefined strings and of
1566*bbf21555SRichard Lowe.Nm
1567*bbf21555SRichard Lowerequests is not supported, and diversions are not implemented at all.
1568*bbf21555SRichard Lowe.It Ic \&rnn Ar oldname newname
1569*bbf21555SRichard LoweRename a number register.
1570*bbf21555SRichard LoweCurrently unsupported.
1571*bbf21555SRichard Lowe.It Ic \&rr Ar register
1572*bbf21555SRichard LoweRemove a register.
1573*bbf21555SRichard Lowe.It Ic \&rs
1574*bbf21555SRichard LoweEnd no-space mode.
1575*bbf21555SRichard LoweCurrently ignored.
1576*bbf21555SRichard Lowe.It Ic \&rt Op Ar dist
1577*bbf21555SRichard LoweReturn to marked vertical position.
1578*bbf21555SRichard LoweCurrently ignored.
1579*bbf21555SRichard Lowe.It Ic \&schar Ar glyph Op Ar string
1580*bbf21555SRichard LoweDefine global fallback glyph.
1581*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
1582*bbf21555SRichard Lowe.It Ic \&sentchar Ar char ...
1583*bbf21555SRichard LoweDefine sentence-ending characters.
1584*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1585*bbf21555SRichard Lowe.It Ic \&shc Op Ar glyph
1586*bbf21555SRichard LoweChange the soft hyphen character.
1587*bbf21555SRichard LoweCurrently ignored.
1588*bbf21555SRichard Lowe.It Ic \&shift Op Ar number
1589*bbf21555SRichard LoweShift macro arguments
1590*bbf21555SRichard Lowe.Ar number
1591*bbf21555SRichard Lowetimes, by default once: \e\e$i becomes what \e\e$i+number was.
1592*bbf21555SRichard LoweAlso decrement \en(.$ by
1593*bbf21555SRichard Lowe.Ar number .
1594*bbf21555SRichard Lowe.It Ic \&sizes Ar size ...
1595*bbf21555SRichard LoweDefine permissible point sizes.
1596*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1597*bbf21555SRichard Lowe.It Ic \&so Ar filename
1598*bbf21555SRichard LoweInclude a source file.
1599*bbf21555SRichard LoweThe file is read and its contents processed as input in place of the
1600*bbf21555SRichard Lowe.Ic \&so
1601*bbf21555SRichard Lowerequest line.
1602*bbf21555SRichard LoweTo avoid inadvertent inclusion of unrelated files,
1603*bbf21555SRichard Lowe.Xr mandoc 1
1604*bbf21555SRichard Loweonly accepts relative paths not containing the strings
1605*bbf21555SRichard Lowe.Qq ../
1606*bbf21555SRichard Loweand
1607*bbf21555SRichard Lowe.Qq /.. .
1608*bbf21555SRichard Lowe.Pp
1609*bbf21555SRichard LoweThis request requires
1610*bbf21555SRichard Lowe.Xr man 1
1611*bbf21555SRichard Loweto change to the right directory before calling
1612*bbf21555SRichard Lowe.Xr mandoc 1 ,
1613*bbf21555SRichard Loweper convention to the root of the manual tree.
1614*bbf21555SRichard LoweTypical usage looks like:
1615*bbf21555SRichard Lowe.Pp
1616*bbf21555SRichard Lowe.Dl \&.so man3/Xcursor.3
1617*bbf21555SRichard Lowe.Pp
1618*bbf21555SRichard LoweAs the whole concept is rather fragile, the use of
1619*bbf21555SRichard Lowe.Ic \&so
1620*bbf21555SRichard Loweis discouraged.
1621*bbf21555SRichard LoweUse
1622*bbf21555SRichard Lowe.Xr ln 1
1623*bbf21555SRichard Loweinstead.
1624*bbf21555SRichard Lowe.It Ic \&sp Op Ar height
1625*bbf21555SRichard LoweBreak the output line and emit vertical space.
1626*bbf21555SRichard LoweThe argument follows the syntax of
1627*bbf21555SRichard Lowe.Sx Scaling Widths
1628*bbf21555SRichard Loweand defaults to one blank line
1629*bbf21555SRichard Lowe.Pq Li 1v .
1630*bbf21555SRichard Lowe.It Ic \&spacewidth Op Cm 1 | 0
1631*bbf21555SRichard LoweSet the space width from the font metrics file.
1632*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1633*bbf21555SRichard Lowe.It Ic \&special Op Ar font ...
1634*bbf21555SRichard LoweDefine a special font.
1635*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1636*bbf21555SRichard Lowe.It Ic \&spreadwarn Op Ar width
1637*bbf21555SRichard LoweWarn about wide spacing between words.
1638*bbf21555SRichard LoweCurrently ignored.
1639*bbf21555SRichard Lowe.It Ic \&ss Ar wordspace Op Ar sentencespace
1640*bbf21555SRichard LoweSet space character size.
1641*bbf21555SRichard LoweCurrently ignored.
1642*bbf21555SRichard Lowe.It Ic \&sty Ar position style
1643*bbf21555SRichard LoweAssociate style with a font position.
1644*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1645*bbf21555SRichard Lowe.It Ic \&substring Ar stringname startpos Op Ar endpos
1646*bbf21555SRichard LoweReplace a user-defined string with a substring.
1647*bbf21555SRichard LoweCurrently unsupported.
1648*bbf21555SRichard Lowe.It Ic \&sv Op Ar height
1649*bbf21555SRichard LoweSave vertical space.
1650*bbf21555SRichard LoweCurrently ignored.
1651*bbf21555SRichard Lowe.It Ic \&sy Ar command
1652*bbf21555SRichard LoweExecute shell command.
1653*bbf21555SRichard LoweIgnored because insecure.
1654*bbf21555SRichard Lowe.It Ic \&T&
1655*bbf21555SRichard LoweRe-start a table layout, retaining the options of the prior table
1656*bbf21555SRichard Loweinvocation.
1657*bbf21555SRichard LoweSee
1658*bbf21555SRichard Lowe.Ic \&TS .
1659*bbf21555SRichard Lowe.It Ic \&ta Op Ar width ... Op Cm T Ar width ...
1660*bbf21555SRichard LoweSet tab stops.
1661*bbf21555SRichard LoweEach
1662*bbf21555SRichard Lowe.Ar width
1663*bbf21555SRichard Loweargument follows the syntax of
1664*bbf21555SRichard Lowe.Sx Scaling Widths .
1665*bbf21555SRichard LoweIf prefixed by a plus sign, it is relative to the previous tab stop.
1666*bbf21555SRichard LoweThe arguments after the
1667*bbf21555SRichard Lowe.Cm T
1668*bbf21555SRichard Lowemarker are used repeatedly as often as needed; for each reuse,
1669*bbf21555SRichard Lowethey are taken relative to the last previously established tab stop.
1670*bbf21555SRichard LoweWhen
1671*bbf21555SRichard Lowe.Ic \&ta
1672*bbf21555SRichard Loweis called without arguments, all tab stops are cleared.
1673*bbf21555SRichard Lowe.It Ic \&tc Op Ar glyph
1674*bbf21555SRichard LoweChange tab repetition character.
1675*bbf21555SRichard LoweCurrently unsupported.
1676*bbf21555SRichard Lowe.It Ic \&TE
1677*bbf21555SRichard LoweEnd a table context.
1678*bbf21555SRichard LoweSee
1679*bbf21555SRichard Lowe.Ic \&TS .
1680*bbf21555SRichard Lowe.It Ic \&ti Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1681*bbf21555SRichard LoweBreak the output line and indent the next output line by
1682*bbf21555SRichard Lowe.Ar width .
1683*bbf21555SRichard LoweIf a sign is specified, the temporary indentation is calculated
1684*bbf21555SRichard Lowerelative to the current indentation; otherwise, it is absolute.
1685*bbf21555SRichard LoweThe argument follows the syntax of
1686*bbf21555SRichard Lowe.Sx Scaling Widths
1687*bbf21555SRichard Loweand the default scaling unit is
1688*bbf21555SRichard Lowe.Cm m .
1689*bbf21555SRichard Lowe.It Ic \&tkf Ar font minps width1 maxps width2
1690*bbf21555SRichard LoweEnable track kerning for a font.
1691*bbf21555SRichard LoweCurrently ignored.
1692*bbf21555SRichard Lowe.It Ic \&tl No \& Ap Ar left Ap Ar center Ap Ar right Ap
1693*bbf21555SRichard LowePrint a title line.
1694*bbf21555SRichard LoweCurrently unsupported.
1695*bbf21555SRichard Lowe.It Ic \&tm Ar string
1696*bbf21555SRichard LowePrint to standard error output.
1697*bbf21555SRichard LoweCurrently ignored.
1698*bbf21555SRichard Lowe.It Ic \&tm1 Ar string
1699*bbf21555SRichard LowePrint to standard error output, allowing leading blanks.
1700*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1701*bbf21555SRichard Lowe.It Ic \&tmc Ar string
1702*bbf21555SRichard LowePrint to standard error output without a trailing newline.
1703*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1704*bbf21555SRichard Lowe.It Ic \&tr Ar glyph glyph ...
1705*bbf21555SRichard LoweOutput character translation.
1706*bbf21555SRichard LoweThe first glyph in each pair is replaced by the second one.
1707*bbf21555SRichard LoweCharacter escapes can be used; for example,
1708*bbf21555SRichard Lowe.Pp
1709*bbf21555SRichard Lowe.Dl tr \e(xx\e(yy
1710*bbf21555SRichard Lowe.Pp
1711*bbf21555SRichard Lowereplaces all invocations of \e(xx with \e(yy.
1712*bbf21555SRichard Lowe.It Ic \&track Ar font minps width1 maxps width2
1713*bbf21555SRichard LoweStatic letter space tracking.
1714*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1715*bbf21555SRichard Lowe.It Ic \&transchar Ar char ...
1716*bbf21555SRichard LoweDefine transparent characters for sentence-ending.
1717*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1718*bbf21555SRichard Lowe.It Ic \&trf Ar filename
1719*bbf21555SRichard LoweOutput the contents of a file, disallowing invalid characters.
1720*bbf21555SRichard LoweThis is a groff extension and ignored because insecure.
1721*bbf21555SRichard Lowe.It Ic \&trimat Ar left top width height
1722*bbf21555SRichard LoweSet the TrimBox page parameter for PDF generation.
1723*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1724*bbf21555SRichard Lowe.It Ic \&trin Ar glyph glyph ...
1725*bbf21555SRichard LoweOutput character translation, ignored by
1726*bbf21555SRichard Lowe.Ic \&asciify .
1727*bbf21555SRichard LoweCurrently unsupported.
1728*bbf21555SRichard Lowe.It Ic \&trnt Ar glyph glyph ...
1729*bbf21555SRichard LoweOutput character translation, ignored by \e!.
1730*bbf21555SRichard LoweCurrently unsupported.
1731*bbf21555SRichard Lowe.It Ic \&troff
1732*bbf21555SRichard LoweForce troff mode.
1733*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1734*bbf21555SRichard Lowe.It Ic \&TS
1735*bbf21555SRichard LoweBegin a table, which formats input in aligned rows and columns.
1736*bbf21555SRichard LoweSee
1737*bbf21555SRichard Lowe.Xr tbl 7
1738*bbf21555SRichard Lowefor a description of the tbl language.
1739*bbf21555SRichard Lowe.It Ic \&uf Ar font
1740*bbf21555SRichard LoweGlobally set the underline font.
1741*bbf21555SRichard LoweCurrently ignored.
1742*bbf21555SRichard Lowe.It Ic \&ul Op Ar N
1743*bbf21555SRichard LoweUnderline next
1744*bbf21555SRichard Lowe.Ar N
1745*bbf21555SRichard Loweinput lines.
1746*bbf21555SRichard LoweCurrently ignored.
1747*bbf21555SRichard Lowe.It Ic \&unformat Ar divname
1748*bbf21555SRichard LoweUnformat spaces and tabs in a diversion.
1749*bbf21555SRichard LoweCurrently unsupported.
1750*bbf21555SRichard Lowe.It Ic \&unwatch Ar macroname
1751*bbf21555SRichard LoweDisable notification for string or macro.
1752*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1753*bbf21555SRichard Lowe.It Ic \&unwatchn Ar register
1754*bbf21555SRichard LoweDisable notification for register.
1755*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1756*bbf21555SRichard Lowe.It Ic \&vpt Op Cm 1 | 0
1757*bbf21555SRichard LoweEnable or disable vertical position traps.
1758*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1759*bbf21555SRichard Lowe.It Ic \&vs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1760*bbf21555SRichard LoweChange vertical spacing.
1761*bbf21555SRichard LoweCurrently ignored.
1762*bbf21555SRichard Lowe.It Ic \&warn Ar flags
1763*bbf21555SRichard LoweSet warning level.
1764*bbf21555SRichard LoweCurrently ignored.
1765*bbf21555SRichard Lowe.It Ic \&warnscale Ar si
1766*bbf21555SRichard LoweSet the scaling indicator used in warnings.
1767*bbf21555SRichard LoweThis is a groff extension and currently ignored.
1768*bbf21555SRichard Lowe.It Ic \&watch Ar macroname
1769*bbf21555SRichard LoweNotify on change of string or macro.
1770*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1771*bbf21555SRichard Lowe.It Ic \&watchlength Ar maxlength
1772*bbf21555SRichard LoweOn change, report the contents of macros and strings
1773*bbf21555SRichard Loweup to the specified length.
1774*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1775*bbf21555SRichard Lowe.It Ic \&watchn Ar register
1776*bbf21555SRichard LoweNotify on change of register.
1777*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1778*bbf21555SRichard Lowe.It Ic \&wh Ar dist Op Ar macroname
1779*bbf21555SRichard LoweSet a page location trap.
1780*bbf21555SRichard LoweCurrently unsupported.
1781*bbf21555SRichard Lowe.It Ic \&while Ar condition body
1782*bbf21555SRichard LoweRepeated execution while a
1783*bbf21555SRichard Lowe.Ar condition
1784*bbf21555SRichard Loweis true, with syntax similar to
1785*bbf21555SRichard Lowe.Ic \&if .
1786*bbf21555SRichard LoweCurrently implemented with two restrictions: cannot nest,
1787*bbf21555SRichard Loweand each loop must start and end in the same scope.
1788*bbf21555SRichard Lowe.It Ic \&write Oo \(dq Oc Ns Ar string
1789*bbf21555SRichard LoweWrite to an open file.
1790*bbf21555SRichard LoweIgnored because insecure.
1791*bbf21555SRichard Lowe.It Ic \&writec Oo \(dq Oc Ns Ar string
1792*bbf21555SRichard LoweWrite to an open file without appending a newline.
1793*bbf21555SRichard LoweIgnored because insecure.
1794*bbf21555SRichard Lowe.It Ic \&writem Ar macroname
1795*bbf21555SRichard LoweWrite macro or string to an open file.
1796*bbf21555SRichard LoweIgnored because insecure.
1797*bbf21555SRichard Lowe.It Ic \&xflag Ar level
1798*bbf21555SRichard LoweSet the extension level.
1799*bbf21555SRichard LoweThis is a Heirloom extension and currently ignored.
1800*bbf21555SRichard Lowe.El
1801*bbf21555SRichard Lowe.Ss Numerical expressions
1802*bbf21555SRichard LoweThe
1803*bbf21555SRichard Lowe.Ic \&nr ,
1804*bbf21555SRichard Lowe.Ic \&if ,
1805*bbf21555SRichard Loweand
1806*bbf21555SRichard Lowe.Ic \&ie
1807*bbf21555SRichard Lowerequests accept integer numerical expressions as arguments.
1808*bbf21555SRichard LoweThese are always evaluated using the C
1809*bbf21555SRichard Lowe.Vt int
1810*bbf21555SRichard Lowetype; integer overflow works the same way as in the C language.
1811*bbf21555SRichard LoweNumbers consist of an arbitrary number of digits
1812*bbf21555SRichard Lowe.Sq 0
1813*bbf21555SRichard Loweto
1814*bbf21555SRichard Lowe.Sq 9
1815*bbf21555SRichard Loweprefixed by an optional sign
1816*bbf21555SRichard Lowe.Sq +
1817*bbf21555SRichard Loweor
1818*bbf21555SRichard Lowe.Sq - .
1819*bbf21555SRichard LoweEach number may be followed by one optional scaling unit described below
1820*bbf21555SRichard Lowe.Sx Scaling Widths .
1821*bbf21555SRichard LoweThe following equations hold:
1822*bbf21555SRichard Lowe.Bd -literal -offset indent
1823*bbf21555SRichard Lowe1i = 6v = 6P = 10m = 10n = 72p = 1000M = 240u = 240
1824*bbf21555SRichard Lowe254c = 100i = 24000u = 24000
1825*bbf21555SRichard Lowe1f = 65536u = 65536
1826*bbf21555SRichard Lowe.Ed
1827*bbf21555SRichard Lowe.Pp
1828*bbf21555SRichard LoweThe following binary operators are implemented.
1829*bbf21555SRichard LoweUnless otherwise stated, they behave as in the C language:
1830*bbf21555SRichard Lowe.Pp
1831*bbf21555SRichard Lowe.Bl -tag -width 2n -compact
1832*bbf21555SRichard Lowe.It Ic +
1833*bbf21555SRichard Loweaddition
1834*bbf21555SRichard Lowe.It Ic -
1835*bbf21555SRichard Lowesubtraction
1836*bbf21555SRichard Lowe.It Ic *
1837*bbf21555SRichard Lowemultiplication
1838*bbf21555SRichard Lowe.It Ic /
1839*bbf21555SRichard Lowedivision
1840*bbf21555SRichard Lowe.It Ic %
1841*bbf21555SRichard Loweremainder of division
1842*bbf21555SRichard Lowe.It Ic <
1843*bbf21555SRichard Loweless than
1844*bbf21555SRichard Lowe.It Ic >
1845*bbf21555SRichard Lowegreater than
1846*bbf21555SRichard Lowe.It Ic ==
1847*bbf21555SRichard Loweequal to
1848*bbf21555SRichard Lowe.It Ic =
1849*bbf21555SRichard Loweequal to, same effect as
1850*bbf21555SRichard Lowe.Ic ==
1851*bbf21555SRichard Lowe(this differs from C)
1852*bbf21555SRichard Lowe.It Ic <=
1853*bbf21555SRichard Loweless than or equal to
1854*bbf21555SRichard Lowe.It Ic >=
1855*bbf21555SRichard Lowegreater than or equal to
1856*bbf21555SRichard Lowe.It Ic <>
1857*bbf21555SRichard Lowenot equal to (corresponds to C
1858*bbf21555SRichard Lowe.Ic != ;
1859*bbf21555SRichard Lowethis one is of limited portability, it is supported by Heirloom roff,
1860*bbf21555SRichard Lowebut not by groff)
1861*bbf21555SRichard Lowe.It Ic &
1862*bbf21555SRichard Lowelogical and (corresponds to C
1863*bbf21555SRichard Lowe.Ic && )
1864*bbf21555SRichard Lowe.It Ic \&:
1865*bbf21555SRichard Lowelogical or (corresponds to C
1866*bbf21555SRichard Lowe.Ic || )
1867*bbf21555SRichard Lowe.It Ic <?
1868*bbf21555SRichard Loweminimum (not available in C)
1869*bbf21555SRichard Lowe.It Ic >?
1870*bbf21555SRichard Lowemaximum (not available in C)
1871*bbf21555SRichard Lowe.El
1872*bbf21555SRichard Lowe.Pp
1873*bbf21555SRichard LoweThere is no concept of precedence; evaluation proceeds from left to right,
1874*bbf21555SRichard Loweexcept when subexpressions are enclosed in parentheses.
1875*bbf21555SRichard LoweInside parentheses, whitespace is ignored.
1876*bbf21555SRichard Lowe.Sh ESCAPE SEQUENCE REFERENCE
1877*bbf21555SRichard LoweThe
1878*bbf21555SRichard Lowe.Xr mandoc 1
1879*bbf21555SRichard Lowe.Nm
1880*bbf21555SRichard Loweparser recognises the following escape sequences.
1881*bbf21555SRichard LoweIn
1882*bbf21555SRichard Lowe.Xr mdoc 7
1883*bbf21555SRichard Loweand
1884*bbf21555SRichard Lowe.Xr man 7
1885*bbf21555SRichard Lowedocuments, using escape sequences is discouraged except for those
1886*bbf21555SRichard Lowedescribed in the
1887*bbf21555SRichard Lowe.Sx LANGUAGE SYNTAX
1888*bbf21555SRichard Lowesection above.
1889*bbf21555SRichard Lowe.Pp
1890*bbf21555SRichard LoweA backslash followed by any character not listed here
1891*bbf21555SRichard Lowesimply prints that character itself.
1892*bbf21555SRichard Lowe.Bl -tag -width Ds
1893*bbf21555SRichard Lowe.It Ic \e<newline>
1894*bbf21555SRichard LoweA backslash at the end of an input line can be used to continue the
1895*bbf21555SRichard Lowelogical input line on the next physical input line, joining the text
1896*bbf21555SRichard Loweon both lines together as if it were on a single input line.
1897*bbf21555SRichard Lowe.It Ic \e<space>
1898*bbf21555SRichard LoweThe escape sequence backslash-space
1899*bbf21555SRichard Lowe.Pq Sq \e\ \&
1900*bbf21555SRichard Loweis an unpaddable space-sized non-breaking space character; see
1901*bbf21555SRichard Lowe.Sx Whitespace
1902*bbf21555SRichard Loweand
1903*bbf21555SRichard Lowe.Xr mandoc_char 7 .
1904*bbf21555SRichard Lowe.It Ic \e!
1905*bbf21555SRichard LoweEmbed text up to and including the end of the input line into the
1906*bbf21555SRichard Lowecurrent diversion or into intermediate output without interpreting
1907*bbf21555SRichard Lowerequests, macros, and escapes.
1908*bbf21555SRichard LoweCurrently unsupported.
1909*bbf21555SRichard Lowe.It Ic \e\(dq
1910*bbf21555SRichard LoweThe rest of the input line is treated as
1911*bbf21555SRichard Lowe.Sx Comments .
1912*bbf21555SRichard Lowe.It Ic \e#
1913*bbf21555SRichard LoweLine continuation with comment.
1914*bbf21555SRichard LoweDiscard the rest of the physical input line and continue the logical
1915*bbf21555SRichard Loweinput line on the next physical input line, joining the text on
1916*bbf21555SRichard Loweboth lines together as if it were on a single input line.
1917*bbf21555SRichard LoweThis is a groff extension.
1918*bbf21555SRichard Lowe.It Ic \e$ Ns Ar arg
1919*bbf21555SRichard LoweMacro argument expansion, see
1920*bbf21555SRichard Lowe.Ic \&de .
1921*bbf21555SRichard Lowe.It Ic \e%
1922*bbf21555SRichard LoweHyphenation allowed at this point of the word; ignored by
1923*bbf21555SRichard Lowe.Xr mandoc 1 .
1924*bbf21555SRichard Lowe.It Ic \e&
1925*bbf21555SRichard LoweNon-printing zero-width character,
1926*bbf21555SRichard Loweoften used for various kinds of escaping; see
1927*bbf21555SRichard Lowe.Sx Whitespace ,
1928*bbf21555SRichard Lowe.Xr mandoc_char 7 ,
1929*bbf21555SRichard Loweand the
1930*bbf21555SRichard Lowe.Dq MACRO SYNTAX
1931*bbf21555SRichard Loweand
1932*bbf21555SRichard Lowe.Dq Delimiters
1933*bbf21555SRichard Lowesections in
1934*bbf21555SRichard Lowe.Xr mdoc 7 .
1935*bbf21555SRichard Lowe.It Ic \e\(aq
1936*bbf21555SRichard LoweAcute accent special character; use
1937*bbf21555SRichard Lowe.Ic \e(aa
1938*bbf21555SRichard Loweinstead.
1939*bbf21555SRichard Lowe.It Ic \e( Ns Ar cc
1940*bbf21555SRichard Lowe.Sx Special Characters
1941*bbf21555SRichard Lowewith two-letter names, see
1942*bbf21555SRichard Lowe.Xr mandoc_char 7 .
1943*bbf21555SRichard Lowe.It Ic \e)
1944*bbf21555SRichard LoweZero-width space transparent to end-of-sentence detection;
1945*bbf21555SRichard Loweignored by
1946*bbf21555SRichard Lowe.Xr mandoc 1 .
1947*bbf21555SRichard Lowe.It Ic \e*[ Ns Ar name Ns Ic \&]
1948*bbf21555SRichard LoweInterpolate the string with the
1949*bbf21555SRichard Lowe.Ar name .
1950*bbf21555SRichard LoweFor short names, there are variants
1951*bbf21555SRichard Lowe.Ic \e* Ns Ar c
1952*bbf21555SRichard Loweand
1953*bbf21555SRichard Lowe.Ic \e*( Ns Ar cc .
1954*bbf21555SRichard Lowe.Pp
1955*bbf21555SRichard LoweOne string is predefined on the
1956*bbf21555SRichard Lowe.Nm
1957*bbf21555SRichard Lowelanguage level:
1958*bbf21555SRichard Lowe.Ic \e*(.T
1959*bbf21555SRichard Loweexpands to the name of the output device,
1960*bbf21555SRichard Lowefor example ascii, utf8, ps, pdf, html, or markdown.
1961*bbf21555SRichard Lowe.Pp
1962*bbf21555SRichard LoweMacro sets traditionally predefine additional strings which are not
1963*bbf21555SRichard Loweportable and differ across implementations.
1964*bbf21555SRichard LoweThose supported by
1965*bbf21555SRichard Lowe.Xr mandoc 1
1966*bbf21555SRichard Loweare listed in
1967*bbf21555SRichard Lowe.Xr mandoc_char 7 .
1968*bbf21555SRichard Lowe.Pp
1969*bbf21555SRichard LoweStrings can be defined, changed, and deleted with the
1970*bbf21555SRichard Lowe.Ic \&ds ,
1971*bbf21555SRichard Lowe.Ic \&as ,
1972*bbf21555SRichard Loweand
1973*bbf21555SRichard Lowe.Ic \&rm
1974*bbf21555SRichard Lowerequests.
1975*bbf21555SRichard Lowe.It Ic \e,
1976*bbf21555SRichard LoweLeft italic correction (groff extension); ignored by
1977*bbf21555SRichard Lowe.Xr mandoc 1 .
1978*bbf21555SRichard Lowe.It Ic \e-
1979*bbf21555SRichard LoweSpecial character
1980*bbf21555SRichard Lowe.Dq mathematical minus sign ;
1981*bbf21555SRichard Lowesee
1982*bbf21555SRichard Lowe.Xr mandoc_char 7
1983*bbf21555SRichard Lowefor details.
1984*bbf21555SRichard Lowe.It Ic \e/
1985*bbf21555SRichard LoweRight italic correction (groff extension); ignored by
1986*bbf21555SRichard Lowe.Xr mandoc 1 .
1987*bbf21555SRichard Lowe.It Ic \e:
1988*bbf21555SRichard LoweBreaking the line is allowed at this point of the word
1989*bbf21555SRichard Lowewithout inserting a hyphen.
1990*bbf21555SRichard Lowe.It Ic \e?
1991*bbf21555SRichard LoweEmbed the text up to the next
1992*bbf21555SRichard Lowe.Ic \e?
1993*bbf21555SRichard Loweinto the current diversion without interpreting requests, macros,
1994*bbf21555SRichard Loweand escapes.
1995*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
1996*bbf21555SRichard Lowe.It Ic \e[ Ns Ar name Ns Ic \&]
1997*bbf21555SRichard Lowe.Sx Special Characters
1998*bbf21555SRichard Lowewith names of arbitrary length, see
1999*bbf21555SRichard Lowe.Xr mandoc_char 7 .
2000*bbf21555SRichard Lowe.It Ic \e^
2001*bbf21555SRichard LoweOne-twelfth em half-narrow space character, effectively zero-width in
2002*bbf21555SRichard Lowe.Xr mandoc 1 .
2003*bbf21555SRichard Lowe.It Ic \e_
2004*bbf21555SRichard LoweUnderline special character; use
2005*bbf21555SRichard Lowe.Ic \e(ul
2006*bbf21555SRichard Loweinstead.
2007*bbf21555SRichard Lowe.It Ic \e`
2008*bbf21555SRichard LoweGrave accent special character; use
2009*bbf21555SRichard Lowe.Ic \e(ga
2010*bbf21555SRichard Loweinstead.
2011*bbf21555SRichard Lowe.It Ic \e{
2012*bbf21555SRichard LoweBegin conditional input; see
2013*bbf21555SRichard Lowe.Ic \&if .
2014*bbf21555SRichard Lowe.It Ic \e\(ba
2015*bbf21555SRichard LoweOne-sixth em narrow space character, effectively zero-width in
2016*bbf21555SRichard Lowe.Xr mandoc 1 .
2017*bbf21555SRichard Lowe.It Ic \e}
2018*bbf21555SRichard LoweEnd conditional input; see
2019*bbf21555SRichard Lowe.Ic \&if .
2020*bbf21555SRichard Lowe.It Ic \e~
2021*bbf21555SRichard LowePaddable non-breaking space character.
2022*bbf21555SRichard Lowe.It Ic \e0
2023*bbf21555SRichard LoweDigit width space character.
2024*bbf21555SRichard Lowe.It Ic \eA\(aq Ns Ar string Ns Ic \(aq
2025*bbf21555SRichard LoweAnchor definition; ignored by
2026*bbf21555SRichard Lowe.Xr mandoc 1 .
2027*bbf21555SRichard Lowe.It Ic \ea
2028*bbf21555SRichard LoweLeader character; ignored by
2029*bbf21555SRichard Lowe.Xr mandoc 1 .
2030*bbf21555SRichard Lowe.It Ic \eB\(aq Ns Ar string Ns Ic \(aq
2031*bbf21555SRichard LoweInterpolate
2032*bbf21555SRichard Lowe.Sq 1
2033*bbf21555SRichard Loweif
2034*bbf21555SRichard Lowe.Ar string
2035*bbf21555SRichard Loweconforms to the syntax of
2036*bbf21555SRichard Lowe.Sx Numerical expressions
2037*bbf21555SRichard Loweexplained above or
2038*bbf21555SRichard Lowe.Sq 0
2039*bbf21555SRichard Loweotherwise.
2040*bbf21555SRichard Lowe.It Ic \eb\(aq Ns Ar string Ns Ic \(aq
2041*bbf21555SRichard LoweBracket building function; ignored by
2042*bbf21555SRichard Lowe.Xr mandoc 1 .
2043*bbf21555SRichard Lowe.It Ic \eC\(aq Ns Ar name Ns Ic \(aq
2044*bbf21555SRichard Lowe.Sx Special Characters
2045*bbf21555SRichard Lowewith names of arbitrary length.
2046*bbf21555SRichard Lowe.It Ic \ec
2047*bbf21555SRichard LoweWhen encountered at the end of an input text line,
2048*bbf21555SRichard Lowethe next input text line is considered to continue that line,
2049*bbf21555SRichard Loweeven if there are request or macro lines in between.
2050*bbf21555SRichard LoweNo whitespace is inserted.
2051*bbf21555SRichard Lowe.It Ic \eD\(aq Ns Ar string Ns Ic \(aq
2052*bbf21555SRichard LoweDraw graphics function; ignored by
2053*bbf21555SRichard Lowe.Xr mandoc 1 .
2054*bbf21555SRichard Lowe.It Ic \ed
2055*bbf21555SRichard LoweMove down by half a line; ignored by
2056*bbf21555SRichard Lowe.Xr mandoc 1 .
2057*bbf21555SRichard Lowe.It Ic \eE
2058*bbf21555SRichard LoweEscape character intended to not be interpreted in copy mode.
2059*bbf21555SRichard LoweIn
2060*bbf21555SRichard Lowe.Xr mandoc 1 ,
2061*bbf21555SRichard Loweit currently does the same as
2062*bbf21555SRichard Lowe.Ic \e
2063*bbf21555SRichard Loweitself.
2064*bbf21555SRichard Lowe.It Ic \ee
2065*bbf21555SRichard LoweBackslash special character.
2066*bbf21555SRichard Lowe.It Ic \eF[ Ns Ar name Ns Ic \&]
2067*bbf21555SRichard LoweSwitch font family (groff extension); ignored by
2068*bbf21555SRichard Lowe.Xr mandoc 1 .
2069*bbf21555SRichard LoweFor short names, there are variants
2070*bbf21555SRichard Lowe.Ic \eF Ns Ar c
2071*bbf21555SRichard Loweand
2072*bbf21555SRichard Lowe.Ic \eF( Ns Ar cc .
2073*bbf21555SRichard Lowe.It Ic \ef[ Ns Ar name Ns Ic \&]
2074*bbf21555SRichard LoweSwitch to the font
2075*bbf21555SRichard Lowe.Ar name ,
2076*bbf21555SRichard Lowesee
2077*bbf21555SRichard Lowe.Sx Font Selection .
2078*bbf21555SRichard LoweFor short names, there are variants
2079*bbf21555SRichard Lowe.Ic \ef Ns Ar c
2080*bbf21555SRichard Loweand
2081*bbf21555SRichard Lowe.Ic \ef( Ns Ar cc .
2082*bbf21555SRichard LoweAn empty name
2083*bbf21555SRichard Lowe.Ic \ef[]
2084*bbf21555SRichard Lowedefaults to
2085*bbf21555SRichard Lowe.Ic \efP .
2086*bbf21555SRichard Lowe.It Ic \eg[ Ns Ar name Ns Ic \&]
2087*bbf21555SRichard LoweInterpolate the format of a number register; ignored by
2088*bbf21555SRichard Lowe.Xr mandoc 1 .
2089*bbf21555SRichard LoweFor short names, there are variants
2090*bbf21555SRichard Lowe.Ic \eg Ns Ar c
2091*bbf21555SRichard Loweand
2092*bbf21555SRichard Lowe.Ic \eg( Ns Ar cc .
2093*bbf21555SRichard Lowe.It Ic \eH\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
2094*bbf21555SRichard LoweSet the height of the current font; ignored by
2095*bbf21555SRichard Lowe.Xr mandoc 1 .
2096*bbf21555SRichard Lowe.It Ic \eh\(aq Ns Oo Cm \&| Oc Ns Ar width Ns Ic \(aq
2097*bbf21555SRichard LoweHorizontal motion.
2098*bbf21555SRichard LoweIf the vertical bar is given, the motion is relative to the current
2099*bbf21555SRichard Loweindentation.
2100*bbf21555SRichard LoweOtherwise, it is relative to the current position.
2101*bbf21555SRichard LoweThe default scaling unit is
2102*bbf21555SRichard Lowe.Cm m .
2103*bbf21555SRichard Lowe.It Ic \ek[ Ns Ar name Ns Ic \&]
2104*bbf21555SRichard LoweMark horizontal input place in register; ignored by
2105*bbf21555SRichard Lowe.Xr mandoc 1 .
2106*bbf21555SRichard LoweFor short names, there are variants
2107*bbf21555SRichard Lowe.Ic \ek Ns Ar c
2108*bbf21555SRichard Loweand
2109*bbf21555SRichard Lowe.Ic \ek( Ns Ar cc .
2110*bbf21555SRichard Lowe.It Ic \eL\(aq Ns Ar number Ns Oo Ar c Oc Ns Ic \(aq
2111*bbf21555SRichard LoweVertical line drawing function; ignored by
2112*bbf21555SRichard Lowe.Xr mandoc 1 .
2113*bbf21555SRichard Lowe.It Ic \el\(aq Ns Ar width Ns Oo Ar c Oc Ns Ic \(aq
2114*bbf21555SRichard LoweDraw a horizontal line of
2115*bbf21555SRichard Lowe.Ar width
2116*bbf21555SRichard Loweusing the glyph
2117*bbf21555SRichard Lowe.Ar c .
2118*bbf21555SRichard Lowe.It Ic \eM[ Ns Ar name Ns Ic \&]
2119*bbf21555SRichard LoweSet fill (background) color (groff extension); ignored by
2120*bbf21555SRichard Lowe.Xr mandoc 1 .
2121*bbf21555SRichard LoweFor short names, there are variants
2122*bbf21555SRichard Lowe.Ic \eM Ns Ar c
2123*bbf21555SRichard Loweand
2124*bbf21555SRichard Lowe.Ic \eM( Ns Ar cc .
2125*bbf21555SRichard Lowe.It Ic \em[ Ns Ar name Ns Ic \&]
2126*bbf21555SRichard LoweSet glyph drawing color (groff extension); ignored by
2127*bbf21555SRichard Lowe.Xr mandoc 1 .
2128*bbf21555SRichard LoweFor short names, there are variants
2129*bbf21555SRichard Lowe.Ic \em Ns Ar c
2130*bbf21555SRichard Loweand
2131*bbf21555SRichard Lowe.Ic \em( Ns Ar cc .
2132*bbf21555SRichard Lowe.It Ic \eN\(aq Ns Ar number Ns Ic \(aq
2133*bbf21555SRichard LoweCharacter
2134*bbf21555SRichard Lowe.Ar number
2135*bbf21555SRichard Loweon the current font.
2136*bbf21555SRichard Lowe.It Ic \en Ns Oo +|- Oc Ns Ic \&[ Ns Ar name Ns Ic \&]
2137*bbf21555SRichard LoweInterpolate the number register
2138*bbf21555SRichard Lowe.Ar name .
2139*bbf21555SRichard LoweFor short names, there are variants
2140*bbf21555SRichard Lowe.Ic \en Ns Ar c
2141*bbf21555SRichard Loweand
2142*bbf21555SRichard Lowe.Ic \en( Ns Ar cc .
2143*bbf21555SRichard LoweIf the optional sign is specified,
2144*bbf21555SRichard Lowethe register is first incremented or decremented by the
2145*bbf21555SRichard Lowe.Ar stepsize
2146*bbf21555SRichard Lowethat was specified in the relevant
2147*bbf21555SRichard Lowe.Ic \&nr
2148*bbf21555SRichard Lowerequest, and the changed value is interpolated.
2149*bbf21555SRichard Lowe.It Ic \eO Ns Ar digit , Ic \eO[5 Ns arguments Ns Ic \&]
2150*bbf21555SRichard LoweSuppress output.
2151*bbf21555SRichard LoweThis is a groff extension and currently unsupported.
2152*bbf21555SRichard LoweWith an argument of
2153*bbf21555SRichard Lowe.Ic 1 , 2 , 3 ,
2154*bbf21555SRichard Loweor
2155*bbf21555SRichard Lowe.Ic 4 ,
2156*bbf21555SRichard Loweit is ignored.
2157*bbf21555SRichard Lowe.It Ic \eo\(aq Ns Ar string Ns Ic \(aq
2158*bbf21555SRichard LoweOverstrike, writing all the characters contained in the
2159*bbf21555SRichard Lowe.Ar string
2160*bbf21555SRichard Loweto the same output position.
2161*bbf21555SRichard LoweIn terminal and HTML output modes,
2162*bbf21555SRichard Loweonly the last one of the characters is visible.
2163*bbf21555SRichard Lowe.It Ic \ep
2164*bbf21555SRichard LoweBreak the output line at the end of the current word.
2165*bbf21555SRichard Lowe.It Ic \eR\(aq Ns Ar name Oo +|- Oc Ns Ar number Ns Ic \(aq
2166*bbf21555SRichard LoweSet number register; ignored by
2167*bbf21555SRichard Lowe.Xr mandoc 1 .
2168*bbf21555SRichard Lowe.It Ic \er
2169*bbf21555SRichard LoweMove up by one line; ignored by
2170*bbf21555SRichard Lowe.Xr mandoc 1 .
2171*bbf21555SRichard Lowe.It Ic \eS\(aq Ns Ar number Ns Ic \(aq
2172*bbf21555SRichard LoweSlant output; ignored by
2173*bbf21555SRichard Lowe.Xr mandoc 1 .
2174*bbf21555SRichard Lowe.It Ic \es\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
2175*bbf21555SRichard LoweChange point size; ignored by
2176*bbf21555SRichard Lowe.Xr mandoc 1 .
2177*bbf21555SRichard LoweAlternative forms
2178*bbf21555SRichard Lowe.Ic \es Ns Oo +|- Oc Ns Ar n ,
2179*bbf21555SRichard Lowe.Ic \es Ns Oo +|- Oc Ns Ic \(aq Ns Ar number Ns Ic \(aq ,
2180*bbf21555SRichard Lowe.Ic \es[ Ns Oo +|- Oc Ns Ar number Ns Ic \&] ,
2181*bbf21555SRichard Loweand
2182*bbf21555SRichard Lowe.Ic \es Ns Oo +|- Oc Ns Ic \&[ Ns Ar number Ns Ic \&]
2183*bbf21555SRichard Loweare also parsed and ignored.
2184*bbf21555SRichard Lowe.It Ic \et
2185*bbf21555SRichard LoweHorizontal tab; ignored by
2186*bbf21555SRichard Lowe.Xr mandoc 1 .
2187*bbf21555SRichard Lowe.It Ic \eu
2188*bbf21555SRichard LoweMove up by half a line; ignored by
2189*bbf21555SRichard Lowe.Xr mandoc 1 .
2190*bbf21555SRichard Lowe.It Ic \eV[ Ns Ar name Ns Ic \&]
2191*bbf21555SRichard LoweInterpolate an environment variable; ignored by
2192*bbf21555SRichard Lowe.Xr mandoc 1 .
2193*bbf21555SRichard LoweFor short names, there are variants
2194*bbf21555SRichard Lowe.Ic \eV Ns Ar c
2195*bbf21555SRichard Loweand
2196*bbf21555SRichard Lowe.Ic \eV( Ns Ar cc .
2197*bbf21555SRichard Lowe.It Ic \ev\(aq Ns Ar number Ns Ic \(aq
2198*bbf21555SRichard LoweVertical motion; ignored by
2199*bbf21555SRichard Lowe.Xr mandoc 1 .
2200*bbf21555SRichard Lowe.It Ic \ew\(aq Ns Ar string Ns Ic \(aq
2201*bbf21555SRichard LoweInterpolate the width of the
2202*bbf21555SRichard Lowe.Ar string .
2203*bbf21555SRichard LoweThe
2204*bbf21555SRichard Lowe.Xr mandoc 1
2205*bbf21555SRichard Loweimplementation assumes that after expansion of user-defined strings, the
2206*bbf21555SRichard Lowe.Ar string
2207*bbf21555SRichard Loweonly contains normal characters, no escape sequences, and that each
2208*bbf21555SRichard Lowecharacter has a width of 24 basic units.
2209*bbf21555SRichard Lowe.It Ic \eX\(aq Ns Ar string Ns Ic \(aq
2210*bbf21555SRichard LoweOutput
2211*bbf21555SRichard Lowe.Ar string
2212*bbf21555SRichard Loweas device control function; ignored in nroff mode and by
2213*bbf21555SRichard Lowe.Xr mandoc 1 .
2214*bbf21555SRichard Lowe.It Ic \ex\(aq Ns Ar number Ns Ic \(aq
2215*bbf21555SRichard LoweExtra line space function; ignored by
2216*bbf21555SRichard Lowe.Xr mandoc 1 .
2217*bbf21555SRichard Lowe.It Ic \eY[ Ns Ar name Ns Ic \&]
2218*bbf21555SRichard LoweOutput a string as a device control function; ignored in nroff mode and by
2219*bbf21555SRichard Lowe.Xr mandoc 1 .
2220*bbf21555SRichard LoweFor short names, there are variants
2221*bbf21555SRichard Lowe.Ic \eY Ns Ar c
2222*bbf21555SRichard Loweand
2223*bbf21555SRichard Lowe.Ic \eY( Ns Ar cc .
2224*bbf21555SRichard Lowe.It Ic \eZ\(aq Ns Ar string Ns Ic \(aq
2225*bbf21555SRichard LowePrint
2226*bbf21555SRichard Lowe.Ar string
2227*bbf21555SRichard Lowewith zero width and height; ignored by
2228*bbf21555SRichard Lowe.Xr mandoc 1 .
2229*bbf21555SRichard Lowe.It Ic \ez
2230*bbf21555SRichard LoweOutput the next character without advancing the cursor position.
2231*bbf21555SRichard Lowe.El
2232*bbf21555SRichard Lowe.Sh COMPATIBILITY
2233*bbf21555SRichard LoweThe
2234*bbf21555SRichard Lowe.Xr mandoc 1
2235*bbf21555SRichard Loweimplementation of the
2236*bbf21555SRichard Lowe.Nm
2237*bbf21555SRichard Lowelanguage is incomplete.
2238*bbf21555SRichard LoweMajor unimplemented features include:
2239*bbf21555SRichard Lowe.Pp
2240*bbf21555SRichard Lowe.Bl -dash -compact
2241*bbf21555SRichard Lowe.It
2242*bbf21555SRichard LoweFor security reasons,
2243*bbf21555SRichard Lowe.Xr mandoc 1
2244*bbf21555SRichard Lowenever reads or writes external files except via
2245*bbf21555SRichard Lowe.Ic \&so
2246*bbf21555SRichard Lowerequests with safe relative paths.
2247*bbf21555SRichard Lowe.It
2248*bbf21555SRichard LoweThere is no automatic hyphenation, no adjustment to the right margin,
2249*bbf21555SRichard Loweand very limited support for centering; the output is always set flush-left.
2250*bbf21555SRichard Lowe.It
2251*bbf21555SRichard LoweSupport for setting tabulator and leader characters is missing,
2252*bbf21555SRichard Loweand support for manually changing indentation is limited.
2253*bbf21555SRichard Lowe.It
2254*bbf21555SRichard LoweThe
2255*bbf21555SRichard Lowe.Sq u
2256*bbf21555SRichard Lowescaling unit is the default terminal unit.
2257*bbf21555SRichard LoweIn traditional troff systems, this unit changes depending on the
2258*bbf21555SRichard Loweoutput media.
2259*bbf21555SRichard Lowe.It
2260*bbf21555SRichard LoweWidth measurements are implemented in a crude way
2261*bbf21555SRichard Loweand often yield wrong results.
2262*bbf21555SRichard LoweSupport for explicit movement requests and escapes is limited.
2263*bbf21555SRichard Lowe.It
2264*bbf21555SRichard LoweThere is no concept of output pages, no support for floats,
2265*bbf21555SRichard Lowegraphics drawing, and picture inclusion;
2266*bbf21555SRichard Loweterminal output is always continuous.
2267*bbf21555SRichard Lowe.It
2268*bbf21555SRichard LoweRequests regarding color, font families, font sizes,
2269*bbf21555SRichard Loweand glyph manipulation are ignored.
2270*bbf21555SRichard LoweFont support is very limited.
2271*bbf21555SRichard LoweKerning is not implemented, and no ligatures are produced.
2272*bbf21555SRichard Lowe.It
2273*bbf21555SRichard LoweThe
2274*bbf21555SRichard Lowe.Qq \(aq
2275*bbf21555SRichard Lowemacro control character does not suppress output line breaks.
2276*bbf21555SRichard Lowe.It
2277*bbf21555SRichard LoweDiversions and environments are not implemented,
2278*bbf21555SRichard Loweand support for traps is very incomplete.
2279*bbf21555SRichard Lowe.It
2280*bbf21555SRichard LoweUse of macros is not supported inside
2281*bbf21555SRichard Lowe.Xr tbl 7
2282*bbf21555SRichard Lowecode.
2283*bbf21555SRichard Lowe.El
2284*bbf21555SRichard Lowe.Pp
2285*bbf21555SRichard LoweThe special semantics of the
2286*bbf21555SRichard Lowe.Cm nS
2287*bbf21555SRichard Lowenumber register is an idiosyncrasy of
2288*bbf21555SRichard Lowe.Ox
2289*bbf21555SRichard Lowemanuals and not supported by other
2290*bbf21555SRichard Lowe.Xr mdoc 7
2291*bbf21555SRichard Loweimplementations.
2292*bbf21555SRichard Lowe.Sh SEE ALSO
2293*bbf21555SRichard Lowe.Xr mandoc 1 ,
2294*bbf21555SRichard Lowe.Xr eqn 7 ,
2295*bbf21555SRichard Lowe.Xr man 7 ,
2296*bbf21555SRichard Lowe.Xr mandoc_char 7 ,
2297*bbf21555SRichard Lowe.Xr mdoc 7 ,
2298*bbf21555SRichard Lowe.Xr tbl 7
2299*bbf21555SRichard Lowe.Rs
2300*bbf21555SRichard Lowe.%A Joseph F. Ossanna
2301*bbf21555SRichard Lowe.%A Brian W. Kernighan
2302*bbf21555SRichard Lowe.%I AT&T Bell Laboratories
2303*bbf21555SRichard Lowe.%T Troff User's Manual
2304*bbf21555SRichard Lowe.%R Computing Science Technical Report
2305*bbf21555SRichard Lowe.%N 54
2306*bbf21555SRichard Lowe.%C Murray Hill, New Jersey
2307*bbf21555SRichard Lowe.%D 1976 and 1992
2308*bbf21555SRichard Lowe.%U http://www.kohala.com/start/troff/cstr54.ps
2309*bbf21555SRichard Lowe.Re
2310*bbf21555SRichard Lowe.Rs
2311*bbf21555SRichard Lowe.%A Joseph F. Ossanna
2312*bbf21555SRichard Lowe.%A Brian W. Kernighan
2313*bbf21555SRichard Lowe.%A Gunnar Ritter
2314*bbf21555SRichard Lowe.%T Heirloom Documentation Tools Nroff/Troff User's Manual
2315*bbf21555SRichard Lowe.%D September 17, 2007
2316*bbf21555SRichard Lowe.%U http://heirloom.sourceforge.net/doctools/troff.pdf
2317*bbf21555SRichard Lowe.Re
2318*bbf21555SRichard Lowe.Sh HISTORY
2319*bbf21555SRichard LoweThe RUNOFF typesetting system, whose input forms the basis for
2320*bbf21555SRichard Lowe.Nm ,
2321*bbf21555SRichard Lowewas written in MAD and FAP for the CTSS operating system by Jerome E.
2322*bbf21555SRichard LoweSaltzer in 1964.
2323*bbf21555SRichard LoweDoug McIlroy rewrote it in BCPL in 1969, renaming it
2324*bbf21555SRichard Lowe.Nm .
2325*bbf21555SRichard LoweDennis M. Ritchie rewrote McIlroy's
2326*bbf21555SRichard Lowe.Nm
2327*bbf21555SRichard Lowein PDP-11 assembly for
2328*bbf21555SRichard Lowe.At v1 ,
2329*bbf21555SRichard LoweJoseph F. Ossanna improved roff and renamed it nroff
2330*bbf21555SRichard Lowefor
2331*bbf21555SRichard Lowe.At v2 ,
2332*bbf21555SRichard Lowethen ported nroff to C as troff, which Brian W. Kernighan released with
2333*bbf21555SRichard Lowe.At v7 .
2334*bbf21555SRichard LoweIn 1989, James Clark re-implemented troff in C++, naming it groff.
2335*bbf21555SRichard Lowe.Sh AUTHORS
2336*bbf21555SRichard Lowe.An -nosplit
2337*bbf21555SRichard LoweThis
2338*bbf21555SRichard Lowe.Nm
2339*bbf21555SRichard Lowereference was written by
2340*bbf21555SRichard Lowe.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
2341*bbf21555SRichard Loweand
2342*bbf21555SRichard Lowe.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2343