xref: /netbsd-src/external/bsd/mdocml/dist/roff.7 (revision 544c191c349c1704c9d5e679d12ec15cff579663)
1*544c191cSchristos.\"	Id: roff.7,v 1.111 2019/01/01 03:45:29 schwarze Exp
20a84adc5Sjoerg.\"
370f041f9Sjoerg.\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4*544c191cSchristos.\" Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>
50a84adc5Sjoerg.\"
60a84adc5Sjoerg.\" Permission to use, copy, modify, and distribute this software for any
70a84adc5Sjoerg.\" purpose with or without fee is hereby granted, provided that the above
80a84adc5Sjoerg.\" copyright notice and this permission notice appear in all copies.
90a84adc5Sjoerg.\"
100a84adc5Sjoerg.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
110a84adc5Sjoerg.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
120a84adc5Sjoerg.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
130a84adc5Sjoerg.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
140a84adc5Sjoerg.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
150a84adc5Sjoerg.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
160a84adc5Sjoerg.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
170a84adc5Sjoerg.\"
18*544c191cSchristos.Dd January 1, 2019
190a84adc5Sjoerg.Dt ROFF 7
200a84adc5Sjoerg.Os
210a84adc5Sjoerg.Sh NAME
220a84adc5Sjoerg.Nm roff
23c0d9444aSjoerg.Nd roff language reference for mandoc
240a84adc5Sjoerg.Sh DESCRIPTION
250a84adc5SjoergThe
260a84adc5Sjoerg.Nm roff
27c0d9444aSjoerglanguage is a general purpose text formatting language.
28c5f73b34SjoergSince traditional implementations of the
29c0d9444aSjoerg.Xr mdoc 7
30c0d9444aSjoergand
31c0d9444aSjoerg.Xr man 7
32c5f73b34Sjoergmanual formatting languages are based on it,
33c5f73b34Sjoergmany real-world manuals use small numbers of
340a84adc5Sjoerg.Nm
3570f041f9Sjoergrequests and escape sequences intermixed with their
36c5f73b34Sjoerg.Xr mdoc 7
370a84adc5Sjoergor
38c5f73b34Sjoerg.Xr man 7
39c5f73b34Sjoergcode.
40c5f73b34SjoergTo properly format such manuals, the
41c5f73b34Sjoerg.Xr mandoc 1
42*544c191cSchristosutility supports a subset of
43c5f73b34Sjoerg.Nm
4470f041f9Sjoergrequests and escapes.
45*544c191cSchristosEven though this manual page lists all
46*544c191cSchristos.Nm
47*544c191cSchristosrequests and escape sequences, it only contains partial information
48*544c191cSchristosabout requests not supported by
49c5f73b34Sjoerg.Xr mandoc 1
50*544c191cSchristosand about language features that do not matter for manual pages.
51c5f73b34SjoergFor complete
52c5f73b34Sjoerg.Nm
53c5f73b34Sjoergmanuals, consult the
54c5f73b34Sjoerg.Sx SEE ALSO
55c5f73b34Sjoergsection.
56c0d9444aSjoerg.Pp
57c5f73b34SjoergInput lines beginning with the control character
58c5f73b34Sjoerg.Sq \&.
59c5f73b34Sjoergare parsed for requests and macros.
60c5f73b34SjoergSuch lines are called
61c5f73b34Sjoerg.Dq request lines
62c5f73b34Sjoergor
63c5f73b34Sjoerg.Dq macro lines ,
64c5f73b34Sjoergrespectively.
65c5f73b34SjoergRequests change the processing state and manipulate the formatting;
66c5f73b34Sjoergsome macros also define the document structure and produce formatted
67c5f73b34Sjoergoutput.
68c5f73b34SjoergThe single quote
69c5f73b34Sjoerg.Pq Qq \(aq
70c5f73b34Sjoergis accepted as an alternative control character,
71c5f73b34Sjoergtreated by
72c5f73b34Sjoerg.Xr mandoc 1
73c5f73b34Sjoergjust like
74c5f73b34Sjoerg.Ql \&.
75c5f73b34Sjoerg.Pp
76c5f73b34SjoergLines not beginning with control characters are called
77c5f73b34Sjoerg.Dq text lines .
78c5f73b34SjoergThey provide free-form text to be printed; the formatting of the text
79c5f73b34Sjoergdepends on the respective processing context.
800a84adc5Sjoerg.Sh LANGUAGE SYNTAX
810a84adc5Sjoerg.Nm
820a84adc5Sjoergdocuments may contain only graphable 7-bit ASCII characters, the space
83c0d9444aSjoergcharacter, and, in certain circumstances, the tab character.
8470f041f9SjoergThe backslash character
85c5f73b34Sjoerg.Sq \e
8670f041f9Sjoergindicates the start of an escape sequence, used for example for
87*544c191cSchristos.Sx Comments
88c5f73b34Sjoergand
89*544c191cSchristos.Sx Special Characters .
90*544c191cSchristosFor a complete listing of escape sequences, consult the
9170f041f9Sjoerg.Sx ESCAPE SEQUENCE REFERENCE
9270f041f9Sjoergbelow.
93c5f73b34Sjoerg.Ss Comments
94c5f73b34SjoergText following an escaped double-quote
95c5f73b34Sjoerg.Sq \e\(dq ,
96c5f73b34Sjoergwhether in a request, macro, or text line, is ignored to the end of the line.
97c5f73b34SjoergA request line beginning with a control character and comment escape
98c5f73b34Sjoerg.Sq \&.\e\(dq
99c5f73b34Sjoergis also ignored.
100c5f73b34SjoergFurthermore, request lines with only a control character and optional
101c5f73b34Sjoergtrailing whitespace are stripped from input.
102c5f73b34Sjoerg.Pp
103c5f73b34SjoergExamples:
104c5f73b34Sjoerg.Bd -literal -offset indent -compact
105c5f73b34Sjoerg\&.\e\(dq This is a comment line.
106c5f73b34Sjoerg\&.\e\(dq The next line is ignored:
107c5f73b34Sjoerg\&.
108c5f73b34Sjoerg\&.Sh EXAMPLES \e\(dq This is a comment, too.
109c5f73b34Sjoerg\&example text \e\(dq And so is this.
110c5f73b34Sjoerg.Ed
111c5f73b34Sjoerg.Ss Special Characters
112c5f73b34SjoergSpecial characters are used to encode special glyphs and are rendered
113c5f73b34Sjoergdifferently across output media.
114c5f73b34SjoergThey may occur in request, macro, and text lines.
115c5f73b34SjoergSequences begin with the escape character
116c5f73b34Sjoerg.Sq \e
117c5f73b34Sjoergfollowed by either an open-parenthesis
118c5f73b34Sjoerg.Sq \&(
119c5f73b34Sjoergfor two-character sequences; an open-bracket
120c5f73b34Sjoerg.Sq \&[
121c5f73b34Sjoergfor n-character sequences (terminated at a close-bracket
122c5f73b34Sjoerg.Sq \&] ) ;
123c5f73b34Sjoergor a single one character sequence.
124c5f73b34Sjoerg.Pp
125c5f73b34SjoergExamples:
126c5f73b34Sjoerg.Bl -tag -width Ds -offset indent -compact
127c5f73b34Sjoerg.It Li \e(em
128c5f73b34SjoergTwo-letter em dash escape.
129c5f73b34Sjoerg.It Li \ee
130c5f73b34SjoergOne-letter backslash escape.
131c5f73b34Sjoerg.El
132c5f73b34Sjoerg.Pp
133c5f73b34SjoergSee
134c0d9444aSjoerg.Xr mandoc_char 7
135c5f73b34Sjoergfor a complete list.
136*544c191cSchristos.Ss Font Selection
137*544c191cSchristosIn
138*544c191cSchristos.Xr mdoc 7
139*544c191cSchristosand
140*544c191cSchristos.Xr man 7
141*544c191cSchristosdocuments, fonts are usually selected with macros.
142*544c191cSchristosThe
143*544c191cSchristos.Ic \ef
144*544c191cSchristosescape sequence and the
145*544c191cSchristos.Ic \&ft
146*544c191cSchristosrequest can be used to manually change the font,
147*544c191cSchristosbut this is not recommended in
148*544c191cSchristos.Xr mdoc 7
149*544c191cSchristosdocuments.
150*544c191cSchristosSuch manual font changes are overridden by many subsequent macros.
151c5f73b34Sjoerg.Pp
152*544c191cSchristosThe following fonts are supported:
153*544c191cSchristos.Pp
154*544c191cSchristos.Bl -tag -width CW -offset indent -compact
155*544c191cSchristos.It Cm B
156*544c191cSchristosBold font.
157*544c191cSchristos.It Cm BI
158*544c191cSchristosA font that is both bold and italic.
159*544c191cSchristos.It Cm CB
160*544c191cSchristosBold constant width font.
161*544c191cSchristosSame as
162*544c191cSchristos.Cm B
163*544c191cSchristosin terminal output.
164*544c191cSchristos.It Cm CI
165*544c191cSchristosItalic constant width font.
166*544c191cSchristosSame as
167*544c191cSchristos.Cm I
168*544c191cSchristosin terminal output.
169*544c191cSchristos.It Cm CR
170*544c191cSchristosRegular constant width font.
171*544c191cSchristosSame as
172*544c191cSchristos.Cm R
173*544c191cSchristosin terminal output.
174*544c191cSchristos.It Cm CW
175*544c191cSchristosAn alias for
176*544c191cSchristos.Cm CR .
177*544c191cSchristos.It Cm I
178*544c191cSchristosItalic font.
179*544c191cSchristos.It Cm P
180*544c191cSchristosReturn to the previous font.
181*544c191cSchristosIf a macro caused a font change since the last
182*544c191cSchristos.Ic \ef
183*544c191cSchristoseascape sequence or
184*544c191cSchristos.Ic \&ft
185*544c191cSchristosrequest, this returns to the font before the last font change in
186*544c191cSchristosthe macro rather than to the font before the last manual font change.
187*544c191cSchristos.It Cm R
188*544c191cSchristosRoman font.
189*544c191cSchristosThis is the default font.
190*544c191cSchristos.It Cm 1
191*544c191cSchristosAn alias for
192*544c191cSchristos.Cm R .
193*544c191cSchristos.It Cm 2
194*544c191cSchristosAn alias for
195*544c191cSchristos.Cm I .
196*544c191cSchristos.It Cm 3
197*544c191cSchristosAn alias for
198*544c191cSchristos.Cm B .
199*544c191cSchristos.It Cm 4
200*544c191cSchristosAn alias for
201*544c191cSchristos.Cm BI .
202*544c191cSchristos.El
20370f041f9Sjoerg.Pp
204c5f73b34SjoergExamples:
205c5f73b34Sjoerg.Bl -tag -width Ds -offset indent -compact
206c5f73b34Sjoerg.It Li \efBbold\efR
20770f041f9SjoergWrite in \fBbold\fP, then switch to regular font mode.
208c5f73b34Sjoerg.It Li \efIitalic\efP
20970f041f9SjoergWrite in \fIitalic\fP, then return to previous font mode.
21070f041f9Sjoerg.It Li \ef(BIbold italic\efP
21170f041f9SjoergWrite in \f(BIbold italic\fP, then return to previous font mode.
212c5f73b34Sjoerg.El
213c5f73b34Sjoerg.Ss Whitespace
214c5f73b34SjoergWhitespace consists of the space character.
215c5f73b34SjoergIn text lines, whitespace is preserved within a line.
216c5f73b34SjoergIn request and macro lines, whitespace delimits arguments and is discarded.
217c5f73b34Sjoerg.Pp
218c5f73b34SjoergUnescaped trailing spaces are stripped from text line input unless in a
219c5f73b34Sjoergliteral context.
220c5f73b34SjoergIn general, trailing whitespace on any input line is discouraged for
221c5f73b34Sjoergreasons of portability.
222*544c191cSchristosIn the rare case that a space character is needed at the end of an
223c5f73b34Sjoerginput line, it may be forced by
224c5f73b34Sjoerg.Sq \e\ \e& .
225c5f73b34Sjoerg.Pp
226c5f73b34SjoergLiteral space characters can be produced in the output
227c5f73b34Sjoergusing escape sequences.
228c5f73b34SjoergIn macro lines, they can also be included in arguments using quotation; see
229c5f73b34Sjoerg.Sx MACRO SYNTAX
230c5f73b34Sjoergfor details.
231c5f73b34Sjoerg.Pp
232c5f73b34SjoergBlank text lines, which may include whitespace, are only permitted
233c5f73b34Sjoergwithin literal contexts.
234c5f73b34SjoergIf the first character of a text line is a space, that line is printed
235c5f73b34Sjoergwith a leading newline.
236c5f73b34Sjoerg.Ss Scaling Widths
237c5f73b34SjoergMany requests and macros support scaled widths for their arguments.
238c5f73b34SjoergThe syntax for a scaled width is
239c5f73b34Sjoerg.Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
240c5f73b34Sjoergwhere a decimal must be preceded or followed by at least one digit.
241c5f73b34Sjoerg.Pp
242c5f73b34SjoergThe following scaling units are accepted:
243c5f73b34Sjoerg.Pp
244c5f73b34Sjoerg.Bl -tag -width Ds -offset indent -compact
245c5f73b34Sjoerg.It c
246c5f73b34Sjoergcentimetre
247c5f73b34Sjoerg.It i
248c5f73b34Sjoerginch
249c5f73b34Sjoerg.It P
250*544c191cSchristospica (1/6 inch)
251c5f73b34Sjoerg.It p
252*544c191cSchristospoint (1/72 inch)
253c5f73b34Sjoerg.It f
254fec65c98Schristosscale
255c5f73b34Sjoerg.Sq u
256fec65c98Schristosby 65536
257c5f73b34Sjoerg.It v
258c5f73b34Sjoergdefault vertical span
259c5f73b34Sjoerg.It m
260c5f73b34Sjoergwidth of rendered
261c5f73b34Sjoerg.Sq m
262c5f73b34Sjoerg.Pq em
263c5f73b34Sjoergcharacter
264c5f73b34Sjoerg.It n
265c5f73b34Sjoergwidth of rendered
266c5f73b34Sjoerg.Sq n
267c5f73b34Sjoerg.Pq en
268c5f73b34Sjoergcharacter
269c5f73b34Sjoerg.It u
270fec65c98Schristosdefault horizontal span for the terminal
271c5f73b34Sjoerg.It M
272*544c191cSchristosmini-em (1/100 em)
273c5f73b34Sjoerg.El
274c5f73b34Sjoerg.Pp
275c5f73b34SjoergUsing anything other than
276c5f73b34Sjoerg.Sq m ,
277c5f73b34Sjoerg.Sq n ,
278c5f73b34Sjoergor
279c5f73b34Sjoerg.Sq v
280c5f73b34Sjoergis necessarily non-portable across output media.
281c5f73b34SjoergSee
282c5f73b34Sjoerg.Sx COMPATIBILITY .
283c5f73b34Sjoerg.Pp
284c5f73b34SjoergIf a scaling unit is not provided, the numerical value is interpreted
285c5f73b34Sjoergunder the default rules of
286c5f73b34Sjoerg.Sq v
287c5f73b34Sjoergfor vertical spaces and
288c5f73b34Sjoerg.Sq u
289c5f73b34Sjoergfor horizontal ones.
290c5f73b34Sjoerg.Pp
291c5f73b34SjoergExamples:
292c5f73b34Sjoerg.Bl -tag -width ".Bl -tag -width 2i" -offset indent -compact
293c5f73b34Sjoerg.It Li \&.Bl -tag -width 2i
294c5f73b34Sjoergtwo-inch tagged list indentation in
295c5f73b34Sjoerg.Xr mdoc 7
296c5f73b34Sjoerg.It Li \&.HP 2i
297c5f73b34Sjoergtwo-inch tagged list indentation in
298c5f73b34Sjoerg.Xr man 7
299c5f73b34Sjoerg.It Li \&.sp 2v
300c5f73b34Sjoergtwo vertical spaces
301c5f73b34Sjoerg.El
302c5f73b34Sjoerg.Ss Sentence Spacing
303c5f73b34SjoergEach sentence should terminate at the end of an input line.
304c5f73b34SjoergBy doing this, a formatter will be able to apply the proper amount of
305c5f73b34Sjoergspacing after the end of sentence (unescaped) period, exclamation mark,
306c5f73b34Sjoergor question mark followed by zero or more non-sentence closing
307c5f73b34Sjoergdelimiters
308c5f73b34Sjoerg.Po
309c5f73b34Sjoerg.Sq \&) ,
310c5f73b34Sjoerg.Sq \&] ,
311c5f73b34Sjoerg.Sq \&' ,
312c5f73b34Sjoerg.Sq \&"
313c5f73b34Sjoerg.Pc .
314c5f73b34Sjoerg.Pp
315c5f73b34SjoergThe proper spacing is also intelligently preserved if a sentence ends at
316c5f73b34Sjoergthe boundary of a macro line.
317c5f73b34Sjoerg.Pp
318c5f73b34SjoergExamples:
319c5f73b34Sjoerg.Bd -literal -offset indent -compact
320c5f73b34SjoergDo not end sentences mid-line like this.  Instead,
321c5f73b34Sjoergend a sentence like this.
322c5f73b34SjoergA macro would end like this:
323c5f73b34Sjoerg\&.Xr mandoc 1 \&.
324c5f73b34Sjoerg.Ed
325c0d9444aSjoerg.Sh REQUEST SYNTAX
326c0d9444aSjoergA request or macro line consists of:
327c0d9444aSjoerg.Pp
328c0d9444aSjoerg.Bl -enum -compact
329c0d9444aSjoerg.It
330c0d9444aSjoergthe control character
331c0d9444aSjoerg.Sq \&.
3320a84adc5Sjoergor
333c0d9444aSjoerg.Sq \(aq
334c0d9444aSjoergat the beginning of the line,
335c0d9444aSjoerg.It
336c0d9444aSjoergoptionally an arbitrary amount of whitespace,
337c0d9444aSjoerg.It
338c0d9444aSjoergthe name of the request or the macro, which is one word of arbitrary
339c0d9444aSjoerglength, terminated by whitespace,
340c0d9444aSjoerg.It
341c0d9444aSjoergand zero or more arguments delimited by whitespace.
342c0d9444aSjoerg.El
343c0d9444aSjoerg.Pp
344c0d9444aSjoergThus, the following request lines are all equivalent:
3450a84adc5Sjoerg.Bd -literal -offset indent
346c0d9444aSjoerg\&.ig end
347c0d9444aSjoerg\&.ig    end
348c0d9444aSjoerg\&.   ig end
3490a84adc5Sjoerg.Ed
35048741257Sjoerg.Sh MACRO SYNTAX
351c5f73b34SjoergMacros are provided by the
352c5f73b34Sjoerg.Xr mdoc 7
353c5f73b34Sjoergand
354c5f73b34Sjoerg.Xr man 7
355c5f73b34Sjoerglanguages and can be defined by the
356*544c191cSchristos.Ic \&de
35748741257Sjoergrequest.
35848741257SjoergWhen called, they follow the same syntax as requests, except that
35948741257Sjoergmacro arguments may optionally be quoted by enclosing them
36048741257Sjoergin double quote characters
36148741257Sjoerg.Pq Sq \(dq .
362c5f73b34SjoergQuoted text, even if it contains whitespace or would cause
363c5f73b34Sjoerga macro invocation when unquoted, is always considered literal text.
364c5f73b34SjoergInside quoted text, pairs of double quote characters
36548741257Sjoerg.Pq Sq Qq
36648741257Sjoergresolve to single double quote characters.
367c5f73b34Sjoerg.Pp
368c5f73b34SjoergTo be recognised as the beginning of a quoted argument, the opening
369c5f73b34Sjoergquote character must be preceded by a space character.
37048741257SjoergA quoted argument extends to the next double quote character that is not
37148741257Sjoergpart of a pair, or to the end of the input line, whichever comes earlier.
37248741257SjoergLeaving out the terminating double quote character at the end of the line
37348741257Sjoergis discouraged.
37448741257SjoergFor clarity, if more arguments follow on the same input line,
37548741257Sjoergit is recommended to follow the terminating double quote character
37648741257Sjoergby a space character; in case the next character after the terminating
37748741257Sjoergdouble quote character is anything else, it is regarded as the beginning
37848741257Sjoergof the next, unquoted argument.
37948741257Sjoerg.Pp
38048741257SjoergBoth in quoted and unquoted arguments, pairs of backslashes
38148741257Sjoerg.Pq Sq \e\e
38248741257Sjoergresolve to single backslashes.
38348741257SjoergIn unquoted arguments, space characters can alternatively be included
38448741257Sjoergby preceding them with a backslash
38548741257Sjoerg.Pq Sq \e\~ ,
38648741257Sjoergbut quoting is usually better for clarity.
387c5f73b34Sjoerg.Pp
388c5f73b34SjoergExamples:
389c5f73b34Sjoerg.Bl -tag -width Ds -offset indent -compact
390c5f73b34Sjoerg.It Li .Fn strlen \(dqconst char *s\(dq
391c5f73b34SjoergGroup arguments
392c5f73b34Sjoerg.Qq const char *s
393c5f73b34Sjoerginto one function argument.
394c5f73b34SjoergIf unspecified,
395c5f73b34Sjoerg.Qq const ,
396c5f73b34Sjoerg.Qq char ,
397c5f73b34Sjoergand
398c5f73b34Sjoerg.Qq *s
399c5f73b34Sjoergwould be considered separate arguments.
400c5f73b34Sjoerg.It Li .Op \(dqFl a\(dq
401c5f73b34SjoergConsider
402c5f73b34Sjoerg.Qq \&Fl a
403c5f73b34Sjoergas literal text instead of a flag macro.
404c5f73b34Sjoerg.El
405c0d9444aSjoerg.Sh REQUEST REFERENCE
406c0d9444aSjoergThe
407c0d9444aSjoerg.Xr mandoc 1
408c0d9444aSjoerg.Nm
409c5f73b34Sjoergparser recognises the following requests.
410fec65c98SchristosFor requests marked as "ignored" or "unsupported", any arguments are
411fec65c98Schristosignored, and the number of arguments is not checked.
412c9bcef03Schristos.Bl -tag -width Ds
413c9bcef03Schristos.It Ic \&ab Op Ar message
414fec65c98SchristosAbort processing.
415fec65c98SchristosCurrently unsupported.
416c9bcef03Schristos.It Ic \&ad Op Cm b | c | l | n | r
417c9bcef03SchristosSet line adjustment mode for subsequent text.
418fec65c98SchristosCurrently ignored.
419c9bcef03Schristos.It Ic \&af Ar registername format
420fec65c98SchristosAssign an output format to a number register.
421fec65c98SchristosCurrently ignored.
422c9bcef03Schristos.It Ic \&aln Ar newname oldname
423fec65c98SchristosCreate an alias for a number register.
424fec65c98SchristosCurrently unsupported.
425c9bcef03Schristos.It Ic \&als Ar newname oldname
426fec65c98SchristosCreate an alias for a request, string, macro, or diversion.
427c9bcef03Schristos.It Ic \&am Ar macroname Op Ar endmacro
428c0d9444aSjoergAppend to a macro definition.
429c0d9444aSjoergThe syntax of this request is the same as that of
430c9bcef03Schristos.Ic \&de .
431c9bcef03Schristos.It Ic \&am1 Ar macroname Op Ar endmacro
432c0d9444aSjoergAppend to a macro definition, switching roff compatibility mode off
433fec65c98Schristosduring macro execution (groff extension).
434c0d9444aSjoergThe syntax of this request is the same as that of
435c9bcef03Schristos.Ic \&de1 .
436fec65c98SchristosSince
437fec65c98Schristos.Xr mandoc 1
438fec65c98Schristosdoes not implement
439fec65c98Schristos.Nm
440fec65c98Schristoscompatibility mode at all, it handles this request as an alias for
441c9bcef03Schristos.Ic \&am .
442c9bcef03Schristos.It Ic \&ami Ar macrostring Op Ar endstring
443fec65c98SchristosAppend to a macro definition, specifying the macro name indirectly
444fec65c98Schristos(groff extension).
445fec65c98SchristosThe syntax of this request is the same as that of
446c9bcef03Schristos.Ic \&dei .
447c9bcef03Schristos.It Ic \&ami1 Ar macrostring Op Ar endstring
448fec65c98SchristosAppend to a macro definition, specifying the macro name indirectly
449fec65c98Schristosand switching roff compatibility mode off during macro execution
450fec65c98Schristos(groff extension).
451fec65c98SchristosThe syntax of this request is the same as that of
452c9bcef03Schristos.Ic \&dei1 .
453fec65c98SchristosSince
454fec65c98Schristos.Xr mandoc 1
455fec65c98Schristosdoes not implement
456fec65c98Schristos.Nm
457fec65c98Schristoscompatibility mode at all, it handles this request as an alias for
458c9bcef03Schristos.Ic \&ami .
459c9bcef03Schristos.It Ic \&as Ar stringname Op Ar string
460fec65c98SchristosAppend to a user-defined string.
461fec65c98SchristosThe syntax of this request is the same as that of
462*544c191cSchristos.Ic \&ds .
463fec65c98SchristosIf a user-defined string with the specified name does not yet exist,
464fec65c98Schristosit is set to the empty string before appending.
465c9bcef03Schristos.It Ic \&as1 Ar stringname Op Ar string
466fec65c98SchristosAppend to a user-defined string, switching roff compatibility mode off
467fec65c98Schristosduring macro execution (groff extension).
468fec65c98SchristosThe syntax of this request is the same as that of
469c9bcef03Schristos.Ic \&ds1 .
470fec65c98SchristosSince
471fec65c98Schristos.Xr mandoc 1
472fec65c98Schristosdoes not implement
473fec65c98Schristos.Nm
474fec65c98Schristoscompatibility mode at all, it handles this request as an alias for
475c9bcef03Schristos.Ic \&as .
476c9bcef03Schristos.It Ic \&asciify Ar divname
477fec65c98SchristosFully unformat a diversion.
478fec65c98SchristosCurrently unsupported.
479c9bcef03Schristos.It Ic \&backtrace
480fec65c98SchristosPrint a backtrace of the input stack.
481fec65c98SchristosThis is a groff extension and currently ignored.
482c9bcef03Schristos.It Ic \&bd Ar font Oo Ar curfont Oc Op Ar offset
483fec65c98SchristosArtificially embolden by repeated printing with small shifts.
484fec65c98SchristosCurrently ignored.
485c9bcef03Schristos.It Ic \&bleedat Ar left top width height
486fec65c98SchristosSet the BleedBox page parameter for PDF generation.
487fec65c98SchristosThis is a Heirloom extension and currently ignored.
488c9bcef03Schristos.It Ic \&blm Ar macroname
489fec65c98SchristosSet a blank line trap.
490fec65c98SchristosCurrently unsupported.
491c9bcef03Schristos.It Ic \&box Ar divname
492fec65c98SchristosBegin a diversion without including a partially filled line.
493fec65c98SchristosCurrently unsupported.
494c9bcef03Schristos.It Ic \&boxa Ar divname
495fec65c98SchristosAdd to a diversion without including a partially filled line.
496fec65c98SchristosCurrently unsupported.
497c9bcef03Schristos.It Ic \&bp Oo Cm + Ns | Ns Cm - Oc Ns Ar pagenumber
498c9bcef03SchristosBegin a new page.
499fec65c98SchristosCurrently ignored.
500c9bcef03Schristos.It Ic \&BP Ar source height width position offset flags label
501fec65c98SchristosDefine a frame and place a picture in it.
502fec65c98SchristosThis is a Heirloom extension and currently unsupported.
503c9bcef03Schristos.It Ic \&br
504fec65c98SchristosBreak the output line.
505c9bcef03Schristos.It Ic \&break
506fec65c98SchristosBreak out of a
507c9bcef03Schristos.Ic \&while
508fec65c98Schristosloop.
509fec65c98SchristosCurrently unsupported.
510c9bcef03Schristos.It Ic \&breakchar Ar char ...
511fec65c98SchristosOptional line break characters.
512fec65c98SchristosThis is a Heirloom extension and currently ignored.
513c9bcef03Schristos.It Ic \&brnl Ar N
514c9bcef03SchristosBreak output line after the next
515c9bcef03Schristos.Ar N
516c9bcef03Schristosinput lines.
517fec65c98SchristosThis is a Heirloom extension and currently ignored.
518c9bcef03Schristos.It Ic \&brp
519fec65c98SchristosBreak and spread output line.
520fec65c98SchristosCurrently, this is implemented as an alias for
521c9bcef03Schristos.Ic \&br .
522c9bcef03Schristos.It Ic \&brpnl Ar N
523c9bcef03SchristosBreak and spread output line after the next
524c9bcef03Schristos.Ar N
525c9bcef03Schristosinput lines.
526fec65c98SchristosThis is a Heirloom extension and currently ignored.
527c9bcef03Schristos.It Ic \&c2 Op Ar char
528fec65c98SchristosChange the no-break control character.
529fec65c98SchristosCurrently unsupported.
530c9bcef03Schristos.It Ic \&cc Op Ar char
531fec65c98SchristosChange the control character.
53270f041f9SjoergIf
533c9bcef03Schristos.Ar char
53470f041f9Sjoergis not specified, the control character is reset to
53570f041f9Sjoerg.Sq \&. .
53670f041f9SjoergTrailing characters are ignored.
537c9bcef03Schristos.It Ic \&ce Op Ar N
538c9bcef03SchristosCenter the next
539c9bcef03Schristos.Ar N
540c9bcef03Schristosinput lines without filling.
541c9bcef03Schristos.Ar N
542c9bcef03Schristosdefaults to 1.
543c9bcef03SchristosAn argument of 0 or less ends centering.
544c9bcef03SchristosCurrently, high level macros abort centering.
545c9bcef03Schristos.It Ic \&cf Ar filename
546fec65c98SchristosOutput the contents of a file.
547fec65c98SchristosIgnored because insecure.
548c9bcef03Schristos.It Ic \&cflags Ar flags char ...
549fec65c98SchristosSet character flags.
550fec65c98SchristosThis is a groff extension and currently ignored.
551c9bcef03Schristos.It Ic \&ch Ar macroname Op Ar dist
552fec65c98SchristosChange a trap location.
553fec65c98SchristosCurrently ignored.
554*544c191cSchristos.It Ic \&char Ar glyph Op Ar string
555*544c191cSchristosDefine or redefine the ASCII character or character escape sequence
556*544c191cSchristos.Ar glyph
557*544c191cSchristosto be rendered as
558*544c191cSchristos.Ar string ,
559*544c191cSchristoswhich can be empty.
560*544c191cSchristosOnly partially supported in
561*544c191cSchristos.Xr mandoc 1 ;
562*544c191cSchristosmay interact incorrectly with
563*544c191cSchristos.Ic \&tr .
564c9bcef03Schristos.It Ic \&chop Ar stringname
565fec65c98SchristosRemove the last character from a macro, string, or diversion.
566fec65c98SchristosCurrently unsupported.
567c9bcef03Schristos.It Ic \&class Ar classname char ...
568fec65c98SchristosDefine a character class.
569fec65c98SchristosThis is a groff extension and currently ignored.
570c9bcef03Schristos.It Ic \&close Ar streamname
571fec65c98SchristosClose an open file.
572fec65c98SchristosIgnored because insecure.
573c9bcef03Schristos.It Ic \&CL Ar color text
574fec65c98SchristosPrint text in color.
575fec65c98SchristosThis is a Heirloom extension and currently unsupported.
576c9bcef03Schristos.It Ic \&color Op Cm 1 | 0
577fec65c98SchristosActivate or deactivate colors.
578fec65c98SchristosThis is a groff extension and currently ignored.
579c9bcef03Schristos.It Ic \&composite Ar from to
580fec65c98SchristosDefine a name component for composite glyph names.
581fec65c98SchristosThis is a groff extension and currently unsupported.
582c9bcef03Schristos.It Ic \&continue
583fec65c98SchristosImmediately start the next iteration of a
584c9bcef03Schristos.Ic \&while
585fec65c98Schristosloop.
586fec65c98SchristosCurrently unsupported.
587c9bcef03Schristos.It Ic \&cp Op Cm 1 | 0
588fec65c98SchristosSwitch
589fec65c98Schristos.Nm
590fec65c98Schristoscompatibility mode on or off.
591fec65c98SchristosCurrently ignored.
592c9bcef03Schristos.It Ic \&cropat Ar left top width height
593fec65c98SchristosSet the CropBox page parameter for PDF generation.
594fec65c98SchristosThis is a Heirloom extension and currently ignored.
595c9bcef03Schristos.It Ic \&cs Ar font Op Ar width Op Ar emsize
596fec65c98SchristosConstant character spacing mode.
597fec65c98SchristosCurrently ignored.
598c9bcef03Schristos.It Ic \&cu Op Ar N
599c9bcef03SchristosUnderline next
600c9bcef03Schristos.Ar N
601c9bcef03Schristosinput lines including whitespace.
602fec65c98SchristosCurrently ignored.
603c9bcef03Schristos.It Ic \&da Ar divname
604fec65c98SchristosAppend to a diversion.
605fec65c98SchristosCurrently unsupported.
606c9bcef03Schristos.It Ic \&dch Ar macroname Op Ar dist
607fec65c98SchristosChange a trap location in the current diversion.
608fec65c98SchristosThis is a Heirloom extension and currently unsupported.
609c9bcef03Schristos.It Ic \&de Ar macroname Op Ar endmacro
610c0d9444aSjoergDefine a
611c0d9444aSjoerg.Nm
612c0d9444aSjoergmacro.
613c0d9444aSjoergIts syntax can be either
614c0d9444aSjoerg.Bd -literal -offset indent
615c9bcef03Schristos.Pf . Ic \&de Ar macroname
616c9bcef03Schristos.Ar definition
617c0d9444aSjoerg\&..
618c0d9444aSjoerg.Ed
619c0d9444aSjoerg.Pp
620c0d9444aSjoergor
621c0d9444aSjoerg.Bd -literal -offset indent
622c9bcef03Schristos.Pf . Ic \&de Ar macroname Ar endmacro
623c9bcef03Schristos.Ar definition
624c9bcef03Schristos.Pf . Ar endmacro
625c0d9444aSjoerg.Ed
626c0d9444aSjoerg.Pp
627c0d9444aSjoergBoth forms define or redefine the macro
628c9bcef03Schristos.Ar macroname
629c0d9444aSjoergto represent the
630c9bcef03Schristos.Ar definition ,
631c0d9444aSjoergwhich may consist of one or more input lines, including the newline
632c0d9444aSjoergcharacters terminating each line, optionally containing calls to
633c0d9444aSjoerg.Nm
634c0d9444aSjoergrequests,
635c0d9444aSjoerg.Nm
636c0d9444aSjoergmacros or high-level macros like
637c0d9444aSjoerg.Xr man 7
638c0d9444aSjoergor
639c0d9444aSjoerg.Xr mdoc 7
640c0d9444aSjoergmacros, whichever applies to the document in question.
641c0d9444aSjoerg.Pp
642c0d9444aSjoergSpecifying a custom
643c9bcef03Schristos.Ar endmacro
644*544c191cSchristosworks in the same way as for
645c9bcef03Schristos.Ic \&ig ;
646c0d9444aSjoergnamely, the call to
647c9bcef03Schristos.Sq Pf . Ar endmacro
648c0d9444aSjoergfirst ends the
649c9bcef03Schristos.Ar definition ,
650c0d9444aSjoergand after that, it is also evaluated as a
651c0d9444aSjoerg.Nm
652c0d9444aSjoergrequest or
653c0d9444aSjoerg.Nm
654c0d9444aSjoergmacro, but not as a high-level macro.
655c0d9444aSjoerg.Pp
656c0d9444aSjoergThe macro can be invoked later using the syntax
657c0d9444aSjoerg.Pp
658c9bcef03Schristos.D1 Pf . Ar macroname Op Ar argument Op Ar argument ...
659c0d9444aSjoerg.Pp
66048741257SjoergRegarding argument parsing, see
66148741257Sjoerg.Sx MACRO SYNTAX
66248741257Sjoergabove.
663c0d9444aSjoerg.Pp
664c0d9444aSjoergThe line invoking the macro will be replaced
665c0d9444aSjoergin the input stream by the
666c9bcef03Schristos.Ar definition ,
667c0d9444aSjoergreplacing all occurrences of
668c0d9444aSjoerg.No \e\e$ Ns Ar N ,
669c0d9444aSjoergwhere
670c0d9444aSjoerg.Ar N
671c0d9444aSjoergis a digit, by the
672c0d9444aSjoerg.Ar N Ns th Ar argument .
673c0d9444aSjoergFor example,
674c0d9444aSjoerg.Bd -literal -offset indent
675c0d9444aSjoerg\&.de ZN
676c0d9444aSjoerg\efI\e^\e\e$1\e^\efP\e\e$2
677c0d9444aSjoerg\&..
678c0d9444aSjoerg\&.ZN XtFree .
679c0d9444aSjoerg.Ed
680c0d9444aSjoerg.Pp
681c0d9444aSjoergproduces
682c0d9444aSjoerg.Pp
683c0d9444aSjoerg.D1 \efI\e^XtFree\e^\efP.
684c0d9444aSjoerg.Pp
685c0d9444aSjoergin the input stream, and thus in the output: \fI\^XtFree\^\fP.
6869ff1f2acSchristosEach occurrence of \e\e$* is replaced with all the arguments,
687*544c191cSchristosjoined together with single space characters.
688*544c191cSchristosThe variant \e\e$@ is similar, except that each argument is
689*544c191cSchristosindividually quoted.
690c0d9444aSjoerg.Pp
691c0d9444aSjoergSince macros and user-defined strings share a common string table,
692c0d9444aSjoergdefining a macro
693c9bcef03Schristos.Ar macroname
694c0d9444aSjoergclobbers the user-defined string
695c9bcef03Schristos.Ar macroname ,
696c0d9444aSjoergand the
697c9bcef03Schristos.Ar definition
698c0d9444aSjoergcan also be printed using the
699c0d9444aSjoerg.Sq \e*
700c0d9444aSjoergstring interpolation syntax described below
701c9bcef03Schristos.Ic ds ,
702c0d9444aSjoergbut this is rarely useful because every macro definition contains at least
703c0d9444aSjoergone explicit newline character.
704c0d9444aSjoerg.Pp
705c0d9444aSjoergIn order to prevent endless recursion, both groff and
706c0d9444aSjoerg.Xr mandoc 1
707c0d9444aSjoerglimit the stack depth for expanding macros and strings
708fec65c98Schristosto a large, but finite number, and
709fec65c98Schristos.Xr mandoc 1
710fec65c98Schristosalso limits the length of the expanded input line.
711fec65c98SchristosDo not rely on the exact values of these limits.
712c9bcef03Schristos.It Ic \&de1 Ar macroname Op Ar endmacro
713c0d9444aSjoergDefine a
714c0d9444aSjoerg.Nm
715c0d9444aSjoergmacro that will be executed with
716c0d9444aSjoerg.Nm
717c0d9444aSjoergcompatibility mode switched off during macro execution.
718fec65c98SchristosThis is a groff extension.
719c0d9444aSjoergSince
720c0d9444aSjoerg.Xr mandoc 1
721c0d9444aSjoergdoes not implement
722c0d9444aSjoerg.Nm
723c0d9444aSjoergcompatibility mode at all, it handles this request as an alias for
724c9bcef03Schristos.Ic \&de .
725c9bcef03Schristos.It Ic \&defcolor Ar newname scheme component ...
726fec65c98SchristosDefine a color name.
727fec65c98SchristosThis is a groff extension and currently ignored.
728c9bcef03Schristos.It Ic \&dei Ar macrostring Op Ar endstring
729fec65c98SchristosDefine a
730fec65c98Schristos.Nm
731fec65c98Schristosmacro, specifying the macro name indirectly (groff extension).
732fec65c98SchristosThe syntax of this request is the same as that of
733c9bcef03Schristos.Ic \&de .
734c9bcef03SchristosThe effect is the same as:
735fec65c98Schristos.Pp
736c9bcef03Schristos.D1 Pf . Cm \&de No \e* Ns Bo Ar macrostring Bc Op \e* Ns Bq Ar endstring
737c9bcef03Schristos.It Ic \&dei1 Ar macrostring Op Ar endstring
738fec65c98SchristosDefine a
739fec65c98Schristos.Nm
740fec65c98Schristosmacro that will be executed with
741fec65c98Schristos.Nm
742fec65c98Schristoscompatibility mode switched off during macro execution,
743fec65c98Schristosspecifying the macro name indirectly (groff extension).
744fec65c98SchristosSince
745fec65c98Schristos.Xr mandoc 1
746fec65c98Schristosdoes not implement
747fec65c98Schristos.Nm
748fec65c98Schristoscompatibility mode at all, it handles this request as an alias for
749c9bcef03Schristos.Ic \&dei .
750c9bcef03Schristos.It Ic \&device Ar string ...
751c9bcef03Schristos.It Ic \&devicem Ar stringname
752c9bcef03SchristosThese two requests only make sense with the groff-specific intermediate
753c9bcef03Schristosoutput format and are unsupported.
754c9bcef03Schristos.It Ic \&di Ar divname
755fec65c98SchristosBegin a diversion.
756fec65c98SchristosCurrently unsupported.
757c9bcef03Schristos.It Ic \&do Ar command Op Ar argument ...
758fec65c98SchristosExecute
759fec65c98Schristos.Nm
760fec65c98Schristosrequest or macro line with compatibility mode disabled.
761fec65c98SchristosCurrently unsupported.
762c9bcef03Schristos.It Ic \&ds Ar stringname Op Oo \(dq Oc Ns Ar string
763c0d9444aSjoergDefine a user-defined string.
76482361f10SjoergThe
765c9bcef03Schristos.Ar stringname
76682361f10Sjoergand
767c0d9444aSjoerg.Ar string
768c0d9444aSjoergarguments are space-separated.
769c0d9444aSjoergIf the
770c0d9444aSjoerg.Ar string
771c0d9444aSjoergbegins with a double-quote character, that character will not be part
772c0d9444aSjoergof the string.
773c0d9444aSjoergAll remaining characters on the input line form the
774c0d9444aSjoerg.Ar string ,
775c0d9444aSjoergincluding whitespace and double-quote characters, even trailing ones.
7767da9b934Sjoerg.Pp
777c0d9444aSjoergThe
778c0d9444aSjoerg.Ar string
779c0d9444aSjoergcan be interpolated into subsequent text by using
780c9bcef03Schristos.No \e* Ns Bq Ar stringname
781c0d9444aSjoergfor a
782c9bcef03Schristos.Ar stringname
783c0d9444aSjoergof arbitrary length, or \e*(NN or \e*N if the length of
784c9bcef03Schristos.Ar stringname
785c0d9444aSjoergis two or one characters, respectively.
786c0d9444aSjoergInterpolation can be prevented by escaping the leading backslash;
787c0d9444aSjoergthat is, an asterisk preceded by an even number of backslashes
788c0d9444aSjoergdoes not trigger string interpolation.
789c0d9444aSjoerg.Pp
790c0d9444aSjoergSince user-defined strings and macros share a common string table,
791c0d9444aSjoergdefining a string
792c9bcef03Schristos.Ar stringname
793c0d9444aSjoergclobbers the macro
794c9bcef03Schristos.Ar stringname ,
795c0d9444aSjoergand the
796c9bcef03Schristos.Ar stringname
797c0d9444aSjoergused for defining a string can also be invoked as a macro,
798c0d9444aSjoergin which case the following input line will be appended to the
799c0d9444aSjoerg.Ar string ,
800c0d9444aSjoergforming a new input line passed to the
801c0d9444aSjoerg.Nm
802c0d9444aSjoergparser.
803c0d9444aSjoergFor example,
804c0d9444aSjoerg.Bd -literal -offset indent
805c0d9444aSjoerg\&.ds badidea .S
806c0d9444aSjoerg\&.badidea
807c0d9444aSjoergH SYNOPSIS
808c0d9444aSjoerg.Ed
809c0d9444aSjoerg.Pp
810c0d9444aSjoerginvokes the
811c9bcef03Schristos.Ic SH
812c0d9444aSjoergmacro when used in a
813c0d9444aSjoerg.Xr man 7
814c0d9444aSjoergdocument.
815c0d9444aSjoergSuch abuse is of course strongly discouraged.
816c9bcef03Schristos.It Ic \&ds1 Ar stringname Op Oo \(dq Oc Ns Ar string
817fec65c98SchristosDefine a user-defined string that will be expanded with
818fec65c98Schristos.Nm
819fec65c98Schristoscompatibility mode switched off during string expansion.
820fec65c98SchristosThis is a groff extension.
821fec65c98SchristosSince
822fec65c98Schristos.Xr mandoc 1
823fec65c98Schristosdoes not implement
824fec65c98Schristos.Nm
825fec65c98Schristoscompatibility mode at all, it handles this request as an alias for
826c9bcef03Schristos.Ic \&ds .
827c9bcef03Schristos.It Ic \&dwh Ar dist macroname
828fec65c98SchristosSet a location trap in the current diversion.
829fec65c98SchristosThis is a Heirloom extension and currently unsupported.
830c9bcef03Schristos.It Ic \&dt Op Ar dist macroname
831fec65c98SchristosSet a trap within a diversion.
832fec65c98SchristosCurrently unsupported.
833c9bcef03Schristos.It Ic \&ec Op Ar char
834c9bcef03SchristosEnable the escape mechanism and change the escape character.
835c9bcef03SchristosThe
836c9bcef03Schristos.Ar char
837c9bcef03Schristosargument defaults to the backslash
838c9bcef03Schristos.Pq Sq \e .
839c9bcef03Schristos.It Ic \&ecr
840fec65c98SchristosRestore the escape character.
841fec65c98SchristosCurrently unsupported.
842c9bcef03Schristos.It Ic \&ecs
843fec65c98SchristosSave the escape character.
844fec65c98SchristosCurrently unsupported.
845c9bcef03Schristos.It Ic \&el Ar body
8460a84adc5SjoergThe
847c9bcef03Schristos.Dq else
8480a84adc5Sjoerghalf of an if/else conditional.
8490a84adc5SjoergPops a result off the stack of conditional evaluations pushed by
850c9bcef03Schristos.Ic \&ie
8510a84adc5Sjoergand uses it as its conditional.
8520a84adc5SjoergIf no stack entries are present (e.g., due to no prior
853c9bcef03Schristos.Ic \&ie
8540a84adc5Sjoergcalls)
8550a84adc5Sjoergthen false is assumed.
856c0d9444aSjoergThe syntax of this request is similar to
857c9bcef03Schristos.Ic \&if
8580a84adc5Sjoergexcept that the conditional is missing.
859c9bcef03Schristos.It Ic \&em Ar macroname
860fec65c98SchristosSet a trap at the end of input.
861fec65c98SchristosCurrently unsupported.
862c9bcef03Schristos.It Ic \&EN
86348741257SjoergEnd an equation block.
86448741257SjoergSee
865c9bcef03Schristos.Ic \&EQ .
866c9bcef03Schristos.It Ic \&eo
867fec65c98SchristosDisable the escape mechanism completely.
868c9bcef03Schristos.It Ic \&EP
869fec65c98SchristosEnd a picture started by
870c9bcef03Schristos.Ic \&BP .
871fec65c98SchristosThis is a Heirloom extension and currently unsupported.
872c9bcef03Schristos.It Ic \&EQ
87348741257SjoergBegin an equation block.
87448741257SjoergSee
87548741257Sjoerg.Xr eqn 7
87648741257Sjoergfor a description of the equation language.
877c9bcef03Schristos.It Ic \&errprint Ar message
878fec65c98SchristosPrint a string like an error message.
879fec65c98SchristosThis is a Heirloom extension and currently ignored.
880c9bcef03Schristos.It Ic \&ev Op Ar envname
881fec65c98SchristosSwitch to another environment.
882fec65c98SchristosCurrently unsupported.
883c9bcef03Schristos.It Ic \&evc Op Ar envname
884fec65c98SchristosCopy an environment into the current environment.
885fec65c98SchristosCurrently unsupported.
886c9bcef03Schristos.It Ic \&ex
887fec65c98SchristosAbort processing and exit.
888fec65c98SchristosCurrently unsupported.
889c9bcef03Schristos.It Ic \&fallback Ar curfont font ...
890fec65c98SchristosSelect the fallback sequence for a font.
891fec65c98SchristosThis is a Heirloom extension and currently ignored.
892c9bcef03Schristos.It Ic \&fam Op Ar familyname
89370f041f9SjoergChange the font family.
894c9bcef03SchristosThis is a groff extension and currently ignored.
895c9bcef03Schristos.It Ic \&fc Op Ar delimchar Op Ar padchar
896fec65c98SchristosDefine a delimiting and a padding character for fields.
897fec65c98SchristosCurrently unsupported.
898c9bcef03Schristos.It Ic \&fchar Ar glyphname Op Ar string
899fec65c98SchristosDefine a fallback glyph.
900fec65c98SchristosCurrently unsupported.
901c9bcef03Schristos.It Ic \&fcolor Ar colorname
902fec65c98SchristosSet the fill color for \eD objects.
903fec65c98SchristosThis is a groff extension and currently ignored.
904c9bcef03Schristos.It Ic \&fdeferlig Ar font string ...
905fec65c98SchristosDefer ligature building.
906fec65c98SchristosThis is a Heirloom extension and currently ignored.
907c9bcef03Schristos.It Ic \&feature Cm + Ns | Ns Cm - Ns Ar name
908fec65c98SchristosEnable or disable an OpenType feature.
909fec65c98SchristosThis is a Heirloom extension and currently ignored.
910c9bcef03Schristos.It Ic \&fi
911*544c191cSchristosBreak the output line and switch to fill mode,
912*544c191cSchristoswhich is active by default but can be ended with the
913*544c191cSchristos.Ic \&nf
914*544c191cSchristosrequest.
915*544c191cSchristosIn fill mode, input from subsequent input lines is added to
916*544c191cSchristosthe same output line until the next word no longer fits,
917*544c191cSchristosat which point the output line is broken.
918*544c191cSchristosThis request is implied by the
919*544c191cSchristos.Xr mdoc 7
920*544c191cSchristos.Ic \&Sh
921*544c191cSchristosmacro and by the
922*544c191cSchristos.Xr man 7
923*544c191cSchristos.Ic \&SH ,
924*544c191cSchristos.Ic \&SS ,
925*544c191cSchristosand
926*544c191cSchristos.Ic \&EE
927*544c191cSchristosmacros.
928c9bcef03Schristos.It Ic \&fkern Ar font minkern
929fec65c98SchristosControl the use of kerning tables for a font.
930fec65c98SchristosThis is a Heirloom extension and currently ignored.
931c9bcef03Schristos.It Ic \&fl
932fec65c98SchristosFlush output.
933fec65c98SchristosCurrently ignored.
934c9bcef03Schristos.It Ic \&flig Ar font string char ...
935fec65c98SchristosDefine ligatures.
936fec65c98SchristosThis is a Heirloom extension and currently ignored.
937c9bcef03Schristos.It Ic \&fp Ar position font Op Ar filename
938fec65c98SchristosAssign font position.
939fec65c98SchristosCurrently ignored.
940c9bcef03Schristos.It Ic \&fps Ar mapname ...
941fec65c98SchristosMount a font with a special character map.
942fec65c98SchristosThis is a Heirloom extension and currently ignored.
943c9bcef03Schristos.It Ic \&fschar Ar font glyphname Op Ar string
944fec65c98SchristosDefine a font-specific fallback glyph.
945fec65c98SchristosThis is a groff extension and currently unsupported.
946c9bcef03Schristos.It Ic \&fspacewidth Ar font Op Ar afmunits
947fec65c98SchristosSet a font-specific width for the space character.
948fec65c98SchristosThis is a Heirloom extension and currently ignored.
949c9bcef03Schristos.It Ic \&fspecial Ar curfont Op Ar font ...
950fec65c98SchristosConditionally define a special font.
951fec65c98SchristosThis is a groff extension and currently ignored.
952c9bcef03Schristos.It Ic \&ft Op Ar font
953*544c191cSchristosChange the font; see
954*544c191cSchristos.Sx Font Selection .
955*544c191cSchristosThe
956fec65c98Schristos.Ar font
957*544c191cSchristosargument defaults to
958*544c191cSchristos.Cm P .
959c9bcef03Schristos.It Ic \&ftr Ar newname Op Ar oldname
960fec65c98SchristosTranslate font name.
961fec65c98SchristosThis is a groff extension and currently ignored.
962c9bcef03Schristos.It Ic \&fzoom Ar font Op Ar permille
963fec65c98SchristosZoom font size.
964fec65c98SchristosCurrently ignored.
965c9bcef03Schristos.It Ic \&gcolor Op Ar colorname
966fec65c98SchristosSet glyph color.
967fec65c98SchristosThis is a groff extension and currently ignored.
968c9bcef03Schristos.It Ic \&hc Op Ar char
969fec65c98SchristosSet the hyphenation character.
970fec65c98SchristosCurrently ignored.
971c9bcef03Schristos.It Ic \&hcode Ar char code ...
972fec65c98SchristosSet hyphenation codes of characters.
973fec65c98SchristosCurrently ignored.
974c9bcef03Schristos.It Ic \&hidechar Ar font char ...
975fec65c98SchristosHide characters in a font.
976fec65c98SchristosThis is a Heirloom extension and currently ignored.
977c9bcef03Schristos.It Ic \&hla Ar language
978fec65c98SchristosSet hyphenation language.
979fec65c98SchristosThis is a groff extension and currently ignored.
980c9bcef03Schristos.It Ic \&hlm Op Ar number
981fec65c98SchristosSet maximum number of consecutive hyphenated lines.
982fec65c98SchristosCurrently ignored.
983c9bcef03Schristos.It Ic \&hpf Ar filename
984fec65c98SchristosLoad hyphenation pattern file.
985fec65c98SchristosThis is a groff extension and currently ignored.
986c9bcef03Schristos.It Ic \&hpfa Ar filename
987fec65c98SchristosLoad hyphenation pattern file, appending to the current patterns.
988fec65c98SchristosThis is a groff extension and currently ignored.
989c9bcef03Schristos.It Ic \&hpfcode Ar code code ...
990fec65c98SchristosDefine mapping values for character codes in hyphenation patterns.
991fec65c98SchristosThis is a groff extension and currently ignored.
992c9bcef03Schristos.It Ic \&hw Ar word ...
99370f041f9SjoergSpecify hyphenation points in words.
994fec65c98SchristosCurrently ignored.
995c9bcef03Schristos.It Ic \&hy Op Ar mode
996c0d9444aSjoergSet automatic hyphenation mode.
997fec65c98SchristosCurrently ignored.
998c9bcef03Schristos.It Ic \&hylang Ar language
999fec65c98SchristosSet hyphenation language.
1000fec65c98SchristosThis is a Heirloom extension and currently ignored.
1001c9bcef03Schristos.It Ic \&hylen Ar nchar
1002fec65c98SchristosMinimum word length for hyphenation.
1003fec65c98SchristosThis is a Heirloom extension and currently ignored.
1004c9bcef03Schristos.It Ic \&hym Op Ar length
1005fec65c98SchristosSet hyphenation margin.
1006fec65c98SchristosThis is a groff extension and currently ignored.
1007c9bcef03Schristos.It Ic \&hypp Ar penalty ...
1008fec65c98SchristosDefine hyphenation penalties.
1009fec65c98SchristosThis is a Heirloom extension and currently ignored.
1010c9bcef03Schristos.It Ic \&hys Op Ar length
1011fec65c98SchristosSet hyphenation space.
1012fec65c98SchristosThis is a groff extension and currently ignored.
1013c9bcef03Schristos.It Ic \&ie Ar condition body
10140a84adc5SjoergThe
1015c9bcef03Schristos.Dq if
10160a84adc5Sjoerghalf of an if/else conditional.
10170a84adc5SjoergThe result of the conditional is pushed into a stack used by subsequent
10180a84adc5Sjoerginvocations of
1019c9bcef03Schristos.Ic \&el ,
10200a84adc5Sjoergwhich may be separated by any intervening input (or not exist at all).
10210a84adc5SjoergIts syntax is equivalent to
1022c9bcef03Schristos.Ic \&if .
1023c9bcef03Schristos.It Ic \&if Ar condition body
1024c9bcef03SchristosBegin a conditional.
1025c9bcef03SchristosThis request can also be written as follows:
1026c9bcef03Schristos.Bd -unfilled -offset indent
1027c9bcef03Schristos.Pf . Ic \&if Ar condition No \e{ Ns Ar body
1028c9bcef03Schristos.Ar body ... Ns \e}
1029fec65c98Schristos.Ed
1030c9bcef03Schristos.Bd -unfilled -offset indent
1031c9bcef03Schristos.Pf . Ic \&if Ar condition No \e{\e
1032c9bcef03Schristos.Ar body ...
1033c9bcef03Schristos.Pf . No \e}
1034fec65c98Schristos.Ed
1035fec65c98Schristos.Pp
1036c9bcef03SchristosThe
1037c9bcef03Schristos.Ar condition
1038c9bcef03Schristosis a boolean expression.
1039fec65c98SchristosCurrently,
1040fec65c98Schristos.Xr mandoc 1
1041fec65c98Schristossupports the following subset of roff conditionals:
1042fec65c98Schristos.Bl -bullet
1043fec65c98Schristos.It
1044fec65c98SchristosIf
1045fec65c98Schristos.Sq \&!
1046c9bcef03Schristosis prefixed to
1047c9bcef03Schristos.Ar condition ,
1048c9bcef03Schristosit is logically inverted.
1049fec65c98Schristos.It
1050c9bcef03SchristosIf the first character of
1051c9bcef03Schristos.Ar condition
1052c9bcef03Schristosis
1053fec65c98Schristos.Sq n
1054fec65c98Schristos.Pq nroff mode
1055fec65c98Schristosor
1056fec65c98Schristos.Sq o
1057fec65c98Schristos.Pq odd page ,
1058*544c191cSchristosit evaluates to true, and the
1059*544c191cSchristos.Ar body
1060*544c191cSchristosstarts with the next character.
1061fec65c98Schristos.It
1062c9bcef03SchristosIf the first character of
1063c9bcef03Schristos.Ar condition
1064c9bcef03Schristosis
1065fec65c98Schristos.Sq e
1066fec65c98Schristos.Pq even page ,
1067fec65c98Schristos.Sq t
1068fec65c98Schristos.Pq troff mode ,
1069fec65c98Schristosor
1070fec65c98Schristos.Sq v
1071fec65c98Schristos.Pq vroff mode ,
1072*544c191cSchristosit evaluates to false, and the
1073*544c191cSchristos.Ar body
1074*544c191cSchristosstarts with the next character.
1075*544c191cSchristos.It
1076*544c191cSchristosIf the first character of
1077*544c191cSchristos.Ar condition
1078*544c191cSchristosis
1079*544c191cSchristos.Sq c
1080*544c191cSchristos.Pq character available ,
1081*544c191cSchristosit evaluates to true if the following character is an ASCII character
1082*544c191cSchristosor a valid character escape sequence, or to false otherwise.
1083*544c191cSchristosThe
1084*544c191cSchristos.Ar body
1085*544c191cSchristosstarts with the character following that next character.
1086fec65c98Schristos.It
1087c9bcef03SchristosIf the first character of
1088c9bcef03Schristos.Ar condition
1089c9bcef03Schristosis
1090c9bcef03Schristos.Sq d ,
1091c9bcef03Schristosit evaluates to true if the rest of
1092c9bcef03Schristos.Ar condition
1093c9bcef03Schristosis the name of an existing user defined macro or string;
1094c9bcef03Schristosotherwise, it evaluates to false.
1095c9bcef03Schristos.It
1096c9bcef03SchristosIf the first character of
1097c9bcef03Schristos.Ar condition
1098c9bcef03Schristosis
10999ff1f2acSchristos.Sq r ,
1100c9bcef03Schristosit evaluates to true if the rest of
1101c9bcef03Schristos.Ar condition
1102c9bcef03Schristosis the name of an existing number register;
1103c9bcef03Schristosotherwise, it evaluates to false.
11049ff1f2acSchristos.It
1105c9bcef03SchristosIf the
1106c9bcef03Schristos.Ar condition
1107c9bcef03Schristosstarts with a parenthesis or with an optionally signed
1108fec65c98Schristosinteger number, it is evaluated according to the rules of
1109fec65c98Schristos.Sx Numerical expressions
1110fec65c98Schristosexplained below.
1111fec65c98SchristosIt evaluates to true if the result is positive,
1112fec65c98Schristosor to false if the result is zero or negative.
1113fec65c98Schristos.It
1114c9bcef03SchristosOtherwise, the first character of
1115c9bcef03Schristos.Ar condition
1116c9bcef03Schristosis regarded as a delimiter and it evaluates to true if the string
1117c9bcef03Schristosextending from its first to its second occurrence is equal to the
1118c9bcef03Schristosstring extending from its second to its third occurrence.
1119fec65c98Schristos.It
1120c9bcef03SchristosIf
1121c9bcef03Schristos.Ar condition
1122c9bcef03Schristoscannot be parsed, it evaluates to false.
1123fec65c98Schristos.El
1124fec65c98Schristos.Pp
11250a84adc5SjoergIf a conditional is false, its children are not processed, but are
11260a84adc5Sjoergsyntactically interpreted to preserve the integrity of the input
11270a84adc5Sjoergdocument.
11280a84adc5SjoergThus,
11290a84adc5Sjoerg.Pp
1130c0d9444aSjoerg.D1 \&.if t .ig
11310a84adc5Sjoerg.Pp
11320a84adc5Sjoergwill discard the
11330a84adc5Sjoerg.Sq \&.ig ,
11340a84adc5Sjoergwhich may lead to interesting results, but
11350a84adc5Sjoerg.Pp
1136c0d9444aSjoerg.D1 \&.if t .if t \e{\e
11370a84adc5Sjoerg.Pp
11380a84adc5Sjoergwill continue to syntactically interpret to the block close of the final
11390a84adc5Sjoergconditional.
11400a84adc5SjoergSub-conditionals, in this case, obviously inherit the truth value of
11410a84adc5Sjoergthe parent.
11420a84adc5Sjoerg.Pp
1143c9bcef03SchristosIf the
1144c9bcef03Schristos.Ar body
1145c9bcef03Schristossection is begun by an escaped brace
11460a84adc5Sjoerg.Sq \e{ ,
1147fec65c98Schristosscope continues until the end of the input line containing the
1148fec65c98Schristosmatching closing-brace escape sequence
1149fec65c98Schristos.Sq \e} .
1150c9bcef03SchristosIf the
1151c9bcef03Schristos.Ar body
1152c9bcef03Schristosis not enclosed in braces, scope continues until the end of the line.
1153c9bcef03SchristosIf the
1154c9bcef03Schristos.Ar condition
1155c9bcef03Schristosis followed by a
1156c9bcef03Schristos.Ar body
1157c9bcef03Schristoson the same line, whether after a brace or not, then requests and macros
11580a84adc5Sjoerg.Em must
11590a84adc5Sjoergbegin with a control character.
11600a84adc5SjoergIt is generally more intuitive, in this case, to write
1161c9bcef03Schristos.Bd -unfilled -offset indent
1162c9bcef03Schristos.Pf . Ic \&if Ar condition No \e{\e
1163c9bcef03Schristos.Pf . Ar request
1164c9bcef03Schristos.Pf . No \e}
11650a84adc5Sjoerg.Ed
11660a84adc5Sjoerg.Pp
1167c0d9444aSjoergthan having the request or macro follow as
11680a84adc5Sjoerg.Pp
1169c9bcef03Schristos.D1 Pf . Ic \&if Ar condition Pf \e{. Ar request
11700a84adc5Sjoerg.Pp
11710a84adc5SjoergThe scope of a conditional is always parsed, but only executed if the
11720a84adc5Sjoergconditional evaluates to true.
11730a84adc5Sjoerg.Pp
1174c5f73b34SjoergNote that the
11750a84adc5Sjoerg.Sq \e}
1176c5f73b34Sjoergis converted into a zero-width escape sequence if not passed as a
1177c5f73b34Sjoergstandalone macro
1178c5f73b34Sjoerg.Sq \&.\e} .
1179c5f73b34SjoergFor example,
1180c5f73b34Sjoerg.Pp
1181c5f73b34Sjoerg.D1 \&.Fl a \e} b
1182c5f73b34Sjoerg.Pp
1183c5f73b34Sjoergwill result in
11847574e07eSjoerg.Sq \e}
1185c5f73b34Sjoergbeing considered an argument of the
1186c5f73b34Sjoerg.Sq \&Fl
1187c5f73b34Sjoergmacro.
1188c9bcef03Schristos.It Ic \&ig Op Ar endmacro
11890a84adc5SjoergIgnore input.
1190c0d9444aSjoergIts syntax can be either
1191c0d9444aSjoerg.Bd -literal -offset indent
1192c0d9444aSjoerg.Pf . Cm \&ig
1193c0d9444aSjoerg.Ar ignored text
11940a84adc5Sjoerg\&..
11950a84adc5Sjoerg.Ed
1196c0d9444aSjoerg.Pp
1197c0d9444aSjoergor
1198c0d9444aSjoerg.Bd -literal -offset indent
1199c9bcef03Schristos.Pf . Cm \&ig Ar endmacro
1200c0d9444aSjoerg.Ar ignored text
1201c9bcef03Schristos.Pf . Ar endmacro
12020a84adc5Sjoerg.Ed
12030a84adc5Sjoerg.Pp
12040a84adc5SjoergIn the first case, input is ignored until a
12050a84adc5Sjoerg.Sq \&..
1206c0d9444aSjoergrequest is encountered on its own line.
1207c0d9444aSjoergIn the second case, input is ignored until the specified
1208c9bcef03Schristos.Sq Pf . Ar endmacro
1209c9bcef03Schristosis encountered.
1210c0d9444aSjoergDo not use the escape character
12110a84adc5Sjoerg.Sq \e
1212c0d9444aSjoerganywhere in the definition of
1213c9bcef03Schristos.Ar endmacro ;
1214c0d9444aSjoergit would cause very strange behaviour.
1215c0d9444aSjoerg.Pp
1216c0d9444aSjoergWhen the
1217c9bcef03Schristos.Ar endmacro
1218c9bcef03Schristosis a roff request or a roff macro, like in
12190a84adc5Sjoerg.Pp
12200a84adc5Sjoerg.D1 \&.ig if
12210a84adc5Sjoerg.Pp
12220a84adc5Sjoergthe subsequent invocation of
1223c9bcef03Schristos.Ic \&if
1224c0d9444aSjoergwill first terminate the
1225c0d9444aSjoerg.Ar ignored text ,
1226c0d9444aSjoergthen be invoked as usual.
1227c0d9444aSjoergOtherwise, it only terminates the
1228c0d9444aSjoerg.Ar ignored text ,
1229c0d9444aSjoergand arguments following it or the
1230c0d9444aSjoerg.Sq \&..
1231c0d9444aSjoergrequest are discarded.
1232c9bcef03Schristos.It Ic \&in Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1233fec65c98SchristosChange indentation.
1234fec65c98SchristosSee
1235fec65c98Schristos.Xr man 7 .
1236fec65c98SchristosIgnored in
1237fec65c98Schristos.Xr mdoc 7 .
1238c9bcef03Schristos.It Ic \&index Ar register stringname substring
1239fec65c98SchristosFind a substring in a string.
1240fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1241c9bcef03Schristos.It Ic \&it Ar expression macro
1242fec65c98SchristosSet an input line trap.
1243fec65c98SchristosThe named
1244fec65c98Schristos.Ar macro
1245fec65c98Schristoswill be invoked after processing the number of input text lines
1246fec65c98Schristosspecified by the numerical
1247fec65c98Schristos.Ar expression .
1248fec65c98SchristosWhile evaluating the
1249fec65c98Schristos.Ar expression ,
1250fec65c98Schristosthe unit suffixes described below
1251fec65c98Schristos.Sx Scaling Widths
1252fec65c98Schristosare ignored.
1253*544c191cSchristos.It Ic \&itc Ar expression macro
1254fec65c98SchristosSet an input line trap, not counting lines ending with \ec.
1255fec65c98SchristosCurrently unsupported.
1256c9bcef03Schristos.It Ic \&IX Ar class keystring
1257fec65c98SchristosTo support the generation of a table of contents,
1258fec65c98Schristos.Xr pod2man 1
1259fec65c98Schristosemits this user-defined macro, usually without defining it.
1260fec65c98SchristosTo avoid reporting large numbers of spurious errors,
1261fec65c98Schristos.Xr mandoc 1
1262fec65c98Schristosignores it.
1263c9bcef03Schristos.It Ic \&kern Op Cm 1 | 0
1264fec65c98SchristosSwitch kerning on or off.
1265fec65c98SchristosCurrently ignored.
1266c9bcef03Schristos.It Ic \&kernafter Ar font char ... afmunits ...
1267fec65c98SchristosIncrease kerning after some characters.
1268fec65c98SchristosThis is a Heirloom extension and currently ignored.
1269c9bcef03Schristos.It Ic \&kernbefore Ar font char ... afmunits ...
1270fec65c98SchristosIncrease kerning before some characters.
1271fec65c98SchristosThis is a Heirloom extension and currently ignored.
1272c9bcef03Schristos.It Ic \&kernpair Ar font char ... font char ... afmunits
1273fec65c98SchristosAdd a kerning pair to the kerning table.
1274fec65c98SchristosThis is a Heirloom extension and currently ignored.
1275c9bcef03Schristos.It Ic \&lc Op Ar glyph
1276fec65c98SchristosDefine a leader repetition character.
1277fec65c98SchristosCurrently unsupported.
1278c9bcef03Schristos.It Ic \&lc_ctype Ar localename
1279fec65c98SchristosSet the
1280fec65c98Schristos.Dv LC_CTYPE
1281fec65c98Schristoslocale.
1282fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1283c9bcef03Schristos.It Ic \&lds Ar macroname string
1284fec65c98SchristosDefine a local string.
1285fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1286c9bcef03Schristos.It Ic \&length Ar register string
1287c9bcef03SchristosCount the number of input characters in a string.
1288fec65c98SchristosCurrently unsupported.
1289c9bcef03Schristos.It Ic \&letadj Ar lspmin lshmin letss lspmax lshmax
1290fec65c98SchristosDynamic letter spacing and reshaping.
1291fec65c98SchristosThis is a Heirloom extension and currently ignored.
1292c9bcef03Schristos.It Ic \&lf Ar lineno Op Ar filename
1293fec65c98SchristosChange the line number for error messages.
1294fec65c98SchristosIgnored because insecure.
1295c9bcef03Schristos.It Ic \&lg Op Cm 1 | 0
1296fec65c98SchristosSwitch the ligature mechanism on or off.
1297fec65c98SchristosCurrently ignored.
1298c9bcef03Schristos.It Ic \&lhang Ar font char ... afmunits
1299fec65c98SchristosHang characters at left margin.
1300fec65c98SchristosThis is a Heirloom extension and currently ignored.
1301c9bcef03Schristos.It Ic \&linetabs Op Cm 1 | 0
1302fec65c98SchristosEnable or disable line-tabs mode.
1303fec65c98SchristosThis is a groff extension and currently unsupported.
1304c9bcef03Schristos.It Ic \&ll Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1305fec65c98SchristosChange the output line length.
1306fec65c98SchristosIf the
1307fec65c98Schristos.Ar width
1308fec65c98Schristosargument is omitted, the line length is reset to its previous value.
1309fec65c98SchristosThe default setting for terminal output is 78n.
1310fec65c98SchristosIf a sign is given, the line length is added to or subtracted from;
1311fec65c98Schristosotherwise, it is set to the provided value.
1312fec65c98SchristosUsing this request in new manuals is discouraged for several reasons,
1313fec65c98Schristosamong others because it overrides the
1314fec65c98Schristos.Xr mandoc 1
1315fec65c98Schristos.Fl O Cm width
1316fec65c98Schristoscommand line option.
1317c9bcef03Schristos.It Ic \&lnr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
1318fec65c98SchristosSet local number register.
1319fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1320c9bcef03Schristos.It Ic \&lnrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
1321fec65c98SchristosSet local floating-point register.
1322fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1323c9bcef03Schristos.It Ic \&lpfx Ar string
1324fec65c98SchristosSet a line prefix.
1325fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1326c9bcef03Schristos.It Ic \&ls Op Ar factor
1327fec65c98SchristosSet line spacing.
1328fec65c98SchristosIt takes one integer argument specifying the vertical distance of
1329fec65c98Schristossubsequent output text lines measured in v units.
1330fec65c98SchristosCurrently ignored.
1331c9bcef03Schristos.It Ic \&lsm Ar macroname
1332fec65c98SchristosSet a leading spaces trap.
1333fec65c98SchristosThis is a groff extension and currently unsupported.
1334c9bcef03Schristos.It Ic \&lt Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1335fec65c98SchristosSet title line length.
1336fec65c98SchristosCurrently ignored.
1337c9bcef03Schristos.It Ic \&mc Ar glyph Op Ar dist
1338fec65c98SchristosPrint margin character in the right margin.
1339c9bcef03SchristosThe
1340c9bcef03Schristos.Ar dist
1341c9bcef03Schristosis currently ignored; instead, 1n is used.
1342c9bcef03Schristos.It Ic \&mediasize Ar media
1343fec65c98SchristosSet the device media size.
1344fec65c98SchristosThis is a Heirloom extension and currently ignored.
1345c9bcef03Schristos.It Ic \&minss Ar width
1346fec65c98SchristosSet minimum word space.
1347fec65c98SchristosThis is a Heirloom extension and currently ignored.
1348c9bcef03Schristos.It Ic \&mk Op Ar register
1349fec65c98SchristosMark vertical position.
1350fec65c98SchristosCurrently ignored.
1351c9bcef03Schristos.It Ic \&mso Ar filename
1352c9bcef03SchristosLoad a macro file using the search path.
1353fec65c98SchristosIgnored because insecure.
1354c9bcef03Schristos.It Ic \&na
1355fec65c98SchristosDisable adjusting without changing the adjustment mode.
1356fec65c98SchristosCurrently ignored.
1357c9bcef03Schristos.It Ic \&ne Op Ar height
1358c0d9444aSjoergDeclare the need for the specified minimum vertical space
1359c0d9444aSjoergbefore the next trap or the bottom of the page.
1360fec65c98SchristosCurrently ignored.
1361c9bcef03Schristos.It Ic \&nf
1362*544c191cSchristosBreak the output line and switch to no-fill mode.
1363*544c191cSchristosSubsequent input lines are kept together on the same output line
1364*544c191cSchristoseven when exceeding the right margin,
1365*544c191cSchristosand line breaks in subsequent input cause output line breaks.
1366*544c191cSchristosThis request is implied by the
1367*544c191cSchristos.Xr mdoc 7
1368*544c191cSchristos.Ic \&Bd Fl unfilled
1369*544c191cSchristosand
1370*544c191cSchristos.Ic \&Bd Fl literal
1371*544c191cSchristosmacros and by the
1372*544c191cSchristos.Xr man 7
1373*544c191cSchristos.Ic \&EX
1374*544c191cSchristosmacro.
1375*544c191cSchristosThe
1376*544c191cSchristos.Ic \&fi
1377*544c191cSchristosrequest switches back to the default fill mode.
1378c9bcef03Schristos.It Ic \&nh
1379c0d9444aSjoergTurn off automatic hyphenation mode.
1380fec65c98SchristosCurrently ignored.
1381c9bcef03Schristos.It Ic \&nhychar Ar char ...
1382fec65c98SchristosDefine hyphenation-inhibiting characters.
1383fec65c98SchristosThis is a Heirloom extension and currently ignored.
1384c9bcef03Schristos.It Ic \&nm Op Ar start Op Ar inc Op Ar space Op Ar indent
1385fec65c98SchristosPrint line numbers.
1386fec65c98SchristosCurrently unsupported.
1387c9bcef03Schristos.It Ic \&nn Op Ar number
1388fec65c98SchristosTemporarily turn off line numbering.
1389fec65c98SchristosCurrently unsupported.
1390c9bcef03Schristos.It Ic \&nop Ar body
1391*544c191cSchristosExecute the rest of the input line as a request, macro, or text line,
1392*544c191cSchristosskipping the
1393*544c191cSchristos.Ic \&nop
1394*544c191cSchristosrequest and any space characters immediately following it.
1395*544c191cSchristosThis is mostly used to indent text lines inside macro definitions.
1396c9bcef03Schristos.It Ic \&nr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression Op Ar stepsize
139770f041f9SjoergDefine or change a register.
139882361f10SjoergA register is an arbitrary string value that defines some sort of state,
139982361f10Sjoergwhich influences parsing and/or formatting.
1400fec65c98SchristosFor the syntax of
1401fec65c98Schristos.Ar expression ,
1402fec65c98Schristossee
1403fec65c98Schristos.Sx Numerical expressions
1404fec65c98Schristosbelow.
140570f041f9SjoergIf it is prefixed by a sign, the register will be
140670f041f9Sjoergincremented or decremented instead of assigned to.
140770f041f9Sjoerg.Pp
1408c9bcef03SchristosThe
1409c9bcef03Schristos.Ar stepsize
1410c9bcef03Schristosis used by the
1411c9bcef03Schristos.Ic \en+
1412c9bcef03Schristosauto-increment feature.
1413c9bcef03SchristosIt remains unchanged when omitted while changing an existing register,
1414c9bcef03Schristosand it defaults to 0 when defining a new register.
1415c9bcef03Schristos.Pp
1416c9bcef03SchristosThe following
1417c9bcef03Schristos.Ar register
141870f041f9Sjoergis handled specially:
141982361f10Sjoerg.Bl -tag -width Ds
142082361f10Sjoerg.It Cm nS
142182361f10SjoergIf set to a positive integer value, certain
142282361f10Sjoerg.Xr mdoc 7
1423c0d9444aSjoergmacros will behave in the same way as in the
142482361f10Sjoerg.Em SYNOPSIS
142582361f10Sjoergsection.
1426c0d9444aSjoergIf set to 0, these macros will behave in the same way as outside the
142782361f10Sjoerg.Em SYNOPSIS
1428c0d9444aSjoergsection, even when called within the
1429c0d9444aSjoerg.Em SYNOPSIS
1430c0d9444aSjoergsection itself.
1431c0d9444aSjoergNote that starting a new
143282361f10Sjoerg.Xr mdoc 7
1433c0d9444aSjoergsection with the
1434c9bcef03Schristos.Ic \&Sh
1435c0d9444aSjoergmacro will reset this register.
143682361f10Sjoerg.El
1437c9bcef03Schristos.It Xo
1438c9bcef03Schristos.Ic \&nrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression
1439c9bcef03Schristos.Op Ar increment
1440c9bcef03Schristos.Xc
1441fec65c98SchristosDefine or change a floating-point register.
1442fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1443c9bcef03Schristos.It Ic \&nroff
1444fec65c98SchristosForce nroff mode.
1445fec65c98SchristosThis is a groff extension and currently ignored.
1446c9bcef03Schristos.It Ic \&ns
144748741257SjoergTurn on no-space mode.
1448fec65c98SchristosCurrently ignored.
1449c9bcef03Schristos.It Ic \&nx Op Ar filename
1450fec65c98SchristosAbort processing of the current input file and process another one.
1451fec65c98SchristosIgnored because insecure.
1452c9bcef03Schristos.It Ic \&open Ar stream file
1453fec65c98SchristosOpen a file for writing.
1454fec65c98SchristosIgnored because insecure.
1455c9bcef03Schristos.It Ic \&opena Ar stream file
1456fec65c98SchristosOpen a file for appending.
1457fec65c98SchristosIgnored because insecure.
1458c9bcef03Schristos.It Ic \&os
1459fec65c98SchristosOutput saved vertical space.
1460fec65c98SchristosCurrently ignored.
1461c9bcef03Schristos.It Ic \&output Ar string
1462fec65c98SchristosOutput directly to intermediate output.
1463fec65c98SchristosNot supported.
1464c9bcef03Schristos.It Ic \&padj Op Cm 1 | 0
1465fec65c98SchristosGlobally control paragraph-at-once adjustment.
1466fec65c98SchristosThis is a Heirloom extension and currently ignored.
1467c9bcef03Schristos.It Ic \&papersize Ar media
1468fec65c98SchristosSet the paper size.
1469fec65c98SchristosThis is a Heirloom extension and currently ignored.
1470c9bcef03Schristos.It Ic \&pc Op Ar char
1471fec65c98SchristosChange the page number character.
1472fec65c98SchristosCurrently ignored.
1473c9bcef03Schristos.It Ic \&pev
1474fec65c98SchristosPrint environments.
1475fec65c98SchristosThis is a groff extension and currently ignored.
1476c9bcef03Schristos.It Ic \&pi Ar command
1477fec65c98SchristosPipe output to a shell command.
1478fec65c98SchristosIgnored because insecure.
1479c9bcef03Schristos.It Ic \&PI
1480fec65c98SchristosLow-level request used by
1481c9bcef03Schristos.Ic \&BP .
1482fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1483c9bcef03Schristos.It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1484fec65c98SchristosChange page length.
1485fec65c98SchristosCurrently ignored.
1486c9bcef03Schristos.It Ic \&pm
1487c9bcef03SchristosPrint names and sizes of macros, strings, and diversions
1488c9bcef03Schristosto standard error output.
1489fec65c98SchristosCurrently ignored.
1490c9bcef03Schristos.It Ic \&pn Oo Cm + Ns | Ns Cm - Oc Ns Ar number
1491c9bcef03SchristosChange the page number of the next page.
1492fec65c98SchristosCurrently ignored.
1493c9bcef03Schristos.It Ic \&pnr
1494c9bcef03SchristosPrint all number registers on standard error output.
1495fec65c98SchristosCurrently ignored.
1496c9bcef03Schristos.It Ic \&po Op Oo Cm + Ns | Ns Cm - Oc Ns Ar offset
1497c9bcef03SchristosSet a horizontal page offset.
1498c9bcef03SchristosIf no argument is specified, the page offset is reverted to its
1499c9bcef03Schristosprevious value.
1500c9bcef03SchristosIf a sign is specified, the new page offset is calculated relative
1501c9bcef03Schristosto the current one; otherwise, it is absolute.
1502c9bcef03SchristosThe argument follows the syntax of
1503c9bcef03Schristos.Sx Scaling Widths
1504c9bcef03Schristosand the default scaling unit is
1505c9bcef03Schristos.Cm m .
1506c9bcef03Schristos.It Ic \&ps Op Oo Cm + Ns | Ns Cm - Oc Ns size
150748741257SjoergChange point size.
1508fec65c98SchristosCurrently ignored.
1509c9bcef03Schristos.It Ic \&psbb Ar filename
1510fec65c98SchristosRetrieve the bounding box of a PostScript file.
1511fec65c98SchristosCurrently unsupported.
1512c9bcef03Schristos.It Ic \&pshape Ar indent length ...
1513fec65c98SchristosSet a special shape for the current paragraph.
1514fec65c98SchristosThis is a Heirloom extension and currently unsupported.
1515c9bcef03Schristos.It Ic \&pso Ar command
1516fec65c98SchristosInclude output of a shell command.
1517fec65c98SchristosIgnored because insecure.
1518c9bcef03Schristos.It Ic \&ptr
1519c9bcef03SchristosPrint the names and positions of all traps on standard error output.
1520fec65c98SchristosThis is a groff extension and currently ignored.
1521c9bcef03Schristos.It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1522fec65c98SchristosChange post-vertical spacing.
1523fec65c98SchristosThis is a groff extension and currently ignored.
1524c9bcef03Schristos.It Ic \&rchar Ar glyph ...
1525fec65c98SchristosRemove glyph definitions.
1526fec65c98SchristosCurrently unsupported.
1527c9bcef03Schristos.It Ic \&rd Op Ar prompt Op Ar argument ...
1528fec65c98SchristosRead from standard input.
1529fec65c98SchristosCurrently ignored.
1530c9bcef03Schristos.It Ic \&recursionlimit Ar maxrec maxtail
1531fec65c98SchristosSet the maximum stack depth for recursive macros.
1532fec65c98SchristosThis is a Heirloom extension and currently ignored.
1533c9bcef03Schristos.It Ic \&return Op Ar twice
1534*544c191cSchristosExit the presently executed macro and return to the caller.
1535*544c191cSchristosThe argument is currently ignored.
1536c9bcef03Schristos.It Ic \&rfschar Ar font glyph ...
1537fec65c98SchristosRemove font-specific fallback glyph definitions.
1538fec65c98SchristosCurrently unsupported.
1539c9bcef03Schristos.It Ic \&rhang Ar font char ... afmunits
1540fec65c98SchristosHang characters at right margin.
1541fec65c98SchristosThis is a Heirloom extension and currently ignored.
1542c9bcef03Schristos.It Ic \&rj Op Ar N
1543c9bcef03SchristosJustify the next
1544c9bcef03Schristos.Ar N
1545c9bcef03Schristosinput lines to the right margin without filling.
1546c9bcef03Schristos.Ar N
1547c9bcef03Schristosdefaults to 1.
1548c9bcef03SchristosAn argument of 0 or less ends right adjustment.
1549c9bcef03Schristos.It Ic \&rm Ar macroname
1550fec65c98SchristosRemove a request, macro or string.
1551c9bcef03Schristos.It Ic \&rn Ar oldname newname
1552fec65c98SchristosRename a request, macro, diversion, or string.
1553c9bcef03SchristosIn
1554c9bcef03Schristos.Xr mandoc 1 ,
1555c9bcef03Schristosuser-defined macros,
1556c9bcef03Schristos.Xr mdoc 7
1557c9bcef03Schristosand
1558c9bcef03Schristos.Xr man 7
1559c9bcef03Schristosmacros, and user-defined strings can be renamed, but renaming of
1560c9bcef03Schristospredefined strings and of
1561c9bcef03Schristos.Nm
1562c9bcef03Schristosrequests is not supported, and diversions are not implemented at all.
1563c9bcef03Schristos.It Ic \&rnn Ar oldname newname
1564fec65c98SchristosRename a number register.
1565fec65c98SchristosCurrently unsupported.
1566c9bcef03Schristos.It Ic \&rr Ar register
1567fec65c98SchristosRemove a register.
1568c9bcef03Schristos.It Ic \&rs
1569fec65c98SchristosEnd no-space mode.
1570fec65c98SchristosCurrently ignored.
1571c9bcef03Schristos.It Ic \&rt Op Ar dist
1572fec65c98SchristosReturn to marked vertical position.
1573fec65c98SchristosCurrently ignored.
1574c9bcef03Schristos.It Ic \&schar Ar glyph Op Ar string
1575fec65c98SchristosDefine global fallback glyph.
1576fec65c98SchristosThis is a groff extension and currently unsupported.
1577c9bcef03Schristos.It Ic \&sentchar Ar char ...
1578fec65c98SchristosDefine sentence-ending characters.
1579fec65c98SchristosThis is a Heirloom extension and currently ignored.
1580c9bcef03Schristos.It Ic \&shc Op Ar glyph
1581fec65c98SchristosChange the soft hyphen character.
1582fec65c98SchristosCurrently ignored.
1583c9bcef03Schristos.It Ic \&shift Op Ar number
1584*544c191cSchristosShift macro arguments
1585*544c191cSchristos.Ar number
1586*544c191cSchristostimes, by default once: \e\e$i becomes what \e\e$i+number was.
1587*544c191cSchristosAlso decrement \en(.$ by
1588*544c191cSchristos.Ar number .
1589c9bcef03Schristos.It Ic \&sizes Ar size ...
1590fec65c98SchristosDefine permissible point sizes.
1591fec65c98SchristosThis is a groff extension and currently ignored.
1592c9bcef03Schristos.It Ic \&so Ar filename
1593c0d9444aSjoergInclude a source file.
1594c9bcef03SchristosThe file is read and its contents processed as input in place of the
1595c9bcef03Schristos.Ic \&so
1596c0d9444aSjoergrequest line.
1597c5f73b34SjoergTo avoid inadvertent inclusion of unrelated files,
1598c0d9444aSjoerg.Xr mandoc 1
1599c0d9444aSjoergonly accepts relative paths not containing the strings
1600c0d9444aSjoerg.Qq ../
1601c0d9444aSjoergand
1602c0d9444aSjoerg.Qq /.. .
16030f0fda1cSjoerg.Pp
16040f0fda1cSjoergThis request requires
16050f0fda1cSjoerg.Xr man 1
16060f0fda1cSjoergto change to the right directory before calling
16070f0fda1cSjoerg.Xr mandoc 1 ,
16080f0fda1cSjoergper convention to the root of the manual tree.
16090f0fda1cSjoergTypical usage looks like:
16100f0fda1cSjoerg.Pp
16110f0fda1cSjoerg.Dl \&.so man3/Xcursor.3
16120f0fda1cSjoerg.Pp
16130f0fda1cSjoergAs the whole concept is rather fragile, the use of
1614c9bcef03Schristos.Ic \&so
16150f0fda1cSjoergis discouraged.
16160f0fda1cSjoergUse
16170f0fda1cSjoerg.Xr ln 1
16180f0fda1cSjoerginstead.
1619c9bcef03Schristos.It Ic \&sp Op Ar height
1620c9bcef03SchristosBreak the output line and emit vertical space.
1621c9bcef03SchristosThe argument follows the syntax of
1622c9bcef03Schristos.Sx Scaling Widths
1623c9bcef03Schristosand defaults to one blank line
1624c9bcef03Schristos.Pq Li 1v .
1625c9bcef03Schristos.It Ic \&spacewidth Op Cm 1 | 0
1626fec65c98SchristosSet the space width from the font metrics file.
1627fec65c98SchristosThis is a Heirloom extension and currently ignored.
1628c9bcef03Schristos.It Ic \&special Op Ar font ...
1629fec65c98SchristosDefine a special font.
1630fec65c98SchristosThis is a groff extension and currently ignored.
1631c9bcef03Schristos.It Ic \&spreadwarn Op Ar width
1632fec65c98SchristosWarn about wide spacing between words.
1633fec65c98SchristosCurrently ignored.
1634c9bcef03Schristos.It Ic \&ss Ar wordspace Op Ar sentencespace
1635fec65c98SchristosSet space character size.
1636fec65c98SchristosCurrently ignored.
1637c9bcef03Schristos.It Ic \&sty Ar position style
1638fec65c98SchristosAssociate style with a font position.
1639fec65c98SchristosThis is a groff extension and currently ignored.
1640c9bcef03Schristos.It Ic \&substring Ar stringname startpos Op Ar endpos
1641fec65c98SchristosReplace a user-defined string with a substring.
1642fec65c98SchristosCurrently unsupported.
1643c9bcef03Schristos.It Ic \&sv Op Ar height
1644fec65c98SchristosSave vertical space.
1645fec65c98SchristosCurrently ignored.
1646c9bcef03Schristos.It Ic \&sy Ar command
1647fec65c98SchristosExecute shell command.
1648fec65c98SchristosIgnored because insecure.
1649c9bcef03Schristos.It Ic \&T&
1650fec65c98SchristosRe-start a table layout, retaining the options of the prior table
1651fec65c98Schristosinvocation.
1652fec65c98SchristosSee
1653*544c191cSchristos.Ic \&TS .
1654c9bcef03Schristos.It Ic \&ta Op Ar width ... Op Cm T Ar width ...
165548741257SjoergSet tab stops.
1656c9bcef03SchristosEach
1657c9bcef03Schristos.Ar width
1658c9bcef03Schristosargument follows the syntax of
1659c9bcef03Schristos.Sx Scaling Widths .
1660c9bcef03SchristosIf prefixed by a plus sign, it is relative to the previous tab stop.
1661c9bcef03SchristosThe arguments after the
1662c9bcef03Schristos.Cm T
1663c9bcef03Schristosmarker are used repeatedly as often as needed; for each reuse,
1664c9bcef03Schristosthey are taken relative to the last previously established tab stop.
1665c9bcef03SchristosWhen
1666c9bcef03Schristos.Ic \&ta
1667c9bcef03Schristosis called without arguments, all tab stops are cleared.
1668c9bcef03Schristos.It Ic \&tc Op Ar glyph
16699ff1f2acSchristosChange tab repetition character.
1670fec65c98SchristosCurrently unsupported.
1671c9bcef03Schristos.It Ic \&TE
1672fec65c98SchristosEnd a table context.
1673fec65c98SchristosSee
1674*544c191cSchristos.Ic \&TS .
1675c9bcef03Schristos.It Ic \&ti Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1676c9bcef03SchristosBreak the output line and indent the next output line by
1677c9bcef03Schristos.Ar width .
1678c9bcef03SchristosIf a sign is specified, the temporary indentation is calculated
1679c9bcef03Schristosrelative to the current indentation; otherwise, it is absolute.
1680c9bcef03SchristosThe argument follows the syntax of
1681c9bcef03Schristos.Sx Scaling Widths
1682c9bcef03Schristosand the default scaling unit is
1683c9bcef03Schristos.Cm m .
1684c9bcef03Schristos.It Ic \&tkf Ar font minps width1 maxps width2
1685fec65c98SchristosEnable track kerning for a font.
1686fec65c98SchristosCurrently ignored.
1687c9bcef03Schristos.It Ic \&tl No \& Ap Ar left Ap Ar center Ap Ar right Ap
1688fec65c98SchristosPrint a title line.
1689fec65c98SchristosCurrently unsupported.
1690c9bcef03Schristos.It Ic \&tm Ar string
1691fec65c98SchristosPrint to standard error output.
1692fec65c98SchristosCurrently ignored.
1693c9bcef03Schristos.It Ic \&tm1 Ar string
1694fec65c98SchristosPrint to standard error output, allowing leading blanks.
1695fec65c98SchristosThis is a groff extension and currently ignored.
1696c9bcef03Schristos.It Ic \&tmc Ar string
1697fec65c98SchristosPrint to standard error output without a trailing newline.
1698fec65c98SchristosThis is a groff extension and currently ignored.
1699c9bcef03Schristos.It Ic \&tr Ar glyph glyph ...
17000a84adc5SjoergOutput character translation.
1701c9bcef03SchristosThe first glyph in each pair is replaced by the second one.
1702c9bcef03SchristosCharacter escapes can be used; for example,
1703c5f73b34Sjoerg.Pp
1704c5f73b34Sjoerg.Dl tr \e(xx\e(yy
1705c5f73b34Sjoerg.Pp
1706c5f73b34Sjoergreplaces all invocations of \e(xx with \e(yy.
1707c9bcef03Schristos.It Ic \&track Ar font minps width1 maxps width2
1708fec65c98SchristosStatic letter space tracking.
1709fec65c98SchristosThis is a Heirloom extension and currently ignored.
1710c9bcef03Schristos.It Ic \&transchar Ar char ...
1711fec65c98SchristosDefine transparent characters for sentence-ending.
1712fec65c98SchristosThis is a Heirloom extension and currently ignored.
1713c9bcef03Schristos.It Ic \&trf Ar filename
1714fec65c98SchristosOutput the contents of a file, disallowing invalid characters.
1715fec65c98SchristosThis is a groff extension and ignored because insecure.
1716c9bcef03Schristos.It Ic \&trimat Ar left top width height
1717fec65c98SchristosSet the TrimBox page parameter for PDF generation.
1718fec65c98SchristosThis is a Heirloom extension and currently ignored.
1719c9bcef03Schristos.It Ic \&trin Ar glyph glyph ...
1720fec65c98SchristosOutput character translation, ignored by
1721c9bcef03Schristos.Ic \&asciify .
1722fec65c98SchristosCurrently unsupported.
1723c9bcef03Schristos.It Ic \&trnt Ar glyph glyph ...
1724fec65c98SchristosOutput character translation, ignored by \e!.
1725fec65c98SchristosCurrently unsupported.
1726c9bcef03Schristos.It Ic \&troff
1727fec65c98SchristosForce troff mode.
1728fec65c98SchristosThis is a groff extension and currently ignored.
1729c9bcef03Schristos.It Ic \&TS
1730c0d9444aSjoergBegin a table, which formats input in aligned rows and columns.
1731c0d9444aSjoergSee
1732c0d9444aSjoerg.Xr tbl 7
1733c0d9444aSjoergfor a description of the tbl language.
1734c9bcef03Schristos.It Ic \&uf Ar font
1735fec65c98SchristosGlobally set the underline font.
1736fec65c98SchristosCurrently ignored.
1737c9bcef03Schristos.It Ic \&ul Op Ar N
1738c9bcef03SchristosUnderline next
1739c9bcef03Schristos.Ar N
1740c9bcef03Schristosinput lines.
1741fec65c98SchristosCurrently ignored.
1742c9bcef03Schristos.It Ic \&unformat Ar divname
1743fec65c98SchristosUnformat spaces and tabs in a diversion.
1744fec65c98SchristosCurrently unsupported.
1745c9bcef03Schristos.It Ic \&unwatch Ar macroname
1746fec65c98SchristosDisable notification for string or macro.
1747fec65c98SchristosThis is a Heirloom extension and currently ignored.
1748c9bcef03Schristos.It Ic \&unwatchn Ar register
1749fec65c98SchristosDisable notification for register.
1750fec65c98SchristosThis is a Heirloom extension and currently ignored.
1751c9bcef03Schristos.It Ic \&vpt Op Cm 1 | 0
1752fec65c98SchristosEnable or disable vertical position traps.
1753fec65c98SchristosThis is a groff extension and currently ignored.
1754c9bcef03Schristos.It Ic \&vs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1755fec65c98SchristosChange vertical spacing.
1756fec65c98SchristosCurrently ignored.
1757c9bcef03Schristos.It Ic \&warn Ar flags
1758fec65c98SchristosSet warning level.
1759fec65c98SchristosCurrently ignored.
1760c9bcef03Schristos.It Ic \&warnscale Ar si
1761fec65c98SchristosSet the scaling indicator used in warnings.
1762fec65c98SchristosThis is a groff extension and currently ignored.
1763c9bcef03Schristos.It Ic \&watch Ar macroname
1764fec65c98SchristosNotify on change of string or macro.
1765fec65c98SchristosThis is a Heirloom extension and currently ignored.
1766c9bcef03Schristos.It Ic \&watchlength Ar maxlength
1767fec65c98SchristosOn change, report the contents of macros and strings
17689ff1f2acSchristosup to the specified length.
1769fec65c98SchristosThis is a Heirloom extension and currently ignored.
1770c9bcef03Schristos.It Ic \&watchn Ar register
1771fec65c98SchristosNotify on change of register.
1772fec65c98SchristosThis is a Heirloom extension and currently ignored.
1773c9bcef03Schristos.It Ic \&wh Ar dist Op Ar macroname
1774fec65c98SchristosSet a page location trap.
1775fec65c98SchristosCurrently unsupported.
1776c9bcef03Schristos.It Ic \&while Ar condition body
1777*544c191cSchristosRepeated execution while a
1778*544c191cSchristos.Ar condition
1779*544c191cSchristosis true, with syntax similar to
1780*544c191cSchristos.Ic \&if .
1781*544c191cSchristosCurrently implemented with two restrictions: cannot nest,
1782*544c191cSchristosand each loop must start and end in the same scope.
1783c9bcef03Schristos.It Ic \&write Oo \(dq Oc Ns Ar string
1784fec65c98SchristosWrite to an open file.
1785fec65c98SchristosIgnored because insecure.
1786c9bcef03Schristos.It Ic \&writec Oo \(dq Oc Ns Ar string
1787fec65c98SchristosWrite to an open file without appending a newline.
1788fec65c98SchristosIgnored because insecure.
1789c9bcef03Schristos.It Ic \&writem Ar macroname
1790fec65c98SchristosWrite macro or string to an open file.
1791fec65c98SchristosIgnored because insecure.
1792c9bcef03Schristos.It Ic \&xflag Ar level
1793fec65c98SchristosSet the extension level.
1794fec65c98SchristosThis is a Heirloom extension and currently ignored.
1795c9bcef03Schristos.El
1796fec65c98Schristos.Ss Numerical expressions
1797fec65c98SchristosThe
1798*544c191cSchristos.Ic \&nr ,
1799*544c191cSchristos.Ic \&if ,
1800fec65c98Schristosand
1801*544c191cSchristos.Ic \&ie
1802fec65c98Schristosrequests accept integer numerical expressions as arguments.
1803fec65c98SchristosThese are always evaluated using the C
1804fec65c98Schristos.Vt int
1805fec65c98Schristostype; integer overflow works the same way as in the C language.
1806fec65c98SchristosNumbers consist of an arbitrary number of digits
1807fec65c98Schristos.Sq 0
1808fec65c98Schristosto
1809fec65c98Schristos.Sq 9
1810fec65c98Schristosprefixed by an optional sign
1811fec65c98Schristos.Sq +
1812fec65c98Schristosor
1813fec65c98Schristos.Sq - .
1814fec65c98SchristosEach number may be followed by one optional scaling unit described below
1815fec65c98Schristos.Sx Scaling Widths .
1816fec65c98SchristosThe following equations hold:
1817fec65c98Schristos.Bd -literal -offset indent
1818fec65c98Schristos1i = 6v = 6P = 10m = 10n = 72p = 1000M = 240u = 240
1819fec65c98Schristos254c = 100i = 24000u = 24000
1820fec65c98Schristos1f = 65536u = 65536
1821fec65c98Schristos.Ed
1822fec65c98Schristos.Pp
1823fec65c98SchristosThe following binary operators are implemented.
1824fec65c98SchristosUnless otherwise stated, they behave as in the C language:
1825fec65c98Schristos.Pp
1826fec65c98Schristos.Bl -tag -width 2n -compact
1827fec65c98Schristos.It Ic +
1828fec65c98Schristosaddition
1829fec65c98Schristos.It Ic -
1830fec65c98Schristossubtraction
1831fec65c98Schristos.It Ic *
1832fec65c98Schristosmultiplication
1833fec65c98Schristos.It Ic /
1834fec65c98Schristosdivision
1835fec65c98Schristos.It Ic %
1836fec65c98Schristosremainder of division
1837fec65c98Schristos.It Ic <
1838fec65c98Schristosless than
1839fec65c98Schristos.It Ic >
1840fec65c98Schristosgreater than
1841fec65c98Schristos.It Ic ==
1842fec65c98Schristosequal to
1843fec65c98Schristos.It Ic =
1844fec65c98Schristosequal to, same effect as
1845fec65c98Schristos.Ic ==
1846fec65c98Schristos(this differs from C)
1847fec65c98Schristos.It Ic <=
1848fec65c98Schristosless than or equal to
1849fec65c98Schristos.It Ic >=
1850fec65c98Schristosgreater than or equal to
1851fec65c98Schristos.It Ic <>
1852fec65c98Schristosnot equal to (corresponds to C
1853fec65c98Schristos.Ic != ;
1854fec65c98Schristosthis one is of limited portability, it is supported by Heirloom roff,
1855fec65c98Schristosbut not by groff)
1856fec65c98Schristos.It Ic &
1857fec65c98Schristoslogical and (corresponds to C
1858fec65c98Schristos.Ic && )
1859fec65c98Schristos.It Ic \&:
1860fec65c98Schristoslogical or (corresponds to C
1861c9bcef03Schristos.Ic || )
1862fec65c98Schristos.It Ic <?
1863fec65c98Schristosminimum (not available in C)
1864fec65c98Schristos.It Ic >?
1865fec65c98Schristosmaximum (not available in C)
1866fec65c98Schristos.El
1867fec65c98Schristos.Pp
18689ff1f2acSchristosThere is no concept of precedence; evaluation proceeds from left to right,
1869c9bcef03Schristosexcept when subexpressions are enclosed in parentheses.
1870fec65c98SchristosInside parentheses, whitespace is ignored.
187170f041f9Sjoerg.Sh ESCAPE SEQUENCE REFERENCE
187270f041f9SjoergThe
187370f041f9Sjoerg.Xr mandoc 1
187470f041f9Sjoerg.Nm
187570f041f9Sjoergparser recognises the following escape sequences.
187670f041f9SjoergIn
187770f041f9Sjoerg.Xr mdoc 7
187870f041f9Sjoergand
187970f041f9Sjoerg.Xr man 7
188070f041f9Sjoergdocuments, using escape sequences is discouraged except for those
188170f041f9Sjoergdescribed in the
188270f041f9Sjoerg.Sx LANGUAGE SYNTAX
188370f041f9Sjoergsection above.
188470f041f9Sjoerg.Pp
188570f041f9SjoergA backslash followed by any character not listed here
188670f041f9Sjoergsimply prints that character itself.
1887*544c191cSchristos.Bl -tag -width Ds
1888*544c191cSchristos.It Ic \e<newline>
188970f041f9SjoergA backslash at the end of an input line can be used to continue the
189070f041f9Sjoerglogical input line on the next physical input line, joining the text
189170f041f9Sjoergon both lines together as if it were on a single input line.
1892*544c191cSchristos.It Ic \e<space>
189370f041f9SjoergThe escape sequence backslash-space
189470f041f9Sjoerg.Pq Sq \e\ \&
189570f041f9Sjoergis an unpaddable space-sized non-breaking space character; see
1896*544c191cSchristos.Sx Whitespace
1897*544c191cSchristosand
1898*544c191cSchristos.Xr mandoc_char 7 .
1899*544c191cSchristos.It Ic \e!
1900*544c191cSchristosEmbed text up to and including the end of the input line into the
1901*544c191cSchristoscurrent diversion or into intermediate output without interpreting
1902*544c191cSchristosrequests, macros, and escapes.
1903*544c191cSchristosCurrently unsupported.
1904*544c191cSchristos.It Ic \e\(dq
190570f041f9SjoergThe rest of the input line is treated as
190670f041f9Sjoerg.Sx Comments .
1907*544c191cSchristos.It Ic \e#
1908*544c191cSchristosLine continuation with comment.
1909*544c191cSchristosDiscard the rest of the physical input line and continue the logical
1910*544c191cSchristosinput line on the next physical input line, joining the text on
1911*544c191cSchristosboth lines together as if it were on a single input line.
1912*544c191cSchristosThis is a groff extension.
1913*544c191cSchristos.It Ic \e$ Ns Ar arg
1914*544c191cSchristosMacro argument expansion, see
1915*544c191cSchristos.Ic \&de .
1916*544c191cSchristos.It Ic \e%
191770f041f9SjoergHyphenation allowed at this point of the word; ignored by
191870f041f9Sjoerg.Xr mandoc 1 .
1919*544c191cSchristos.It Ic \e&
1920*544c191cSchristosNon-printing zero-width character,
1921*544c191cSchristosoften used for various kinds of escaping; see
1922*544c191cSchristos.Sx Whitespace ,
1923*544c191cSchristos.Xr mandoc_char 7 ,
1924*544c191cSchristosand the
1925*544c191cSchristos.Dq MACRO SYNTAX
1926*544c191cSchristosand
1927*544c191cSchristos.Dq Delimiters
1928*544c191cSchristossections in
1929*544c191cSchristos.Xr mdoc 7 .
1930*544c191cSchristos.It Ic \e\(aq
193170f041f9SjoergAcute accent special character; use
1932*544c191cSchristos.Ic \e(aa
193370f041f9Sjoerginstead.
1934*544c191cSchristos.It Ic \e( Ns Ar cc
193570f041f9Sjoerg.Sx Special Characters
193670f041f9Sjoergwith two-letter names, see
193770f041f9Sjoerg.Xr mandoc_char 7 .
1938*544c191cSchristos.It Ic \e)
1939*544c191cSchristosZero-width space transparent to end-of-sentence detection;
1940*544c191cSchristosignored by
1941*544c191cSchristos.Xr mandoc 1 .
1942*544c191cSchristos.It Ic \e*[ Ns Ar name Ns Ic \&]
194370f041f9SjoergInterpolate the string with the
1944*544c191cSchristos.Ar name .
194570f041f9SjoergFor short names, there are variants
1946*544c191cSchristos.Ic \e* Ns Ar c
194770f041f9Sjoergand
1948*544c191cSchristos.Ic \e*( Ns Ar cc .
1949*544c191cSchristos.Pp
1950*544c191cSchristosOne string is predefined on the
1951*544c191cSchristos.Nm
1952*544c191cSchristoslanguage level:
1953*544c191cSchristos.Ic \e*(.T
1954*544c191cSchristosexpands to the name of the output device,
1955*544c191cSchristosfor example ascii, utf8, ps, pdf, html, or markdown.
1956*544c191cSchristos.Pp
1957*544c191cSchristosMacro sets traditionally predefine additional strings which are not
1958*544c191cSchristosportable and differ across implementations.
1959*544c191cSchristosThose supported by
1960*544c191cSchristos.Xr mandoc 1
1961*544c191cSchristosare listed in
1962*544c191cSchristos.Xr mandoc_char 7 .
1963*544c191cSchristos.Pp
1964*544c191cSchristosStrings can be defined, changed, and deleted with the
1965*544c191cSchristos.Ic \&ds ,
1966*544c191cSchristos.Ic \&as ,
1967*544c191cSchristosand
1968*544c191cSchristos.Ic \&rm
1969*544c191cSchristosrequests.
1970*544c191cSchristos.It Ic \e,
19719ff1f2acSchristosLeft italic correction (groff extension); ignored by
19729ff1f2acSchristos.Xr mandoc 1 .
1973*544c191cSchristos.It Ic \e-
197470f041f9SjoergSpecial character
1975*544c191cSchristos.Dq mathematical minus sign ;
1976*544c191cSchristossee
1977*544c191cSchristos.Xr mandoc_char 7
1978*544c191cSchristosfor details.
1979*544c191cSchristos.It Ic \e/
19809ff1f2acSchristosRight italic correction (groff extension); ignored by
19819ff1f2acSchristos.Xr mandoc 1 .
1982*544c191cSchristos.It Ic \e:
1983*544c191cSchristosBreaking the line is allowed at this point of the word
1984*544c191cSchristoswithout inserting a hyphen.
1985*544c191cSchristos.It Ic \e?
1986*544c191cSchristosEmbed the text up to the next
1987*544c191cSchristos.Ic \e?
1988*544c191cSchristosinto the current diversion without interpreting requests, macros,
1989*544c191cSchristosand escapes.
1990*544c191cSchristosThis is a groff extension and currently unsupported.
1991*544c191cSchristos.It Ic \e[ Ns Ar name Ns Ic \&]
199270f041f9Sjoerg.Sx Special Characters
199370f041f9Sjoergwith names of arbitrary length, see
199470f041f9Sjoerg.Xr mandoc_char 7 .
1995*544c191cSchristos.It Ic \e^
199670f041f9SjoergOne-twelfth em half-narrow space character, effectively zero-width in
199770f041f9Sjoerg.Xr mandoc 1 .
1998*544c191cSchristos.It Ic \e_
1999*544c191cSchristosUnderline special character; use
2000*544c191cSchristos.Ic \e(ul
200170f041f9Sjoerginstead.
2002*544c191cSchristos.It Ic \e`
2003*544c191cSchristosGrave accent special character; use
2004*544c191cSchristos.Ic \e(ga
2005*544c191cSchristosinstead.
2006*544c191cSchristos.It Ic \e{
200770f041f9SjoergBegin conditional input; see
2008*544c191cSchristos.Ic \&if .
2009*544c191cSchristos.It Ic \e\(ba
201070f041f9SjoergOne-sixth em narrow space character, effectively zero-width in
201170f041f9Sjoerg.Xr mandoc 1 .
2012*544c191cSchristos.It Ic \e}
201370f041f9SjoergEnd conditional input; see
2014*544c191cSchristos.Ic \&if .
2015*544c191cSchristos.It Ic \e~
201670f041f9SjoergPaddable non-breaking space character.
2017*544c191cSchristos.It Ic \e0
201870f041f9SjoergDigit width space character.
2019*544c191cSchristos.It Ic \eA\(aq Ns Ar string Ns Ic \(aq
202070f041f9SjoergAnchor definition; ignored by
202170f041f9Sjoerg.Xr mandoc 1 .
2022*544c191cSchristos.It Ic \ea
2023*544c191cSchristosLeader character; ignored by
2024*544c191cSchristos.Xr mandoc 1 .
2025*544c191cSchristos.It Ic \eB\(aq Ns Ar string Ns Ic \(aq
2026fec65c98SchristosInterpolate
2027fec65c98Schristos.Sq 1
2028fec65c98Schristosif
202970f041f9Sjoerg.Ar string
2030fec65c98Schristosconforms to the syntax of
2031fec65c98Schristos.Sx Numerical expressions
2032*544c191cSchristosexplained above or
2033fec65c98Schristos.Sq 0
2034fec65c98Schristosotherwise.
2035*544c191cSchristos.It Ic \eb\(aq Ns Ar string Ns Ic \(aq
203670f041f9SjoergBracket building function; ignored by
203770f041f9Sjoerg.Xr mandoc 1 .
2038*544c191cSchristos.It Ic \eC\(aq Ns Ar name Ns Ic \(aq
203970f041f9Sjoerg.Sx Special Characters
204070f041f9Sjoergwith names of arbitrary length.
2041*544c191cSchristos.It Ic \ec
2042fec65c98SchristosWhen encountered at the end of an input text line,
2043fec65c98Schristosthe next input text line is considered to continue that line,
2044fec65c98Schristoseven if there are request or macro lines in between.
2045fec65c98SchristosNo whitespace is inserted.
2046*544c191cSchristos.It Ic \eD\(aq Ns Ar string Ns Ic \(aq
204770f041f9SjoergDraw graphics function; ignored by
204870f041f9Sjoerg.Xr mandoc 1 .
2049*544c191cSchristos.It Ic \ed
205070f041f9SjoergMove down by half a line; ignored by
205170f041f9Sjoerg.Xr mandoc 1 .
2052*544c191cSchristos.It Ic \eE
2053*544c191cSchristosEscape character intended to not be interpreted in copy mode.
2054*544c191cSchristosIn
2055*544c191cSchristos.Xr mandoc 1 ,
2056*544c191cSchristosit currently does the same as
2057*544c191cSchristos.Ic \e
2058*544c191cSchristositself.
2059*544c191cSchristos.It Ic \ee
206070f041f9SjoergBackslash special character.
2061*544c191cSchristos.It Ic \eF[ Ns Ar name Ns Ic \&]
206270f041f9SjoergSwitch font family (groff extension); ignored by
206370f041f9Sjoerg.Xr mandoc 1 .
206470f041f9SjoergFor short names, there are variants
2065*544c191cSchristos.Ic \eF Ns Ar c
206670f041f9Sjoergand
2067*544c191cSchristos.Ic \eF( Ns Ar cc .
2068*544c191cSchristos.It Ic \ef[ Ns Ar name Ns Ic \&]
206970f041f9SjoergSwitch to the font
207070f041f9Sjoerg.Ar name ,
207170f041f9Sjoergsee
2072*544c191cSchristos.Sx Font Selection .
207370f041f9SjoergFor short names, there are variants
2074*544c191cSchristos.Ic \ef Ns Ar c
207570f041f9Sjoergand
2076*544c191cSchristos.Ic \ef( Ns Ar cc .
2077*544c191cSchristosAn empty name
2078*544c191cSchristos.Ic \ef[]
2079*544c191cSchristosdefaults to
2080*544c191cSchristos.Ic \efP .
2081*544c191cSchristos.It Ic \eg[ Ns Ar name Ns Ic \&]
208270f041f9SjoergInterpolate the format of a number register; ignored by
208370f041f9Sjoerg.Xr mandoc 1 .
208470f041f9SjoergFor short names, there are variants
2085*544c191cSchristos.Ic \eg Ns Ar c
208670f041f9Sjoergand
2087*544c191cSchristos.Ic \eg( Ns Ar cc .
2088*544c191cSchristos.It Ic \eH\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
208970f041f9SjoergSet the height of the current font; ignored by
209070f041f9Sjoerg.Xr mandoc 1 .
2091*544c191cSchristos.It Ic \eh\(aq Ns Oo Cm \&| Oc Ns Ar width Ns Ic \(aq
2092c9bcef03SchristosHorizontal motion.
2093c9bcef03SchristosIf the vertical bar is given, the motion is relative to the current
2094c9bcef03Schristosindentation.
2095c9bcef03SchristosOtherwise, it is relative to the current position.
2096c9bcef03SchristosThe default scaling unit is
2097c9bcef03Schristos.Cm m .
2098*544c191cSchristos.It Ic \ek[ Ns Ar name Ns Ic \&]
209970f041f9SjoergMark horizontal input place in register; ignored by
210070f041f9Sjoerg.Xr mandoc 1 .
210170f041f9SjoergFor short names, there are variants
2102*544c191cSchristos.Ic \ek Ns Ar c
210370f041f9Sjoergand
2104*544c191cSchristos.Ic \ek( Ns Ar cc .
2105*544c191cSchristos.It Ic \eL\(aq Ns Ar number Ns Oo Ar c Oc Ns Ic \(aq
210670f041f9SjoergVertical line drawing function; ignored by
210770f041f9Sjoerg.Xr mandoc 1 .
2108*544c191cSchristos.It Ic \el\(aq Ns Ar width Ns Oo Ar c Oc Ns Ic \(aq
2109c9bcef03SchristosDraw a horizontal line of
2110c9bcef03Schristos.Ar width
2111c9bcef03Schristosusing the glyph
2112c9bcef03Schristos.Ar c .
2113*544c191cSchristos.It Ic \eM[ Ns Ar name Ns Ic \&]
211470f041f9SjoergSet fill (background) color (groff extension); ignored by
211570f041f9Sjoerg.Xr mandoc 1 .
211670f041f9SjoergFor short names, there are variants
2117*544c191cSchristos.Ic \eM Ns Ar c
211870f041f9Sjoergand
2119*544c191cSchristos.Ic \eM( Ns Ar cc .
2120*544c191cSchristos.It Ic \em[ Ns Ar name Ns Ic \&]
212170f041f9SjoergSet glyph drawing color (groff extension); ignored by
212270f041f9Sjoerg.Xr mandoc 1 .
212370f041f9SjoergFor short names, there are variants
2124*544c191cSchristos.Ic \em Ns Ar c
212570f041f9Sjoergand
2126*544c191cSchristos.Ic \em( Ns Ar cc .
2127*544c191cSchristos.It Ic \eN\(aq Ns Ar number Ns Ic \(aq
212870f041f9SjoergCharacter
212970f041f9Sjoerg.Ar number
213070f041f9Sjoergon the current font.
2131*544c191cSchristos.It Ic \en Ns Oo +|- Oc Ns Ic \&[ Ns Ar name Ns Ic \&]
213270f041f9SjoergInterpolate the number register
213370f041f9Sjoerg.Ar name .
213470f041f9SjoergFor short names, there are variants
2135*544c191cSchristos.Ic \en Ns Ar c
213670f041f9Sjoergand
2137*544c191cSchristos.Ic \en( Ns Ar cc .
2138c9bcef03SchristosIf the optional sign is specified,
2139c9bcef03Schristosthe register is first incremented or decremented by the
2140c9bcef03Schristos.Ar stepsize
2141c9bcef03Schristosthat was specified in the relevant
2142c9bcef03Schristos.Ic \&nr
2143c9bcef03Schristosrequest, and the changed value is interpolated.
2144*544c191cSchristos.It Ic \eO Ns Ar digit , Ic \eO[5 Ns arguments Ns Ic \&]
2145*544c191cSchristosSuppress output.
2146*544c191cSchristosThis is a groff extension and currently unsupported.
2147*544c191cSchristosWith an argument of
2148*544c191cSchristos.Ic 1 , 2 , 3 ,
2149*544c191cSchristosor
2150*544c191cSchristos.Ic 4 ,
2151*544c191cSchristosit is ignored.
2152*544c191cSchristos.It Ic \eo\(aq Ns Ar string Ns Ic \(aq
2153fec65c98SchristosOverstrike, writing all the characters contained in the
2154fec65c98Schristos.Ar string
2155fec65c98Schristosto the same output position.
2156fec65c98SchristosIn terminal and HTML output modes,
2157fec65c98Schristosonly the last one of the characters is visible.
2158*544c191cSchristos.It Ic \ep
2159c9bcef03SchristosBreak the output line at the end of the current word.
2160*544c191cSchristos.It Ic \eR\(aq Ns Ar name Oo +|- Oc Ns Ar number Ns Ic \(aq
216170f041f9SjoergSet number register; ignored by
216270f041f9Sjoerg.Xr mandoc 1 .
2163*544c191cSchristos.It Ic \er
2164*544c191cSchristosMove up by one line; ignored by
2165*544c191cSchristos.Xr mandoc 1 .
2166*544c191cSchristos.It Ic \eS\(aq Ns Ar number Ns Ic \(aq
216770f041f9SjoergSlant output; ignored by
216870f041f9Sjoerg.Xr mandoc 1 .
2169*544c191cSchristos.It Ic \es\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
217070f041f9SjoergChange point size; ignored by
217170f041f9Sjoerg.Xr mandoc 1 .
217270f041f9SjoergAlternative forms
2173*544c191cSchristos.Ic \es Ns Oo +|- Oc Ns Ar n ,
2174*544c191cSchristos.Ic \es Ns Oo +|- Oc Ns Ic \(aq Ns Ar number Ns Ic \(aq ,
2175*544c191cSchristos.Ic \es[ Ns Oo +|- Oc Ns Ar number Ns Ic \&] ,
217670f041f9Sjoergand
2177*544c191cSchristos.Ic \es Ns Oo +|- Oc Ns Ic \&[ Ns Ar number Ns Ic \&]
217870f041f9Sjoergare also parsed and ignored.
2179*544c191cSchristos.It Ic \et
218070f041f9SjoergHorizontal tab; ignored by
218170f041f9Sjoerg.Xr mandoc 1 .
2182*544c191cSchristos.It Ic \eu
218370f041f9SjoergMove up by half a line; ignored by
218470f041f9Sjoerg.Xr mandoc 1 .
2185*544c191cSchristos.It Ic \eV[ Ns Ar name Ns Ic \&]
218670f041f9SjoergInterpolate an environment variable; ignored by
218770f041f9Sjoerg.Xr mandoc 1 .
218870f041f9SjoergFor short names, there are variants
2189*544c191cSchristos.Ic \eV Ns Ar c
219070f041f9Sjoergand
2191*544c191cSchristos.Ic \eV( Ns Ar cc .
2192*544c191cSchristos.It Ic \ev\(aq Ns Ar number Ns Ic \(aq
219370f041f9SjoergVertical motion; ignored by
219470f041f9Sjoerg.Xr mandoc 1 .
2195*544c191cSchristos.It Ic \ew\(aq Ns Ar string Ns Ic \(aq
219670f041f9SjoergInterpolate the width of the
2197fec65c98Schristos.Ar string .
2198fec65c98SchristosThe
2199fec65c98Schristos.Xr mandoc 1
2200fec65c98Schristosimplementation assumes that after expansion of user-defined strings, the
2201fec65c98Schristos.Ar string
2202fec65c98Schristosonly contains normal characters, no escape sequences, and that each
2203fec65c98Schristoscharacter has a width of 24 basic units.
2204*544c191cSchristos.It Ic \eX\(aq Ns Ar string Ns Ic \(aq
220570f041f9SjoergOutput
220670f041f9Sjoerg.Ar string
220770f041f9Sjoergas device control function; ignored in nroff mode and by
220870f041f9Sjoerg.Xr mandoc 1 .
2209*544c191cSchristos.It Ic \ex\(aq Ns Ar number Ns Ic \(aq
221070f041f9SjoergExtra line space function; ignored by
221170f041f9Sjoerg.Xr mandoc 1 .
2212*544c191cSchristos.It Ic \eY[ Ns Ar name Ns Ic \&]
221370f041f9SjoergOutput a string as a device control function; ignored in nroff mode and by
221470f041f9Sjoerg.Xr mandoc 1 .
221570f041f9SjoergFor short names, there are variants
2216*544c191cSchristos.Ic \eY Ns Ar c
221770f041f9Sjoergand
2218*544c191cSchristos.Ic \eY( Ns Ar cc .
2219*544c191cSchristos.It Ic \eZ\(aq Ns Ar string Ns Ic \(aq
222070f041f9SjoergPrint
222170f041f9Sjoerg.Ar string
222270f041f9Sjoergwith zero width and height; ignored by
222370f041f9Sjoerg.Xr mandoc 1 .
2224*544c191cSchristos.It Ic \ez
22259ff1f2acSchristosOutput the next character without advancing the cursor position.
2226*544c191cSchristos.El
22270a84adc5Sjoerg.Sh COMPATIBILITY
2228fec65c98SchristosThe
2229fec65c98Schristos.Xr mandoc 1
2230fec65c98Schristosimplementation of the
2231c0d9444aSjoerg.Nm
2232*544c191cSchristoslanguage is incomplete.
2233*544c191cSchristosMajor unimplemented features include:
22340a84adc5Sjoerg.Pp
22350a84adc5Sjoerg.Bl -dash -compact
22360a84adc5Sjoerg.It
2237fec65c98SchristosFor security reasons,
2238fec65c98Schristos.Xr mandoc 1
2239fec65c98Schristosnever reads or writes external files except via
2240*544c191cSchristos.Ic \&so
2241fec65c98Schristosrequests with safe relative paths.
2242fec65c98Schristos.It
2243fec65c98SchristosThere is no automatic hyphenation, no adjustment to the right margin,
2244*544c191cSchristosand very limited support for centering; the output is always set flush-left.
2245fec65c98Schristos.It
2246*544c191cSchristosSupport for setting tabulator and leader characters is missing,
2247fec65c98Schristosand support for manually changing indentation is limited.
224848741257Sjoerg.It
224982361f10SjoergThe
2250fec65c98Schristos.Sq u
2251fec65c98Schristosscaling unit is the default terminal unit.
2252fec65c98SchristosIn traditional troff systems, this unit changes depending on the
2253fec65c98Schristosoutput media.
225482361f10Sjoerg.It
2255fec65c98SchristosWidth measurements are implemented in a crude way
2256fec65c98Schristosand often yield wrong results.
2257*544c191cSchristosSupport for explicit movement requests and escapes is limited.
2258fec65c98Schristos.It
2259fec65c98SchristosThere is no concept of output pages, no support for floats,
2260fec65c98Schristosgraphics drawing, and picture inclusion;
2261fec65c98Schristosterminal output is always continuous.
2262fec65c98Schristos.It
2263*544c191cSchristosRequests regarding color, font families, font sizes,
2264*544c191cSchristosand glyph manipulation are ignored.
2265fec65c98SchristosFont support is very limited.
2266fec65c98SchristosKerning is not implemented, and no ligatures are produced.
22670a84adc5Sjoerg.It
22680a84adc5SjoergThe
2269fec65c98Schristos.Qq \(aq
2270fec65c98Schristosmacro control character does not suppress output line breaks.
2271fec65c98Schristos.It
2272*544c191cSchristosDiversions and environments are not implemented,
2273fec65c98Schristosand support for traps is very incomplete.
2274fec65c98Schristos.It
2275*544c191cSchristosUse of macros is not supported inside
2276*544c191cSchristos.Xr tbl 7
2277*544c191cSchristoscode.
22780a84adc5Sjoerg.El
2279fec65c98Schristos.Pp
2280fec65c98SchristosThe special semantics of the
2281fec65c98Schristos.Cm nS
2282fec65c98Schristosnumber register is an idiosyncracy of
2283fec65c98Schristos.Ox
2284fec65c98Schristosmanuals and not supported by other
2285fec65c98Schristos.Xr mdoc 7
2286fec65c98Schristosimplementations.
2287c0d9444aSjoerg.Sh SEE ALSO
2288c0d9444aSjoerg.Xr mandoc 1 ,
228948741257Sjoerg.Xr eqn 7 ,
2290c0d9444aSjoerg.Xr man 7 ,
2291c0d9444aSjoerg.Xr mandoc_char 7 ,
2292c0d9444aSjoerg.Xr mdoc 7 ,
2293c0d9444aSjoerg.Xr tbl 7
2294c0d9444aSjoerg.Rs
2295c0d9444aSjoerg.%A Joseph F. Ossanna
2296c0d9444aSjoerg.%A Brian W. Kernighan
2297c0d9444aSjoerg.%I AT&T Bell Laboratories
2298c0d9444aSjoerg.%T Troff User's Manual
2299c0d9444aSjoerg.%R Computing Science Technical Report
2300c0d9444aSjoerg.%N 54
2301c0d9444aSjoerg.%C Murray Hill, New Jersey
2302c0d9444aSjoerg.%D 1976 and 1992
2303c0d9444aSjoerg.%U http://www.kohala.com/start/troff/cstr54.ps
2304c0d9444aSjoerg.Re
2305c0d9444aSjoerg.Rs
2306c0d9444aSjoerg.%A Joseph F. Ossanna
2307c0d9444aSjoerg.%A Brian W. Kernighan
2308c0d9444aSjoerg.%A Gunnar Ritter
2309c0d9444aSjoerg.%T Heirloom Documentation Tools Nroff/Troff User's Manual
2310c0d9444aSjoerg.%D September 17, 2007
2311c0d9444aSjoerg.%U http://heirloom.sourceforge.net/doctools/troff.pdf
2312c0d9444aSjoerg.Re
2313c0d9444aSjoerg.Sh HISTORY
23140f0fda1cSjoergThe RUNOFF typesetting system, whose input forms the basis for
2315c0d9444aSjoerg.Nm ,
23160f0fda1cSjoergwas written in MAD and FAP for the CTSS operating system by Jerome E.
23170f0fda1cSjoergSaltzer in 1964.
23180f0fda1cSjoergDoug McIlroy rewrote it in BCPL in 1969, renaming it
23190f0fda1cSjoerg.Nm .
23200f0fda1cSjoergDennis M. Ritchie rewrote McIlroy's
23210f0fda1cSjoerg.Nm
23220f0fda1cSjoergin PDP-11 assembly for
23230f0fda1cSjoerg.At v1 ,
23240f0fda1cSjoergJoseph F. Ossanna improved roff and renamed it nroff
23250f0fda1cSjoergfor
23260f0fda1cSjoerg.At v2 ,
23270f0fda1cSjoergthen ported nroff to C as troff, which Brian W. Kernighan released with
23280f0fda1cSjoerg.At v7 .
23290f0fda1cSjoergIn 1989, James Clarke re-implemented troff in C++, naming it groff.
23300a84adc5Sjoerg.Sh AUTHORS
2331c0d9444aSjoerg.An -nosplit
2332c5f73b34SjoergThis
23330a84adc5Sjoerg.Nm
23340a84adc5Sjoergreference was written by
233570f041f9Sjoerg.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
2336c0d9444aSjoergand
233770f041f9Sjoerg.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2338