xref: /openbsd-src/share/man/man7/roff.7 (revision 6d9b308dc5df90a03b34cba3ab639261f8094414)
1*6d9b308dSschwarze.\" $OpenBSD: roff.7,v 1.102 2023/10/23 20:07:18 schwarze Exp $
2b9a2ea3fSschwarze.\"
3*6d9b308dSschwarze.\" Copyright (c) 2010-2019, 2022-2023 Ingo Schwarze <schwarze@openbsd.org>
40d336403Sschwarze.\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
5b9a2ea3fSschwarze.\"
6b9a2ea3fSschwarze.\" Permission to use, copy, modify, and distribute this software for any
7b9a2ea3fSschwarze.\" purpose with or without fee is hereby granted, provided that the above
8b9a2ea3fSschwarze.\" copyright notice and this permission notice appear in all copies.
9b9a2ea3fSschwarze.\"
10b9a2ea3fSschwarze.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11b9a2ea3fSschwarze.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12b9a2ea3fSschwarze.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13b9a2ea3fSschwarze.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14b9a2ea3fSschwarze.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15b9a2ea3fSschwarze.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16b9a2ea3fSschwarze.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17b9a2ea3fSschwarze.\"
18*6d9b308dSschwarze.Dd $Mdocdate: October 23 2023 $
19b9a2ea3fSschwarze.Dt ROFF 7
20b9a2ea3fSschwarze.Os
21b9a2ea3fSschwarze.Sh NAME
22b9a2ea3fSschwarze.Nm roff
23d5886527Sschwarze.Nd roff language reference for mandoc
24b9a2ea3fSschwarze.Sh DESCRIPTION
25b9a2ea3fSschwarzeThe
26b9a2ea3fSschwarze.Nm roff
27d5886527Sschwarzelanguage is a general purpose text formatting language.
2842a588f7SschwarzeSince traditional implementations of the
29d5886527Sschwarze.Xr mdoc 7
30d5886527Sschwarzeand
31d5886527Sschwarze.Xr man 7
3242a588f7Sschwarzemanual formatting languages are based on it,
3342a588f7Sschwarzemany real-world manuals use small numbers of
34b9a2ea3fSschwarze.Nm
350d336403Sschwarzerequests and escape sequences intermixed with their
3642a588f7Sschwarze.Xr mdoc 7
37b9a2ea3fSschwarzeor
3842a588f7Sschwarze.Xr man 7
3942a588f7Sschwarzecode.
4042a588f7SschwarzeTo properly format such manuals, the
4142a588f7Sschwarze.Xr mandoc 1
4248b448e1Sschwarzeutility supports a subset of
4342a588f7Sschwarze.Nm
440d336403Sschwarzerequests and escapes.
4548b448e1SschwarzeEven though this manual page lists all
4648b448e1Sschwarze.Nm
472b81461fSschwarzerequests and escape sequences, it only contains partial information
482b81461fSschwarzeabout requests not supported by
4942a588f7Sschwarze.Xr mandoc 1
5048b448e1Sschwarzeand about language features that do not matter for manual pages.
5142a588f7SschwarzeFor complete
5242a588f7Sschwarze.Nm
5342a588f7Sschwarzemanuals, consult the
5442a588f7Sschwarze.Sx SEE ALSO
5542a588f7Sschwarzesection.
56d5886527Sschwarze.Pp
5742a588f7SschwarzeInput lines beginning with the control character
5842a588f7Sschwarze.Sq \&.
5942a588f7Sschwarzeare parsed for requests and macros.
6042a588f7SschwarzeSuch lines are called
6142a588f7Sschwarze.Dq request lines
6242a588f7Sschwarzeor
6342a588f7Sschwarze.Dq macro lines ,
6442a588f7Sschwarzerespectively.
6542a588f7SschwarzeRequests change the processing state and manipulate the formatting;
6642a588f7Sschwarzesome macros also define the document structure and produce formatted
6742a588f7Sschwarzeoutput.
6842a588f7SschwarzeThe single quote
6942a588f7Sschwarze.Pq Qq \(aq
7042a588f7Sschwarzeis accepted as an alternative control character,
7142a588f7Sschwarzetreated by
7242a588f7Sschwarze.Xr mandoc 1
7342a588f7Sschwarzejust like
7442a588f7Sschwarze.Ql \&.
7542a588f7Sschwarze.Pp
7642a588f7SschwarzeLines not beginning with control characters are called
7742a588f7Sschwarze.Dq text lines .
7842a588f7SschwarzeThey provide free-form text to be printed; the formatting of the text
7942a588f7Sschwarzedepends on the respective processing context.
80b9a2ea3fSschwarze.Sh LANGUAGE SYNTAX
81b9a2ea3fSschwarze.Nm
82b9a2ea3fSschwarzedocuments may contain only graphable 7-bit ASCII characters, the space
83d5886527Sschwarzecharacter, and, in certain circumstances, the tab character.
844cd323b6SschwarzeThe backslash character
8542a588f7Sschwarze.Sq \e
860d336403Sschwarzeindicates the start of an escape sequence, used for example for
8746d2cf2bSschwarze.Sx Comments
8842a588f7Sschwarzeand
8946d2cf2bSschwarze.Sx Special Characters .
902b81461fSschwarzeFor a complete listing of escape sequences, consult the
910d336403Sschwarze.Sx ESCAPE SEQUENCE REFERENCE
920d336403Sschwarzebelow.
9342a588f7Sschwarze.Ss Comments
9442a588f7SschwarzeText following an escaped double-quote
9542a588f7Sschwarze.Sq \e\(dq ,
9642a588f7Sschwarzewhether in a request, macro, or text line, is ignored to the end of the line.
9742a588f7SschwarzeA request line beginning with a control character and comment escape
9842a588f7Sschwarze.Sq \&.\e\(dq
9942a588f7Sschwarzeis also ignored.
10042a588f7SschwarzeFurthermore, request lines with only a control character and optional
10142a588f7Sschwarzetrailing whitespace are stripped from input.
10242a588f7Sschwarze.Pp
10342a588f7SschwarzeExamples:
10442a588f7Sschwarze.Bd -literal -offset indent -compact
10542a588f7Sschwarze\&.\e\(dq This is a comment line.
10642a588f7Sschwarze\&.\e\(dq The next line is ignored:
10742a588f7Sschwarze\&.
10842a588f7Sschwarze\&.Sh EXAMPLES \e\(dq This is a comment, too.
10942a588f7Sschwarze\&example text \e\(dq And so is this.
11042a588f7Sschwarze.Ed
11142a588f7Sschwarze.Ss Special Characters
11242a588f7SschwarzeSpecial characters are used to encode special glyphs and are rendered
11342a588f7Sschwarzedifferently across output media.
11442a588f7SschwarzeThey may occur in request, macro, and text lines.
11542a588f7SschwarzeSequences begin with the escape character
11642a588f7Sschwarze.Sq \e
11742a588f7Sschwarzefollowed by either an open-parenthesis
11842a588f7Sschwarze.Sq \&(
11942a588f7Sschwarzefor two-character sequences; an open-bracket
12042a588f7Sschwarze.Sq \&[
12142a588f7Sschwarzefor n-character sequences (terminated at a close-bracket
12242a588f7Sschwarze.Sq \&] ) ;
12342a588f7Sschwarzeor a single one character sequence.
12442a588f7Sschwarze.Pp
12542a588f7SschwarzeExamples:
12642a588f7Sschwarze.Bl -tag -width Ds -offset indent -compact
12742a588f7Sschwarze.It Li \e(em
12842a588f7SschwarzeTwo-letter em dash escape.
12942a588f7Sschwarze.It Li \ee
13042a588f7SschwarzeOne-letter backslash escape.
13142a588f7Sschwarze.El
13242a588f7Sschwarze.Pp
13342a588f7SschwarzeSee
134d5886527Sschwarze.Xr mandoc_char 7
13542a588f7Sschwarzefor a complete list.
1362e362670Sschwarze.Ss Font Selection
1372e362670SschwarzeIn
1382e362670Sschwarze.Xr mdoc 7
1392e362670Sschwarzeand
1402e362670Sschwarze.Xr man 7
1412e362670Sschwarzedocuments, fonts are usually selected with macros.
1422e362670SschwarzeThe
1432e362670Sschwarze.Ic \ef
1442e362670Sschwarzeescape sequence and the
1452e362670Sschwarze.Ic \&ft
1462e362670Sschwarzerequest can be used to manually change the font,
1472e362670Sschwarzebut this is not recommended in
1482e362670Sschwarze.Xr mdoc 7
1492e362670Sschwarzedocuments.
1502e362670SschwarzeSuch manual font changes are overridden by many subsequent macros.
15142a588f7Sschwarze.Pp
1522e362670SschwarzeThe following fonts are supported:
1532e362670Sschwarze.Pp
1542e362670Sschwarze.Bl -tag -width CW -offset indent -compact
1552e362670Sschwarze.It Cm B
1562e362670SschwarzeBold font.
1572e362670Sschwarze.It Cm BI
1582e362670SschwarzeA font that is both bold and italic.
1592e362670Sschwarze.It Cm CB
1602e362670SschwarzeBold constant width font.
1612e362670SschwarzeSame as
1622e362670Sschwarze.Cm B
1632e362670Sschwarzein terminal output.
1642e362670Sschwarze.It Cm CI
1652e362670SschwarzeItalic constant width font.
1662e362670SschwarzeSame as
1672e362670Sschwarze.Cm I
1682e362670Sschwarzein terminal output.
1692e362670Sschwarze.It Cm CR
1702e362670SschwarzeRegular constant width font.
1712e362670SschwarzeSame as
1722e362670Sschwarze.Cm R
1732e362670Sschwarzein terminal output.
1742e362670Sschwarze.It Cm CW
1752e362670SschwarzeAn alias for
1762e362670Sschwarze.Cm CR .
1772e362670Sschwarze.It Cm I
1782e362670SschwarzeItalic font.
1792e362670Sschwarze.It Cm P
1802e362670SschwarzeReturn to the previous font.
1812e362670SschwarzeIf a macro caused a font change since the last
1822e362670Sschwarze.Ic \ef
18307c13846Sjsgescape sequence or
1842e362670Sschwarze.Ic \&ft
1852e362670Sschwarzerequest, this returns to the font before the last font change in
1862e362670Sschwarzethe macro rather than to the font before the last manual font change.
1872e362670Sschwarze.It Cm R
1882e362670SschwarzeRoman font.
1892e362670SschwarzeThis is the default font.
1902e362670Sschwarze.It Cm 1
1912e362670SschwarzeAn alias for
1922e362670Sschwarze.Cm R .
1932e362670Sschwarze.It Cm 2
1942e362670SschwarzeAn alias for
1952e362670Sschwarze.Cm I .
1962e362670Sschwarze.It Cm 3
1972e362670SschwarzeAn alias for
1982e362670Sschwarze.Cm B .
1992e362670Sschwarze.It Cm 4
2002e362670SschwarzeAn alias for
2012e362670Sschwarze.Cm BI .
2022e362670Sschwarze.El
20368941ea9Sschwarze.Pp
20442a588f7SschwarzeExamples:
20542a588f7Sschwarze.Bl -tag -width Ds -offset indent -compact
20642a588f7Sschwarze.It Li \efBbold\efR
20768941ea9SschwarzeWrite in \fBbold\fP, then switch to regular font mode.
20842a588f7Sschwarze.It Li \efIitalic\efP
20968941ea9SschwarzeWrite in \fIitalic\fP, then return to previous font mode.
21068941ea9Sschwarze.It Li \ef(BIbold italic\efP
21168941ea9SschwarzeWrite in \f(BIbold italic\fP, then return to previous font mode.
21242a588f7Sschwarze.El
21342a588f7Sschwarze.Ss Whitespace
21442a588f7SschwarzeWhitespace consists of the space character.
21542a588f7SschwarzeIn text lines, whitespace is preserved within a line.
21642a588f7SschwarzeIn request and macro lines, whitespace delimits arguments and is discarded.
21742a588f7Sschwarze.Pp
21842a588f7SschwarzeUnescaped trailing spaces are stripped from text line input unless in a
21942a588f7Sschwarzeliteral context.
22042a588f7SschwarzeIn general, trailing whitespace on any input line is discouraged for
22142a588f7Sschwarzereasons of portability.
222b20e20eaSschwarzeIn the rare case that a space character is needed at the end of an
22342a588f7Sschwarzeinput line, it may be forced by
22442a588f7Sschwarze.Sq \e\ \e& .
22542a588f7Sschwarze.Pp
22642a588f7SschwarzeLiteral space characters can be produced in the output
22742a588f7Sschwarzeusing escape sequences.
22842a588f7SschwarzeIn macro lines, they can also be included in arguments using quotation; see
22942a588f7Sschwarze.Sx MACRO SYNTAX
23042a588f7Sschwarzefor details.
23142a588f7Sschwarze.Pp
23242a588f7SschwarzeBlank text lines, which may include whitespace, are only permitted
23342a588f7Sschwarzewithin literal contexts.
23442a588f7SschwarzeIf the first character of a text line is a space, that line is printed
23542a588f7Sschwarzewith a leading newline.
23642a588f7Sschwarze.Ss Scaling Widths
23742a588f7SschwarzeMany requests and macros support scaled widths for their arguments.
23842a588f7SschwarzeThe syntax for a scaled width is
23942a588f7Sschwarze.Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
24042a588f7Sschwarzewhere a decimal must be preceded or followed by at least one digit.
24142a588f7Sschwarze.Pp
24242a588f7SschwarzeThe following scaling units are accepted:
24342a588f7Sschwarze.Pp
24442a588f7Sschwarze.Bl -tag -width Ds -offset indent -compact
24542a588f7Sschwarze.It c
24642a588f7Sschwarzecentimetre
24742a588f7Sschwarze.It i
24842a588f7Sschwarzeinch
24942a588f7Sschwarze.It P
2502b81461fSschwarzepica (1/6 inch)
25142a588f7Sschwarze.It p
2522b81461fSschwarzepoint (1/72 inch)
25342a588f7Sschwarze.It f
254d5dc6f2eSschwarzescale
25542a588f7Sschwarze.Sq u
256d5dc6f2eSschwarzeby 65536
25742a588f7Sschwarze.It v
25842a588f7Sschwarzedefault vertical span
25942a588f7Sschwarze.It m
26042a588f7Sschwarzewidth of rendered
26142a588f7Sschwarze.Sq m
26242a588f7Sschwarze.Pq em
26342a588f7Sschwarzecharacter
26442a588f7Sschwarze.It n
26542a588f7Sschwarzewidth of rendered
26642a588f7Sschwarze.Sq n
26742a588f7Sschwarze.Pq en
26842a588f7Sschwarzecharacter
26942a588f7Sschwarze.It u
270d5dc6f2eSschwarzedefault horizontal span for the terminal
27142a588f7Sschwarze.It M
2722b81461fSschwarzemini-em (1/100 em)
27342a588f7Sschwarze.El
27442a588f7Sschwarze.Pp
27542a588f7SschwarzeUsing anything other than
27642a588f7Sschwarze.Sq m ,
27742a588f7Sschwarze.Sq n ,
27842a588f7Sschwarzeor
27942a588f7Sschwarze.Sq v
28042a588f7Sschwarzeis necessarily non-portable across output media.
28142a588f7SschwarzeSee
28242a588f7Sschwarze.Sx COMPATIBILITY .
28342a588f7Sschwarze.Pp
28442a588f7SschwarzeIf a scaling unit is not provided, the numerical value is interpreted
28542a588f7Sschwarzeunder the default rules of
28642a588f7Sschwarze.Sq v
28742a588f7Sschwarzefor vertical spaces and
28842a588f7Sschwarze.Sq u
28942a588f7Sschwarzefor horizontal ones.
29042a588f7Sschwarze.Pp
29142a588f7SschwarzeExamples:
29242a588f7Sschwarze.Bl -tag -width ".Bl -tag -width 2i" -offset indent -compact
29342a588f7Sschwarze.It Li \&.Bl -tag -width 2i
29442a588f7Sschwarzetwo-inch tagged list indentation in
29542a588f7Sschwarze.Xr mdoc 7
29642a588f7Sschwarze.It Li \&.HP 2i
29742a588f7Sschwarzetwo-inch tagged list indentation in
29842a588f7Sschwarze.Xr man 7
29942a588f7Sschwarze.It Li \&.sp 2v
30042a588f7Sschwarzetwo vertical spaces
30142a588f7Sschwarze.El
30242a588f7Sschwarze.Ss Sentence Spacing
30342a588f7SschwarzeEach sentence should terminate at the end of an input line.
30442a588f7SschwarzeBy doing this, a formatter will be able to apply the proper amount of
30542a588f7Sschwarzespacing after the end of sentence (unescaped) period, exclamation mark,
30642a588f7Sschwarzeor question mark followed by zero or more non-sentence closing
30742a588f7Sschwarzedelimiters
30842a588f7Sschwarze.Po
30942a588f7Sschwarze.Sq \&) ,
31042a588f7Sschwarze.Sq \&] ,
31142a588f7Sschwarze.Sq \&' ,
31242a588f7Sschwarze.Sq \&"
31342a588f7Sschwarze.Pc .
31442a588f7Sschwarze.Pp
31542a588f7SschwarzeThe proper spacing is also intelligently preserved if a sentence ends at
31642a588f7Sschwarzethe boundary of a macro line.
31742a588f7Sschwarze.Pp
3182def07deSschwarzeIf an input line happens to end with a period, exclamation or question
3192def07deSschwarzemark that isn't the end of a sentence, append a zero-width space
3202def07deSschwarze.Pq Sq \e& .
3212def07deSschwarze.Pp
32242a588f7SschwarzeExamples:
32342a588f7Sschwarze.Bd -literal -offset indent -compact
32442a588f7SschwarzeDo not end sentences mid-line like this.  Instead,
32542a588f7Sschwarzeend a sentence like this.
32642a588f7SschwarzeA macro would end like this:
32742a588f7Sschwarze\&.Xr mandoc 1 \&.
3282def07deSschwarzeAn abbreviation at the end of an input line needs escaping, e.g.\e&
3292def07deSschwarzelike this.
33042a588f7Sschwarze.Ed
331d5886527Sschwarze.Sh REQUEST SYNTAX
332464bb648SjmcA request or macro line consists of:
333464bb648Sjmc.Pp
334d5886527Sschwarze.Bl -enum -compact
335d5886527Sschwarze.It
336d5886527Sschwarzethe control character
337464bb648Sjmc.Sq \&.
338b9a2ea3fSschwarzeor
339d5886527Sschwarze.Sq \(aq
340d5886527Sschwarzeat the beginning of the line,
341d5886527Sschwarze.It
342d5886527Sschwarzeoptionally an arbitrary amount of whitespace,
343d5886527Sschwarze.It
344d5886527Sschwarzethe name of the request or the macro, which is one word of arbitrary
345d5886527Sschwarzelength, terminated by whitespace,
346d5886527Sschwarze.It
347d5886527Sschwarzeand zero or more arguments delimited by whitespace.
348d5886527Sschwarze.El
349d5886527Sschwarze.Pp
350d5886527SschwarzeThus, the following request lines are all equivalent:
351b9a2ea3fSschwarze.Bd -literal -offset indent
352d5886527Sschwarze\&.ig end
353d5886527Sschwarze\&.ig    end
354d5886527Sschwarze\&.   ig end
355b9a2ea3fSschwarze.Ed
356f7539583Sschwarze.Sh MACRO SYNTAX
35742a588f7SschwarzeMacros are provided by the
35842a588f7Sschwarze.Xr mdoc 7
35942a588f7Sschwarzeand
36042a588f7Sschwarze.Xr man 7
36142a588f7Sschwarzelanguages and can be defined by the
36249e8d17bSschwarze.Ic \&de
363f7539583Sschwarzerequest.
364f7539583SschwarzeWhen called, they follow the same syntax as requests, except that
365f7539583Sschwarzemacro arguments may optionally be quoted by enclosing them
366f7539583Sschwarzein double quote characters
367f7539583Sschwarze.Pq Sq \(dq .
36842a588f7SschwarzeQuoted text, even if it contains whitespace or would cause
36942a588f7Sschwarzea macro invocation when unquoted, is always considered literal text.
37042a588f7SschwarzeInside quoted text, pairs of double quote characters
371f7539583Sschwarze.Pq Sq Qq
372f7539583Sschwarzeresolve to single double quote characters.
37342a588f7Sschwarze.Pp
37442a588f7SschwarzeTo be recognised as the beginning of a quoted argument, the opening
37542a588f7Sschwarzequote character must be preceded by a space character.
376f7539583SschwarzeA quoted argument extends to the next double quote character that is not
377f7539583Sschwarzepart of a pair, or to the end of the input line, whichever comes earlier.
378f7539583SschwarzeLeaving out the terminating double quote character at the end of the line
379f7539583Sschwarzeis discouraged.
380f7539583SschwarzeFor clarity, if more arguments follow on the same input line,
381f7539583Sschwarzeit is recommended to follow the terminating double quote character
382f7539583Sschwarzeby a space character; in case the next character after the terminating
383f7539583Sschwarzedouble quote character is anything else, it is regarded as the beginning
384f7539583Sschwarzeof the next, unquoted argument.
385f7539583Sschwarze.Pp
386f7539583SschwarzeBoth in quoted and unquoted arguments, pairs of backslashes
387f7539583Sschwarze.Pq Sq \e\e
388f7539583Sschwarzeresolve to single backslashes.
389f7539583SschwarzeIn unquoted arguments, space characters can alternatively be included
390f7539583Sschwarzeby preceding them with a backslash
391f7539583Sschwarze.Pq Sq \e\~ ,
392f7539583Sschwarzebut quoting is usually better for clarity.
39342a588f7Sschwarze.Pp
39442a588f7SschwarzeExamples:
39542a588f7Sschwarze.Bl -tag -width Ds -offset indent -compact
39642a588f7Sschwarze.It Li .Fn strlen \(dqconst char *s\(dq
39742a588f7SschwarzeGroup arguments
39842a588f7Sschwarze.Qq const char *s
39942a588f7Sschwarzeinto one function argument.
40042a588f7SschwarzeIf unspecified,
40142a588f7Sschwarze.Qq const ,
40242a588f7Sschwarze.Qq char ,
40342a588f7Sschwarzeand
40442a588f7Sschwarze.Qq *s
40542a588f7Sschwarzewould be considered separate arguments.
40642a588f7Sschwarze.It Li .Op \(dqFl a\(dq
40742a588f7SschwarzeConsider
40842a588f7Sschwarze.Qq \&Fl a
40942a588f7Sschwarzeas literal text instead of a flag macro.
41042a588f7Sschwarze.El
411b9a2ea3fSschwarze.Sh REQUEST REFERENCE
412d5886527SschwarzeThe
413b9a2ea3fSschwarze.Xr mandoc 1
414b9a2ea3fSschwarze.Nm
4156d10740dSschwarzeparser recognises the following requests.
416d04ca39fSschwarzeFor requests marked as "ignored" or "unsupported", any arguments are
417d04ca39fSschwarzeignored, and the number of arguments is not checked.
4185539818bSschwarze.Bl -tag -width Ds
4195539818bSschwarze.It Ic \&ab Op Ar message
420d04ca39fSschwarzeAbort processing.
421d04ca39fSschwarzeCurrently unsupported.
4225539818bSschwarze.It Ic \&ad Op Cm b | c | l | n | r
4235539818bSschwarzeSet line adjustment mode for subsequent text.
424d04ca39fSschwarzeCurrently ignored.
4255539818bSschwarze.It Ic \&af Ar registername format
426d04ca39fSschwarzeAssign an output format to a number register.
427d04ca39fSschwarzeCurrently ignored.
4285539818bSschwarze.It Ic \&aln Ar newname oldname
429d04ca39fSschwarzeCreate an alias for a number register.
430d04ca39fSschwarzeCurrently unsupported.
4315539818bSschwarze.It Ic \&als Ar newname oldname
432d04ca39fSschwarzeCreate an alias for a request, string, macro, or diversion.
4335539818bSschwarze.It Ic \&am Ar macroname Op Ar endmacro
434b9a2ea3fSschwarzeAppend to a macro definition.
435b9a2ea3fSschwarzeThe syntax of this request is the same as that of
4365539818bSschwarze.Ic \&de .
4375539818bSschwarze.It Ic \&am1 Ar macroname Op Ar endmacro
438b9a2ea3fSschwarzeAppend to a macro definition, switching roff compatibility mode off
439d04ca39fSschwarzeduring macro execution (groff extension).
440b9a2ea3fSschwarzeThe syntax of this request is the same as that of
4415539818bSschwarze.Ic \&de1 .
442803e5876SschwarzeSince
443803e5876Sschwarze.Xr mandoc 1
444803e5876Sschwarzedoes not implement
445803e5876Sschwarze.Nm
446803e5876Sschwarzecompatibility mode at all, it handles this request as an alias for
4475539818bSschwarze.Ic \&am .
4485539818bSschwarze.It Ic \&ami Ar macrostring Op Ar endstring
449d04ca39fSschwarzeAppend to a macro definition, specifying the macro name indirectly
450d04ca39fSschwarze(groff extension).
451d04ca39fSschwarzeThe syntax of this request is the same as that of
4525539818bSschwarze.Ic \&dei .
4535539818bSschwarze.It Ic \&ami1 Ar macrostring Op Ar endstring
454d04ca39fSschwarzeAppend to a macro definition, specifying the macro name indirectly
455d04ca39fSschwarzeand switching roff compatibility mode off during macro execution
456d04ca39fSschwarze(groff extension).
457d04ca39fSschwarzeThe syntax of this request is the same as that of
4585539818bSschwarze.Ic \&dei1 .
459d04ca39fSschwarzeSince
460d04ca39fSschwarze.Xr mandoc 1
461d04ca39fSschwarzedoes not implement
462d04ca39fSschwarze.Nm
463d04ca39fSschwarzecompatibility mode at all, it handles this request as an alias for
4645539818bSschwarze.Ic \&ami .
4655539818bSschwarze.It Ic \&as Ar stringname Op Ar string
46699d591e0SschwarzeAppend to a user-defined string.
46799d591e0SschwarzeThe syntax of this request is the same as that of
46849e8d17bSschwarze.Ic \&ds .
46999d591e0SschwarzeIf a user-defined string with the specified name does not yet exist,
47099d591e0Sschwarzeit is set to the empty string before appending.
4715539818bSschwarze.It Ic \&as1 Ar stringname Op Ar string
472d04ca39fSschwarzeAppend to a user-defined string, switching roff compatibility mode off
473d04ca39fSschwarzeduring macro execution (groff extension).
474d04ca39fSschwarzeThe syntax of this request is the same as that of
4755539818bSschwarze.Ic \&ds1 .
476d04ca39fSschwarzeSince
477d04ca39fSschwarze.Xr mandoc 1
478d04ca39fSschwarzedoes not implement
479d04ca39fSschwarze.Nm
480d04ca39fSschwarzecompatibility mode at all, it handles this request as an alias for
4815539818bSschwarze.Ic \&as .
4825539818bSschwarze.It Ic \&asciify Ar divname
483d04ca39fSschwarzeFully unformat a diversion.
484d04ca39fSschwarzeCurrently unsupported.
4855539818bSschwarze.It Ic \&backtrace
486d04ca39fSschwarzePrint a backtrace of the input stack.
487d04ca39fSschwarzeThis is a groff extension and currently ignored.
4885539818bSschwarze.It Ic \&bd Ar font Oo Ar curfont Oc Op Ar offset
489d04ca39fSschwarzeArtificially embolden by repeated printing with small shifts.
490d04ca39fSschwarzeCurrently ignored.
4915539818bSschwarze.It Ic \&bleedat Ar left top width height
492d04ca39fSschwarzeSet the BleedBox page parameter for PDF generation.
493d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
4945539818bSschwarze.It Ic \&blm Ar macroname
495d04ca39fSschwarzeSet a blank line trap.
496d04ca39fSschwarzeCurrently unsupported.
4975539818bSschwarze.It Ic \&box Ar divname
498d04ca39fSschwarzeBegin a diversion without including a partially filled line.
499d04ca39fSschwarzeCurrently unsupported.
5005539818bSschwarze.It Ic \&boxa Ar divname
501d04ca39fSschwarzeAdd to a diversion without including a partially filled line.
502d04ca39fSschwarzeCurrently unsupported.
5035539818bSschwarze.It Ic \&bp Oo Cm + Ns | Ns Cm - Oc Ns Ar pagenumber
5045539818bSschwarzeBegin a new page.
505d04ca39fSschwarzeCurrently ignored.
5065539818bSschwarze.It Ic \&BP Ar source height width position offset flags label
507d04ca39fSschwarzeDefine a frame and place a picture in it.
508d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
5095539818bSschwarze.It Ic \&br
510d04ca39fSschwarzeBreak the output line.
5115539818bSschwarze.It Ic \&break
5127dd0ff50SschwarzeBreak out of the innermost
5135539818bSschwarze.Ic \&while
514d04ca39fSschwarzeloop.
5155539818bSschwarze.It Ic \&breakchar Ar char ...
516d04ca39fSschwarzeOptional line break characters.
517d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
5185539818bSschwarze.It Ic \&brnl Ar N
5195539818bSschwarzeBreak output line after the next
5205539818bSschwarze.Ar N
5215539818bSschwarzeinput lines.
522d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
5235539818bSschwarze.It Ic \&brp
524d04ca39fSschwarzeBreak and spread output line.
525d04ca39fSschwarzeCurrently, this is implemented as an alias for
5265539818bSschwarze.Ic \&br .
5275539818bSschwarze.It Ic \&brpnl Ar N
5285539818bSschwarzeBreak and spread output line after the next
5295539818bSschwarze.Ar N
5305539818bSschwarzeinput lines.
531d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
5325539818bSschwarze.It Ic \&c2 Op Ar char
533d04ca39fSschwarzeChange the no-break control character.
534d04ca39fSschwarzeCurrently unsupported.
5355539818bSschwarze.It Ic \&cc Op Ar char
536d04ca39fSschwarzeChange the control character.
5374cd323b6SschwarzeIf
5385539818bSschwarze.Ar char
5394cd323b6Sschwarzeis not specified, the control character is reset to
5404cd323b6Sschwarze.Sq \&. .
5414cd323b6SschwarzeTrailing characters are ignored.
5425539818bSschwarze.It Ic \&ce Op Ar N
5435539818bSschwarzeCenter the next
5445539818bSschwarze.Ar N
5455539818bSschwarzeinput lines without filling.
546e13b4195Sschwarze.Ar N
547e13b4195Sschwarzedefaults to 1.
548e13b4195SschwarzeAn argument of 0 or less ends centering.
5497e291f10SschwarzeCurrently, high level macros abort centering.
5505539818bSschwarze.It Ic \&cf Ar filename
551d04ca39fSschwarzeOutput the contents of a file.
552d04ca39fSschwarzeIgnored because insecure.
5535539818bSschwarze.It Ic \&cflags Ar flags char ...
554d04ca39fSschwarzeSet character flags.
555d04ca39fSschwarzeThis is a groff extension and currently ignored.
5565539818bSschwarze.It Ic \&ch Ar macroname Op Ar dist
557d04ca39fSschwarzeChange a trap location.
558d04ca39fSschwarzeCurrently ignored.
55929fcab3eSschwarze.It Ic \&char Ar glyph Op Ar string
56029fcab3eSschwarzeDefine or redefine the ASCII character or character escape sequence
56129fcab3eSschwarze.Ar glyph
56229fcab3eSschwarzeto be rendered as
56329fcab3eSschwarze.Ar string ,
56429fcab3eSschwarzewhich can be empty.
56529fcab3eSschwarzeOnly partially supported in
56629fcab3eSschwarze.Xr mandoc 1 ;
56729fcab3eSschwarzemay interact incorrectly with
56829fcab3eSschwarze.Ic \&tr .
5695539818bSschwarze.It Ic \&chop Ar stringname
570d04ca39fSschwarzeRemove the last character from a macro, string, or diversion.
571d04ca39fSschwarzeCurrently unsupported.
5725539818bSschwarze.It Ic \&class Ar classname char ...
573d04ca39fSschwarzeDefine a character class.
574d04ca39fSschwarzeThis is a groff extension and currently ignored.
5755539818bSschwarze.It Ic \&close Ar streamname
576d04ca39fSschwarzeClose an open file.
577d04ca39fSschwarzeIgnored because insecure.
5785539818bSschwarze.It Ic \&CL Ar color text
579d04ca39fSschwarzePrint text in color.
580d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
5815539818bSschwarze.It Ic \&color Op Cm 1 | 0
582d04ca39fSschwarzeActivate or deactivate colors.
583d04ca39fSschwarzeThis is a groff extension and currently ignored.
5845539818bSschwarze.It Ic \&composite Ar from to
585d04ca39fSschwarzeDefine a name component for composite glyph names.
586d04ca39fSschwarzeThis is a groff extension and currently unsupported.
5875539818bSschwarze.It Ic \&continue
588d04ca39fSschwarzeImmediately start the next iteration of a
5895539818bSschwarze.Ic \&while
590d04ca39fSschwarzeloop.
591d04ca39fSschwarzeCurrently unsupported.
5925539818bSschwarze.It Ic \&cp Op Cm 1 | 0
593d04ca39fSschwarzeSwitch
594d04ca39fSschwarze.Nm
595d04ca39fSschwarzecompatibility mode on or off.
596d04ca39fSschwarzeCurrently ignored.
5975539818bSschwarze.It Ic \&cropat Ar left top width height
598d04ca39fSschwarzeSet the CropBox page parameter for PDF generation.
599d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
6005539818bSschwarze.It Ic \&cs Ar font Op Ar width Op Ar emsize
601d04ca39fSschwarzeConstant character spacing mode.
602d04ca39fSschwarzeCurrently ignored.
6035539818bSschwarze.It Ic \&cu Op Ar N
6045539818bSschwarzeUnderline next
6055539818bSschwarze.Ar N
6065539818bSschwarzeinput lines including whitespace.
607d04ca39fSschwarzeCurrently ignored.
6085539818bSschwarze.It Ic \&da Ar divname
609d04ca39fSschwarzeAppend to a diversion.
610d04ca39fSschwarzeCurrently unsupported.
6115539818bSschwarze.It Ic \&dch Ar macroname Op Ar dist
612d04ca39fSschwarzeChange a trap location in the current diversion.
613d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
6145539818bSschwarze.It Ic \&de Ar macroname Op Ar endmacro
615d5886527SschwarzeDefine a
616b9a2ea3fSschwarze.Nm
617b9a2ea3fSschwarzemacro.
618b9a2ea3fSschwarzeIts syntax can be either
619b9a2ea3fSschwarze.Bd -literal -offset indent
6205539818bSschwarze.Pf . Ic \&de Ar macroname
6215539818bSschwarze.Ar definition
622b9a2ea3fSschwarze\&..
623b9a2ea3fSschwarze.Ed
624b9a2ea3fSschwarze.Pp
625b9a2ea3fSschwarzeor
626b9a2ea3fSschwarze.Bd -literal -offset indent
62748c01a1fSjmc.Pf . Ic \&de Ar macroname endmacro
6285539818bSschwarze.Ar definition
6295539818bSschwarze.Pf . Ar endmacro
630b9a2ea3fSschwarze.Ed
631b9a2ea3fSschwarze.Pp
632b9a2ea3fSschwarzeBoth forms define or redefine the macro
6335539818bSschwarze.Ar macroname
634b9a2ea3fSschwarzeto represent the
6355539818bSschwarze.Ar definition ,
636b9a2ea3fSschwarzewhich may consist of one or more input lines, including the newline
637b9a2ea3fSschwarzecharacters terminating each line, optionally containing calls to
638b9a2ea3fSschwarze.Nm
639b9a2ea3fSschwarzerequests,
640b9a2ea3fSschwarze.Nm
641b9a2ea3fSschwarzemacros or high-level macros like
642b9a2ea3fSschwarze.Xr man 7
643b9a2ea3fSschwarzeor
644b9a2ea3fSschwarze.Xr mdoc 7
645b9a2ea3fSschwarzemacros, whichever applies to the document in question.
646b9a2ea3fSschwarze.Pp
647b9a2ea3fSschwarzeSpecifying a custom
6485539818bSschwarze.Ar endmacro
6492b81461fSschwarzeworks in the same way as for
6505539818bSschwarze.Ic \&ig ;
651b9a2ea3fSschwarzenamely, the call to
6525539818bSschwarze.Sq Pf . Ar endmacro
653b9a2ea3fSschwarzefirst ends the
6545539818bSschwarze.Ar definition ,
655b9a2ea3fSschwarzeand after that, it is also evaluated as a
656b9a2ea3fSschwarze.Nm
657b9a2ea3fSschwarzerequest or
658b9a2ea3fSschwarze.Nm
659b9a2ea3fSschwarzemacro, but not as a high-level macro.
660b9a2ea3fSschwarze.Pp
661d5886527SschwarzeThe macro can be invoked later using the syntax
662b9a2ea3fSschwarze.Pp
6635539818bSschwarze.D1 Pf . Ar macroname Op Ar argument Op Ar argument ...
664b9a2ea3fSschwarze.Pp
665f7539583SschwarzeRegarding argument parsing, see
666f7539583Sschwarze.Sx MACRO SYNTAX
667f7539583Sschwarzeabove.
668b9a2ea3fSschwarze.Pp
669d5886527SschwarzeThe line invoking the macro will be replaced
670b9a2ea3fSschwarzein the input stream by the
6715539818bSschwarze.Ar definition ,
672b9a2ea3fSschwarzereplacing all occurrences of
673b9a2ea3fSschwarze.No \e\e$ Ns Ar N ,
674b9a2ea3fSschwarzewhere
675b9a2ea3fSschwarze.Ar N
676b9a2ea3fSschwarzeis a digit, by the
677b9a2ea3fSschwarze.Ar N Ns th Ar argument .
678b9a2ea3fSschwarzeFor example,
679b9a2ea3fSschwarze.Bd -literal -offset indent
680b9a2ea3fSschwarze\&.de ZN
681b9a2ea3fSschwarze\efI\e^\e\e$1\e^\efP\e\e$2
682b9a2ea3fSschwarze\&..
683b9a2ea3fSschwarze\&.ZN XtFree .
684b9a2ea3fSschwarze.Ed
685b9a2ea3fSschwarze.Pp
686b9a2ea3fSschwarzeproduces
687b9a2ea3fSschwarze.Pp
688b9a2ea3fSschwarze.D1 \efI\e^XtFree\e^\efP.
689b9a2ea3fSschwarze.Pp
690b9a2ea3fSschwarzein the input stream, and thus in the output: \fI\^XtFree\^\fP.
691e74e5bafSschwarzeEach occurrence of \e\e$* is replaced with all the arguments,
692b20e20eaSschwarzejoined together with single space characters.
693e1866606SschwarzeThe variant \e\e$@ is similar, except that each argument is
694e1866606Sschwarzeindividually quoted.
695b9a2ea3fSschwarze.Pp
696d5886527SschwarzeSince macros and user-defined strings share a common string table,
697b9a2ea3fSschwarzedefining a macro
6985539818bSschwarze.Ar macroname
699b9a2ea3fSschwarzeclobbers the user-defined string
7005539818bSschwarze.Ar macroname ,
701b9a2ea3fSschwarzeand the
7025539818bSschwarze.Ar definition
703b9a2ea3fSschwarzecan also be printed using the
704b9a2ea3fSschwarze.Sq \e*
705b9a2ea3fSschwarzestring interpolation syntax described below
7065539818bSschwarze.Ic ds ,
707b9a2ea3fSschwarzebut this is rarely useful because every macro definition contains at least
708b9a2ea3fSschwarzeone explicit newline character.
7092bdc0267Sschwarze.Pp
7102bdc0267SschwarzeIn order to prevent endless recursion, both groff and
7112bdc0267Sschwarze.Xr mandoc 1
7122bdc0267Sschwarzelimit the stack depth for expanding macros and strings
71395bbf73aSschwarzeto a large, but finite number, and
71495bbf73aSschwarze.Xr mandoc 1
71595bbf73aSschwarzealso limits the length of the expanded input line.
71695bbf73aSschwarzeDo not rely on the exact values of these limits.
7175539818bSschwarze.It Ic \&de1 Ar macroname Op Ar endmacro
718d04ca39fSschwarzeDefine a
719d04ca39fSschwarze.Nm
720d04ca39fSschwarzemacro that will be executed with
721d04ca39fSschwarze.Nm
722d04ca39fSschwarzecompatibility mode switched off during macro execution.
723d04ca39fSschwarzeThis is a groff extension.
724d04ca39fSschwarzeSince
725d04ca39fSschwarze.Xr mandoc 1
726d04ca39fSschwarzedoes not implement
727d04ca39fSschwarze.Nm
728d04ca39fSschwarzecompatibility mode at all, it handles this request as an alias for
7295539818bSschwarze.Ic \&de .
7305539818bSschwarze.It Ic \&defcolor Ar newname scheme component ...
731d04ca39fSschwarzeDefine a color name.
732d04ca39fSschwarzeThis is a groff extension and currently ignored.
7335539818bSschwarze.It Ic \&dei Ar macrostring Op Ar endstring
734d5886527SschwarzeDefine a
735b9a2ea3fSschwarze.Nm
736d04ca39fSschwarzemacro, specifying the macro name indirectly (groff extension).
737d5886527SschwarzeThe syntax of this request is the same as that of
7385539818bSschwarze.Ic \&de .
7395539818bSschwarzeThe effect is the same as:
740803e5876Sschwarze.Pp
7415539818bSschwarze.D1 Pf . Cm \&de No \e* Ns Bo Ar macrostring Bc Op \e* Ns Bq Ar endstring
7425539818bSschwarze.It Ic \&dei1 Ar macrostring Op Ar endstring
743d5886527SschwarzeDefine a
744b9a2ea3fSschwarze.Nm
745b9a2ea3fSschwarzemacro that will be executed with
746b9a2ea3fSschwarze.Nm
747d04ca39fSschwarzecompatibility mode switched off during macro execution,
748d04ca39fSschwarzespecifying the macro name indirectly (groff extension).
749b9a2ea3fSschwarzeSince
750b9a2ea3fSschwarze.Xr mandoc 1
751b9a2ea3fSschwarzedoes not implement
752b9a2ea3fSschwarze.Nm
753d5886527Sschwarzecompatibility mode at all, it handles this request as an alias for
7545539818bSschwarze.Ic \&dei .
7555539818bSschwarze.It Ic \&device Ar string ...
7565539818bSschwarze.It Ic \&devicem Ar stringname
7575539818bSschwarzeThese two requests only make sense with the groff-specific intermediate
7585539818bSschwarzeoutput format and are unsupported.
7595539818bSschwarze.It Ic \&di Ar divname
760d04ca39fSschwarzeBegin a diversion.
761d04ca39fSschwarzeCurrently unsupported.
7625539818bSschwarze.It Ic \&do Ar command Op Ar argument ...
763d04ca39fSschwarzeExecute
764d04ca39fSschwarze.Nm
765d04ca39fSschwarzerequest or macro line with compatibility mode disabled.
766d04ca39fSschwarzeCurrently unsupported.
7675539818bSschwarze.It Ic \&ds Ar stringname Op Oo \(dq Oc Ns Ar string
768b9a2ea3fSschwarzeDefine a user-defined string.
769b9a2ea3fSschwarzeThe
7705539818bSschwarze.Ar stringname
771b9a2ea3fSschwarzeand
772b9a2ea3fSschwarze.Ar string
773b9a2ea3fSschwarzearguments are space-separated.
774b9a2ea3fSschwarzeIf the
775b9a2ea3fSschwarze.Ar string
776b9a2ea3fSschwarzebegins with a double-quote character, that character will not be part
777b9a2ea3fSschwarzeof the string.
778b9a2ea3fSschwarzeAll remaining characters on the input line form the
779b9a2ea3fSschwarze.Ar string ,
780b9a2ea3fSschwarzeincluding whitespace and double-quote characters, even trailing ones.
781b9a2ea3fSschwarze.Pp
782b9a2ea3fSschwarzeThe
783b9a2ea3fSschwarze.Ar string
784b9a2ea3fSschwarzecan be interpolated into subsequent text by using
7855539818bSschwarze.No \e* Ns Bq Ar stringname
786b9a2ea3fSschwarzefor a
7875539818bSschwarze.Ar stringname
788b9a2ea3fSschwarzeof arbitrary length, or \e*(NN or \e*N if the length of
7895539818bSschwarze.Ar stringname
790b9a2ea3fSschwarzeis two or one characters, respectively.
7911eb5132dSschwarzeInterpolation can be prevented by escaping the leading backslash;
7921eb5132dSschwarzethat is, an asterisk preceded by an even number of backslashes
7931eb5132dSschwarzedoes not trigger string interpolation.
794b9a2ea3fSschwarze.Pp
795b9a2ea3fSschwarzeSince user-defined strings and macros share a common string table,
796b9a2ea3fSschwarzedefining a string
7975539818bSschwarze.Ar stringname
798d5886527Sschwarzeclobbers the macro
7995539818bSschwarze.Ar stringname ,
800b9a2ea3fSschwarzeand the
8015539818bSschwarze.Ar stringname
802b9a2ea3fSschwarzeused for defining a string can also be invoked as a macro,
803b9a2ea3fSschwarzein which case the following input line will be appended to the
804b9a2ea3fSschwarze.Ar string ,
805b9a2ea3fSschwarzeforming a new input line passed to the
806b9a2ea3fSschwarze.Nm
807b9a2ea3fSschwarzeparser.
808b9a2ea3fSschwarzeFor example,
809b9a2ea3fSschwarze.Bd -literal -offset indent
810b9a2ea3fSschwarze\&.ds badidea .S
811b9a2ea3fSschwarze\&.badidea
812b9a2ea3fSschwarzeH SYNOPSIS
813b9a2ea3fSschwarze.Ed
814b9a2ea3fSschwarze.Pp
815b9a2ea3fSschwarzeinvokes the
8165539818bSschwarze.Ic SH
817b9a2ea3fSschwarzemacro when used in a
818b9a2ea3fSschwarze.Xr man 7
819b9a2ea3fSschwarzedocument.
820b9a2ea3fSschwarzeSuch abuse is of course strongly discouraged.
8215539818bSschwarze.It Ic \&ds1 Ar stringname Op Oo \(dq Oc Ns Ar string
822d04ca39fSschwarzeDefine a user-defined string that will be expanded with
823d04ca39fSschwarze.Nm
824d04ca39fSschwarzecompatibility mode switched off during string expansion.
825d04ca39fSschwarzeThis is a groff extension.
826d04ca39fSschwarzeSince
827d04ca39fSschwarze.Xr mandoc 1
828d04ca39fSschwarzedoes not implement
829d04ca39fSschwarze.Nm
830d04ca39fSschwarzecompatibility mode at all, it handles this request as an alias for
8315539818bSschwarze.Ic \&ds .
8325539818bSschwarze.It Ic \&dwh Ar dist macroname
833d04ca39fSschwarzeSet a location trap in the current diversion.
834d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
8355539818bSschwarze.It Ic \&dt Op Ar dist macroname
836d04ca39fSschwarzeSet a trap within a diversion.
837d04ca39fSschwarzeCurrently unsupported.
8385539818bSschwarze.It Ic \&ec Op Ar char
839be477484SschwarzeEnable the escape mechanism and change the escape character.
840be477484SschwarzeThe
841be477484Sschwarze.Ar char
842be477484Sschwarzeargument defaults to the backslash
843be477484Sschwarze.Pq Sq \e .
8445539818bSschwarze.It Ic \&ecr
845d04ca39fSschwarzeRestore the escape character.
846d04ca39fSschwarzeCurrently unsupported.
8475539818bSschwarze.It Ic \&ecs
848d04ca39fSschwarzeSave the escape character.
849d04ca39fSschwarzeCurrently unsupported.
8505539818bSschwarze.It Ic \&el Ar body
851b9a2ea3fSschwarzeThe
8525539818bSschwarze.Dq else
853b9a2ea3fSschwarzehalf of an if/else conditional.
854b9a2ea3fSschwarzePops a result off the stack of conditional evaluations pushed by
8555539818bSschwarze.Ic \&ie
856b9a2ea3fSschwarzeand uses it as its conditional.
857b9a2ea3fSschwarzeIf no stack entries are present (e.g., due to no prior
8585539818bSschwarze.Ic \&ie
859b9a2ea3fSschwarzecalls)
860b9a2ea3fSschwarzethen false is assumed.
861d5886527SschwarzeThe syntax of this request is similar to
8625539818bSschwarze.Ic \&if
863b9a2ea3fSschwarzeexcept that the conditional is missing.
8645539818bSschwarze.It Ic \&em Ar macroname
865d04ca39fSschwarzeSet a trap at the end of input.
866d04ca39fSschwarzeCurrently unsupported.
8675539818bSschwarze.It Ic \&EN
8686d10740dSschwarzeEnd an equation block.
8696d10740dSschwarzeSee
8705539818bSschwarze.Ic \&EQ .
8715539818bSschwarze.It Ic \&eo
872d04ca39fSschwarzeDisable the escape mechanism completely.
8735539818bSschwarze.It Ic \&EP
874d04ca39fSschwarzeEnd a picture started by
8755539818bSschwarze.Ic \&BP .
876d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
8775539818bSschwarze.It Ic \&EQ
8786d10740dSschwarzeBegin an equation block.
8796d10740dSschwarzeSee
8806d10740dSschwarze.Xr eqn 7
8816d10740dSschwarzefor a description of the equation language.
8825539818bSschwarze.It Ic \&errprint Ar message
883d04ca39fSschwarzePrint a string like an error message.
884d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
8855539818bSschwarze.It Ic \&ev Op Ar envname
886d04ca39fSschwarzeSwitch to another environment.
887d04ca39fSschwarzeCurrently unsupported.
8885539818bSschwarze.It Ic \&evc Op Ar envname
889d04ca39fSschwarzeCopy an environment into the current environment.
890d04ca39fSschwarzeCurrently unsupported.
8915539818bSschwarze.It Ic \&ex
892d04ca39fSschwarzeAbort processing and exit.
893d04ca39fSschwarzeCurrently unsupported.
8945539818bSschwarze.It Ic \&fallback Ar curfont font ...
895d04ca39fSschwarzeSelect the fallback sequence for a font.
896d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
8975539818bSschwarze.It Ic \&fam Op Ar familyname
898eeca1f01SschwarzeChange the font family.
8995539818bSschwarzeThis is a groff extension and currently ignored.
9005539818bSschwarze.It Ic \&fc Op Ar delimchar Op Ar padchar
901d04ca39fSschwarzeDefine a delimiting and a padding character for fields.
902d04ca39fSschwarzeCurrently unsupported.
9035539818bSschwarze.It Ic \&fchar Ar glyphname Op Ar string
904d04ca39fSschwarzeDefine a fallback glyph.
905d04ca39fSschwarzeCurrently unsupported.
9065539818bSschwarze.It Ic \&fcolor Ar colorname
907d04ca39fSschwarzeSet the fill color for \eD objects.
908d04ca39fSschwarzeThis is a groff extension and currently ignored.
9095539818bSschwarze.It Ic \&fdeferlig Ar font string ...
910d04ca39fSschwarzeDefer ligature building.
911d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9125539818bSschwarze.It Ic \&feature Cm + Ns | Ns Cm - Ns Ar name
913d04ca39fSschwarzeEnable or disable an OpenType feature.
914d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9155539818bSschwarze.It Ic \&fi
916327aba9dSschwarzeBreak the output line and switch to fill mode,
917327aba9dSschwarzewhich is active by default but can be ended with the
918327aba9dSschwarze.Ic \&nf
919327aba9dSschwarzerequest.
920327aba9dSschwarzeIn fill mode, input from subsequent input lines is added to
921327aba9dSschwarzethe same output line until the next word no longer fits,
922327aba9dSschwarzeat which point the output line is broken.
923327aba9dSschwarzeThis request is implied by the
924327aba9dSschwarze.Xr mdoc 7
925327aba9dSschwarze.Ic \&Sh
926327aba9dSschwarzemacro and by the
927327aba9dSschwarze.Xr man 7
928327aba9dSschwarze.Ic \&SH ,
929327aba9dSschwarze.Ic \&SS ,
930327aba9dSschwarzeand
931327aba9dSschwarze.Ic \&EE
932327aba9dSschwarzemacros.
9335539818bSschwarze.It Ic \&fkern Ar font minkern
934d04ca39fSschwarzeControl the use of kerning tables for a font.
935d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9365539818bSschwarze.It Ic \&fl
937d04ca39fSschwarzeFlush output.
938d04ca39fSschwarzeCurrently ignored.
9395539818bSschwarze.It Ic \&flig Ar font string char ...
940d04ca39fSschwarzeDefine ligatures.
941d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9425539818bSschwarze.It Ic \&fp Ar position font Op Ar filename
943d04ca39fSschwarzeAssign font position.
944d04ca39fSschwarzeCurrently ignored.
9455539818bSschwarze.It Ic \&fps Ar mapname ...
946d04ca39fSschwarzeMount a font with a special character map.
947d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9485539818bSschwarze.It Ic \&fschar Ar font glyphname Op Ar string
949d04ca39fSschwarzeDefine a font-specific fallback glyph.
950d04ca39fSschwarzeThis is a groff extension and currently unsupported.
9515539818bSschwarze.It Ic \&fspacewidth Ar font Op Ar afmunits
952d04ca39fSschwarzeSet a font-specific width for the space character.
953d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9545539818bSschwarze.It Ic \&fspecial Ar curfont Op Ar font ...
955d04ca39fSschwarzeConditionally define a special font.
956d04ca39fSschwarzeThis is a groff extension and currently ignored.
9575539818bSschwarze.It Ic \&ft Op Ar font
9582e362670SschwarzeChange the font; see
9592e362670Sschwarze.Sx Font Selection .
9602e362670SschwarzeThe
961b1e9670aSschwarze.Ar font
9622e362670Sschwarzeargument defaults to
9632e362670Sschwarze.Cm P .
9645539818bSschwarze.It Ic \&ftr Ar newname Op Ar oldname
965d04ca39fSschwarzeTranslate font name.
966d04ca39fSschwarzeThis is a groff extension and currently ignored.
9675539818bSschwarze.It Ic \&fzoom Ar font Op Ar permille
968d04ca39fSschwarzeZoom font size.
969d04ca39fSschwarzeCurrently ignored.
9705539818bSschwarze.It Ic \&gcolor Op Ar colorname
971d04ca39fSschwarzeSet glyph color.
972d04ca39fSschwarzeThis is a groff extension and currently ignored.
9735539818bSschwarze.It Ic \&hc Op Ar char
974d04ca39fSschwarzeSet the hyphenation character.
975d04ca39fSschwarzeCurrently ignored.
9765539818bSschwarze.It Ic \&hcode Ar char code ...
977d04ca39fSschwarzeSet hyphenation codes of characters.
978d04ca39fSschwarzeCurrently ignored.
9795539818bSschwarze.It Ic \&hidechar Ar font char ...
980d04ca39fSschwarzeHide characters in a font.
981d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
9825539818bSschwarze.It Ic \&hla Ar language
983d04ca39fSschwarzeSet hyphenation language.
984d04ca39fSschwarzeThis is a groff extension and currently ignored.
9855539818bSschwarze.It Ic \&hlm Op Ar number
986d04ca39fSschwarzeSet maximum number of consecutive hyphenated lines.
987d04ca39fSschwarzeCurrently ignored.
9885539818bSschwarze.It Ic \&hpf Ar filename
989d04ca39fSschwarzeLoad hyphenation pattern file.
990d04ca39fSschwarzeThis is a groff extension and currently ignored.
9915539818bSschwarze.It Ic \&hpfa Ar filename
992d04ca39fSschwarzeLoad hyphenation pattern file, appending to the current patterns.
993d04ca39fSschwarzeThis is a groff extension and currently ignored.
9945539818bSschwarze.It Ic \&hpfcode Ar code code ...
995d04ca39fSschwarzeDefine mapping values for character codes in hyphenation patterns.
996d04ca39fSschwarzeThis is a groff extension and currently ignored.
9975539818bSschwarze.It Ic \&hw Ar word ...
9989d9e4011SschwarzeSpecify hyphenation points in words.
999d04ca39fSschwarzeCurrently ignored.
10005539818bSschwarze.It Ic \&hy Op Ar mode
1001ff3da50cSschwarzeSet automatic hyphenation mode.
1002d04ca39fSschwarzeCurrently ignored.
10035539818bSschwarze.It Ic \&hylang Ar language
1004d04ca39fSschwarzeSet hyphenation language.
1005d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
10065539818bSschwarze.It Ic \&hylen Ar nchar
1007d04ca39fSschwarzeMinimum word length for hyphenation.
1008d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
10095539818bSschwarze.It Ic \&hym Op Ar length
1010d04ca39fSschwarzeSet hyphenation margin.
1011d04ca39fSschwarzeThis is a groff extension and currently ignored.
10125539818bSschwarze.It Ic \&hypp Ar penalty ...
1013d04ca39fSschwarzeDefine hyphenation penalties.
1014d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
10155539818bSschwarze.It Ic \&hys Op Ar length
1016d04ca39fSschwarzeSet hyphenation space.
1017d04ca39fSschwarzeThis is a groff extension and currently ignored.
10185539818bSschwarze.It Ic \&ie Ar condition body
1019b9a2ea3fSschwarzeThe
10205539818bSschwarze.Dq if
1021b9a2ea3fSschwarzehalf of an if/else conditional.
1022b9a2ea3fSschwarzeThe result of the conditional is pushed into a stack used by subsequent
1023b9a2ea3fSschwarzeinvocations of
10245539818bSschwarze.Ic \&el ,
1025b9a2ea3fSschwarzewhich may be separated by any intervening input (or not exist at all).
1026b9a2ea3fSschwarzeIts syntax is equivalent to
10275539818bSschwarze.Ic \&if .
10285539818bSschwarze.It Ic \&if Ar condition body
10295539818bSschwarzeBegin a conditional.
10305539818bSschwarzeThis request can also be written as follows:
10315539818bSschwarze.Bd -unfilled -offset indent
10325539818bSschwarze.Pf . Ic \&if Ar condition No \e{ Ns Ar body
10335539818bSschwarze.Ar body ... Ns \e}
10341271a177Sschwarze.Ed
10355539818bSschwarze.Bd -unfilled -offset indent
10365539818bSschwarze.Pf . Ic \&if Ar condition No \e{\e
10375539818bSschwarze.Ar body ...
10385539818bSschwarze.Pf . No \e}
10391271a177Sschwarze.Ed
10401271a177Sschwarze.Pp
10415539818bSschwarzeThe
10425539818bSschwarze.Ar condition
10435539818bSschwarzeis a boolean expression.
10441271a177SschwarzeCurrently,
10451271a177Sschwarze.Xr mandoc 1
10461271a177Sschwarzesupports the following subset of roff conditionals:
10471271a177Sschwarze.Bl -bullet
10481271a177Sschwarze.It
10491271a177SschwarzeIf
10501271a177Sschwarze.Sq \&!
10515539818bSschwarzeis prefixed to
10525539818bSschwarze.Ar condition ,
10535539818bSschwarzeit is logically inverted.
10541271a177Sschwarze.It
10555539818bSschwarzeIf the first character of
10565539818bSschwarze.Ar condition
10575539818bSschwarzeis
10581271a177Sschwarze.Sq n
10591271a177Sschwarze.Pq nroff mode
10601271a177Sschwarzeor
10611271a177Sschwarze.Sq o
10621271a177Sschwarze.Pq odd page ,
1063a24ea326Sschwarzeit evaluates to true, and the
1064a24ea326Sschwarze.Ar body
1065a24ea326Sschwarzestarts with the next character.
10661271a177Sschwarze.It
10675539818bSschwarzeIf the first character of
10685539818bSschwarze.Ar condition
10695539818bSschwarzeis
10701271a177Sschwarze.Sq e
10711271a177Sschwarze.Pq even page ,
10721271a177Sschwarze.Sq t
10731271a177Sschwarze.Pq troff mode ,
1074f660dfc5Sschwarzeor
1075f660dfc5Sschwarze.Sq v
1076f660dfc5Sschwarze.Pq vroff mode ,
1077a24ea326Sschwarzeit evaluates to false, and the
1078a24ea326Sschwarze.Ar body
1079a24ea326Sschwarzestarts with the next character.
1080a24ea326Sschwarze.It
1081a24ea326SschwarzeIf the first character of
1082a24ea326Sschwarze.Ar condition
1083a24ea326Sschwarzeis
1084a24ea326Sschwarze.Sq c
1085a24ea326Sschwarze.Pq character available ,
1086a24ea326Sschwarzeit evaluates to true if the following character is an ASCII character
1087a24ea326Sschwarzeor a valid character escape sequence, or to false otherwise.
1088a24ea326SschwarzeThe
1089a24ea326Sschwarze.Ar body
1090a24ea326Sschwarzestarts with the character following that next character.
10911271a177Sschwarze.It
10925539818bSschwarzeIf the first character of
10935539818bSschwarze.Ar condition
10945539818bSschwarzeis
1095c2f35d21Sschwarze.Sq d ,
1096c2f35d21Sschwarzeit evaluates to true if the rest of
1097c2f35d21Sschwarze.Ar condition
1098c2f35d21Sschwarzeis the name of an existing user defined macro or string;
1099c2f35d21Sschwarzeotherwise, it evaluates to false.
1100c2f35d21Sschwarze.It
1101c2f35d21SschwarzeIf the first character of
1102c2f35d21Sschwarze.Ar condition
1103c2f35d21Sschwarzeis
110424ab75f2Sschwarze.Sq r ,
11055539818bSschwarzeit evaluates to true if the rest of
11065539818bSschwarze.Ar condition
11075539818bSschwarzeis the name of an existing number register;
11085539818bSschwarzeotherwise, it evaluates to false.
110924ab75f2Sschwarze.It
11105539818bSschwarzeIf the
11115539818bSschwarze.Ar condition
11125539818bSschwarzestarts with a parenthesis or with an optionally signed
1113b6a36a9bSschwarzeinteger number, it is evaluated according to the rules of
1114b6a36a9bSschwarze.Sx Numerical expressions
1115b6a36a9bSschwarzeexplained below.
1116afed7bf3SjmcIt evaluates to true if the result is positive,
1117b6a36a9bSschwarzeor to false if the result is zero or negative.
11181271a177Sschwarze.It
11195539818bSschwarzeOtherwise, the first character of
11205539818bSschwarze.Ar condition
11215539818bSschwarzeis regarded as a delimiter and it evaluates to true if the string
11225539818bSschwarzeextending from its first to its second occurrence is equal to the
11235539818bSschwarzestring extending from its second to its third occurrence.
11241271a177Sschwarze.It
11255539818bSschwarzeIf
11265539818bSschwarze.Ar condition
11275539818bSschwarzecannot be parsed, it evaluates to false.
11281271a177Sschwarze.El
11291271a177Sschwarze.Pp
1130b9a2ea3fSschwarzeIf a conditional is false, its children are not processed, but are
1131b9a2ea3fSschwarzesyntactically interpreted to preserve the integrity of the input
1132b9a2ea3fSschwarzedocument.
1133b9a2ea3fSschwarzeThus,
1134b9a2ea3fSschwarze.Pp
1135d5886527Sschwarze.D1 \&.if t .ig
1136b9a2ea3fSschwarze.Pp
1137b9a2ea3fSschwarzewill discard the
1138b9a2ea3fSschwarze.Sq \&.ig ,
1139b9a2ea3fSschwarzewhich may lead to interesting results, but
1140b9a2ea3fSschwarze.Pp
1141d5886527Sschwarze.D1 \&.if t .if t \e{\e
1142b9a2ea3fSschwarze.Pp
1143b9a2ea3fSschwarzewill continue to syntactically interpret to the block close of the final
1144b9a2ea3fSschwarzeconditional.
1145b9a2ea3fSschwarzeSub-conditionals, in this case, obviously inherit the truth value of
1146b9a2ea3fSschwarzethe parent.
1147b9a2ea3fSschwarze.Pp
11485539818bSschwarzeIf the
11495539818bSschwarze.Ar body
11505539818bSschwarzesection is begun by an escaped brace
1151b9a2ea3fSschwarze.Sq \e{ ,
11521271a177Sschwarzescope continues until the end of the input line containing the
11531271a177Sschwarzematching closing-brace escape sequence
11541271a177Sschwarze.Sq \e} .
11555539818bSschwarzeIf the
11565539818bSschwarze.Ar body
11575539818bSschwarzeis not enclosed in braces, scope continues until the end of the line.
11585539818bSschwarzeIf the
11595539818bSschwarze.Ar condition
11605539818bSschwarzeis followed by a
11615539818bSschwarze.Ar body
11625539818bSschwarzeon the same line, whether after a brace or not, then requests and macros
1163b9a2ea3fSschwarze.Em must
1164b9a2ea3fSschwarzebegin with a control character.
1165b9a2ea3fSschwarzeIt is generally more intuitive, in this case, to write
11665539818bSschwarze.Bd -unfilled -offset indent
11675539818bSschwarze.Pf . Ic \&if Ar condition No \e{\e
11685539818bSschwarze.Pf . Ar request
11695539818bSschwarze.Pf . No \e}
1170b9a2ea3fSschwarze.Ed
1171b9a2ea3fSschwarze.Pp
1172d5886527Sschwarzethan having the request or macro follow as
1173b9a2ea3fSschwarze.Pp
11745539818bSschwarze.D1 Pf . Ic \&if Ar condition Pf \e{. Ar request
1175b9a2ea3fSschwarze.Pp
1176b9a2ea3fSschwarzeThe scope of a conditional is always parsed, but only executed if the
1177b9a2ea3fSschwarzeconditional evaluates to true.
1178b9a2ea3fSschwarze.Pp
1179d806dec9SschwarzeNote that the
1180b9a2ea3fSschwarze.Sq \e}
1181d806dec9Sschwarzeis converted into a zero-width escape sequence if not passed as a
1182d806dec9Sschwarzestandalone macro
1183d806dec9Sschwarze.Sq \&.\e} .
1184d806dec9SschwarzeFor example,
1185d806dec9Sschwarze.Pp
1186d806dec9Sschwarze.D1 \&.Fl a \e} b
1187d806dec9Sschwarze.Pp
1188d806dec9Sschwarzewill result in
1189b9a2ea3fSschwarze.Sq \e}
1190d806dec9Sschwarzebeing considered an argument of the
1191d806dec9Sschwarze.Sq \&Fl
1192d806dec9Sschwarzemacro.
11935539818bSschwarze.It Ic \&ig Op Ar endmacro
1194b9a2ea3fSschwarzeIgnore input.
1195b9a2ea3fSschwarzeIts syntax can be either
1196b9a2ea3fSschwarze.Bd -literal -offset indent
1197b9a2ea3fSschwarze.Pf . Cm \&ig
1198b9a2ea3fSschwarze.Ar ignored text
1199b9a2ea3fSschwarze\&..
1200b9a2ea3fSschwarze.Ed
1201b9a2ea3fSschwarze.Pp
1202b9a2ea3fSschwarzeor
1203b9a2ea3fSschwarze.Bd -literal -offset indent
12045539818bSschwarze.Pf . Cm \&ig Ar endmacro
1205b9a2ea3fSschwarze.Ar ignored text
12065539818bSschwarze.Pf . Ar endmacro
1207b9a2ea3fSschwarze.Ed
1208b9a2ea3fSschwarze.Pp
1209b9a2ea3fSschwarzeIn the first case, input is ignored until a
1210b9a2ea3fSschwarze.Sq \&..
1211d5886527Sschwarzerequest is encountered on its own line.
1212b9a2ea3fSschwarzeIn the second case, input is ignored until the specified
12135539818bSschwarze.Sq Pf . Ar endmacro
12145539818bSschwarzeis encountered.
1215b9a2ea3fSschwarzeDo not use the escape character
1216b9a2ea3fSschwarze.Sq \e
1217b9a2ea3fSschwarzeanywhere in the definition of
12185539818bSschwarze.Ar endmacro ;
1219b9a2ea3fSschwarzeit would cause very strange behaviour.
1220b9a2ea3fSschwarze.Pp
1221b9a2ea3fSschwarzeWhen the
12225539818bSschwarze.Ar endmacro
12235539818bSschwarzeis a roff request or a roff macro, like in
1224b9a2ea3fSschwarze.Pp
1225b9a2ea3fSschwarze.D1 \&.ig if
1226b9a2ea3fSschwarze.Pp
1227b9a2ea3fSschwarzethe subsequent invocation of
12285539818bSschwarze.Ic \&if
1229b9a2ea3fSschwarzewill first terminate the
1230b9a2ea3fSschwarze.Ar ignored text ,
1231b9a2ea3fSschwarzethen be invoked as usual.
1232b9a2ea3fSschwarzeOtherwise, it only terminates the
1233b9a2ea3fSschwarze.Ar ignored text ,
1234b9a2ea3fSschwarzeand arguments following it or the
1235b9a2ea3fSschwarze.Sq \&..
1236d5886527Sschwarzerequest are discarded.
12375539818bSschwarze.It Ic \&in Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1238d04ca39fSschwarzeChange indentation.
1239d04ca39fSschwarzeSee
1240d04ca39fSschwarze.Xr man 7 .
1241d04ca39fSschwarzeIgnored in
1242d04ca39fSschwarze.Xr mdoc 7 .
12435539818bSschwarze.It Ic \&index Ar register stringname substring
1244d04ca39fSschwarzeFind a substring in a string.
1245d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
12465539818bSschwarze.It Ic \&it Ar expression macro
1247d04ca39fSschwarzeSet an input line trap.
1248d04ca39fSschwarzeThe named
1249d04ca39fSschwarze.Ar macro
12503a1681a6Sschwarzewill be invoked after processing the number of input text lines
12513a1681a6Sschwarzespecified by the numerical
12523a1681a6Sschwarze.Ar expression .
12533a1681a6SschwarzeWhile evaluating the
12543a1681a6Sschwarze.Ar expression ,
12553a1681a6Sschwarzethe unit suffixes described below
12563a1681a6Sschwarze.Sx Scaling Widths
12573a1681a6Sschwarzeare ignored.
1258b7f92c5fSschwarze.It Ic \&itc Ar expression macro
1259d04ca39fSschwarzeSet an input line trap, not counting lines ending with \ec.
1260d04ca39fSschwarzeCurrently unsupported.
12615539818bSschwarze.It Ic \&IX Ar class keystring
1262d04ca39fSschwarzeTo support the generation of a table of contents,
1263d04ca39fSschwarze.Xr pod2man 1
1264d04ca39fSschwarzeemits this user-defined macro, usually without defining it.
1265d04ca39fSschwarzeTo avoid reporting large numbers of spurious errors,
1266d04ca39fSschwarze.Xr mandoc 1
1267d04ca39fSschwarzeignores it.
12685539818bSschwarze.It Ic \&kern Op Cm 1 | 0
1269d04ca39fSschwarzeSwitch kerning on or off.
1270d04ca39fSschwarzeCurrently ignored.
12715539818bSschwarze.It Ic \&kernafter Ar font char ... afmunits ...
1272d04ca39fSschwarzeIncrease kerning after some characters.
1273d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
12745539818bSschwarze.It Ic \&kernbefore Ar font char ... afmunits ...
1275d04ca39fSschwarzeIncrease kerning before some characters.
1276d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
12775539818bSschwarze.It Ic \&kernpair Ar font char ... font char ... afmunits
1278d04ca39fSschwarzeAdd a kerning pair to the kerning table.
1279d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
12805539818bSschwarze.It Ic \&lc Op Ar glyph
1281d04ca39fSschwarzeDefine a leader repetition character.
1282d04ca39fSschwarzeCurrently unsupported.
12835539818bSschwarze.It Ic \&lc_ctype Ar localename
1284d04ca39fSschwarzeSet the
1285d04ca39fSschwarze.Dv LC_CTYPE
1286d04ca39fSschwarzelocale.
1287d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
12885539818bSschwarze.It Ic \&lds Ar macroname string
1289d04ca39fSschwarzeDefine a local string.
1290d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
12915539818bSschwarze.It Ic \&length Ar register string
12925539818bSschwarzeCount the number of input characters in a string.
1293d04ca39fSschwarzeCurrently unsupported.
12945539818bSschwarze.It Ic \&letadj Ar lspmin lshmin letss lspmax lshmax
1295d04ca39fSschwarzeDynamic letter spacing and reshaping.
1296d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
12975539818bSschwarze.It Ic \&lf Ar lineno Op Ar filename
1298d04ca39fSschwarzeChange the line number for error messages.
1299d04ca39fSschwarzeIgnored because insecure.
13005539818bSschwarze.It Ic \&lg Op Cm 1 | 0
1301d04ca39fSschwarzeSwitch the ligature mechanism on or off.
1302d04ca39fSschwarzeCurrently ignored.
13035539818bSschwarze.It Ic \&lhang Ar font char ... afmunits
1304d04ca39fSschwarzeHang characters at left margin.
1305d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
13065539818bSschwarze.It Ic \&linetabs Op Cm 1 | 0
1307d04ca39fSschwarzeEnable or disable line-tabs mode.
1308d04ca39fSschwarzeThis is a groff extension and currently unsupported.
13095539818bSschwarze.It Ic \&ll Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
13105281506aSschwarzeChange the output line length.
13115281506aSschwarzeIf the
13125281506aSschwarze.Ar width
13135281506aSschwarzeargument is omitted, the line length is reset to its previous value.
13145281506aSschwarzeThe default setting for terminal output is 78n.
131510111bf6SschwarzeIf a sign is given, the line length is added to or subtracted from;
131610111bf6Sschwarzeotherwise, it is set to the provided value.
13175281506aSschwarzeUsing this request in new manuals is discouraged for several reasons,
13185281506aSschwarzeamong others because it overrides the
13195281506aSschwarze.Xr mandoc 1
13205281506aSschwarze.Fl O Cm width
13215281506aSschwarzecommand line option.
13225539818bSschwarze.It Ic \&lnr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
1323d04ca39fSschwarzeSet local number register.
1324d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
13255539818bSschwarze.It Ic \&lnrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
1326d04ca39fSschwarzeSet local floating-point register.
1327d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
13285539818bSschwarze.It Ic \&lpfx Ar string
1329d04ca39fSschwarzeSet a line prefix.
1330d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
13315539818bSschwarze.It Ic \&ls Op Ar factor
1332d04ca39fSschwarzeSet line spacing.
1333d04ca39fSschwarzeIt takes one integer argument specifying the vertical distance of
1334d04ca39fSschwarzesubsequent output text lines measured in v units.
1335d04ca39fSschwarzeCurrently ignored.
13365539818bSschwarze.It Ic \&lsm Ar macroname
1337d04ca39fSschwarzeSet a leading spaces trap.
1338d04ca39fSschwarzeThis is a groff extension and currently unsupported.
13395539818bSschwarze.It Ic \&lt Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1340d04ca39fSschwarzeSet title line length.
1341d04ca39fSschwarzeCurrently ignored.
13425539818bSschwarze.It Ic \&mc Ar glyph Op Ar dist
1343d04ca39fSschwarzePrint margin character in the right margin.
134424f1eaadSschwarzeThe
134524f1eaadSschwarze.Ar dist
134624f1eaadSschwarzeis currently ignored; instead, 1n is used.
13475539818bSschwarze.It Ic \&mediasize Ar media
1348d04ca39fSschwarzeSet the device media size.
1349d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
13505539818bSschwarze.It Ic \&minss Ar width
1351d04ca39fSschwarzeSet minimum word space.
1352d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
13535539818bSschwarze.It Ic \&mk Op Ar register
1354d04ca39fSschwarzeMark vertical position.
1355d04ca39fSschwarzeCurrently ignored.
13565539818bSschwarze.It Ic \&mso Ar filename
13575539818bSschwarzeLoad a macro file using the search path.
1358d04ca39fSschwarzeIgnored because insecure.
13595539818bSschwarze.It Ic \&na
1360d04ca39fSschwarzeDisable adjusting without changing the adjustment mode.
1361d04ca39fSschwarzeCurrently ignored.
13625539818bSschwarze.It Ic \&ne Op Ar height
1363ff3da50cSschwarzeDeclare the need for the specified minimum vertical space
1364ff3da50cSschwarzebefore the next trap or the bottom of the page.
1365d04ca39fSschwarzeCurrently ignored.
13665539818bSschwarze.It Ic \&nf
1367327aba9dSschwarzeBreak the output line and switch to no-fill mode.
1368327aba9dSschwarzeSubsequent input lines are kept together on the same output line
1369327aba9dSschwarzeeven when exceeding the right margin,
1370327aba9dSschwarzeand line breaks in subsequent input cause output line breaks.
1371327aba9dSschwarzeThis request is implied by the
1372327aba9dSschwarze.Xr mdoc 7
1373327aba9dSschwarze.Ic \&Bd Fl unfilled
1374327aba9dSschwarzeand
1375327aba9dSschwarze.Ic \&Bd Fl literal
1376327aba9dSschwarzemacros and by the
1377327aba9dSschwarze.Xr man 7
1378327aba9dSschwarze.Ic \&EX
1379327aba9dSschwarzemacro.
1380327aba9dSschwarzeThe
1381327aba9dSschwarze.Ic \&fi
1382327aba9dSschwarzerequest switches back to the default fill mode.
13835539818bSschwarze.It Ic \&nh
1384ff3da50cSschwarzeTurn off automatic hyphenation mode.
1385d04ca39fSschwarzeCurrently ignored.
13865539818bSschwarze.It Ic \&nhychar Ar char ...
1387d04ca39fSschwarzeDefine hyphenation-inhibiting characters.
1388d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
13895539818bSschwarze.It Ic \&nm Op Ar start Op Ar inc Op Ar space Op Ar indent
1390d04ca39fSschwarzePrint line numbers.
1391d04ca39fSschwarzeCurrently unsupported.
13925539818bSschwarze.It Ic \&nn Op Ar number
1393d04ca39fSschwarzeTemporarily turn off line numbering.
1394d04ca39fSschwarzeCurrently unsupported.
13955539818bSschwarze.It Ic \&nop Ar body
1396b20e20eaSschwarzeExecute the rest of the input line as a request, macro, or text line,
1397b20e20eaSschwarzeskipping the
1398b20e20eaSschwarze.Ic \&nop
1399b20e20eaSschwarzerequest and any space characters immediately following it.
1400b20e20eaSschwarzeThis is mostly used to indent text lines inside macro definitions.
1401dcd9eb04Sschwarze.It Ic \&nr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression Op Ar stepsize
140275088a49SschwarzeDefine or change a register.
1403b9a2ea3fSschwarzeA register is an arbitrary string value that defines some sort of state,
1404b9a2ea3fSschwarzewhich influences parsing and/or formatting.
1405b6a36a9bSschwarzeFor the syntax of
1406b6a36a9bSschwarze.Ar expression ,
1407b6a36a9bSschwarzesee
1408b6a36a9bSschwarze.Sx Numerical expressions
1409b6a36a9bSschwarzebelow.
141075088a49SschwarzeIf it is prefixed by a sign, the register will be
141175088a49Sschwarzeincremented or decremented instead of assigned to.
141275088a49Sschwarze.Pp
1413dcd9eb04SschwarzeThe
1414dcd9eb04Sschwarze.Ar stepsize
1415dcd9eb04Sschwarzeis used by the
1416dcd9eb04Sschwarze.Ic \en+
1417dcd9eb04Sschwarzeauto-increment feature.
1418dcd9eb04SschwarzeIt remains unchanged when omitted while changing an existing register,
1419dcd9eb04Sschwarzeand it defaults to 0 when defining a new register.
1420dcd9eb04Sschwarze.Pp
14215539818bSschwarzeThe following
14225539818bSschwarze.Ar register
142375088a49Sschwarzeis handled specially:
1424b9a2ea3fSschwarze.Bl -tag -width Ds
1425b9a2ea3fSschwarze.It Cm nS
1426b9a2ea3fSschwarzeIf set to a positive integer value, certain
1427b9a2ea3fSschwarze.Xr mdoc 7
1428d5886527Sschwarzemacros will behave in the same way as in the
1429b9a2ea3fSschwarze.Em SYNOPSIS
1430b9a2ea3fSschwarzesection.
1431d5886527SschwarzeIf set to 0, these macros will behave in the same way as outside the
1432b9a2ea3fSschwarze.Em SYNOPSIS
1433d5886527Sschwarzesection, even when called within the
1434d5886527Sschwarze.Em SYNOPSIS
1435d5886527Sschwarzesection itself.
1436d5886527SschwarzeNote that starting a new
1437b9a2ea3fSschwarze.Xr mdoc 7
1438d5886527Sschwarzesection with the
14395539818bSschwarze.Ic \&Sh
1440d5886527Sschwarzemacro will reset this register.
1441b9a2ea3fSschwarze.El
14425539818bSschwarze.It Xo
14435539818bSschwarze.Ic \&nrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression
14445539818bSschwarze.Op Ar increment
14455539818bSschwarze.Xc
1446d04ca39fSschwarzeDefine or change a floating-point register.
1447d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
14485539818bSschwarze.It Ic \&nroff
1449d04ca39fSschwarzeForce nroff mode.
1450d04ca39fSschwarzeThis is a groff extension and currently ignored.
14515539818bSschwarze.It Ic \&ns
14526a19e51cSschwarzeTurn on no-space mode.
1453d04ca39fSschwarzeCurrently ignored.
14545539818bSschwarze.It Ic \&nx Op Ar filename
1455d04ca39fSschwarzeAbort processing of the current input file and process another one.
1456d04ca39fSschwarzeIgnored because insecure.
14575539818bSschwarze.It Ic \&open Ar stream file
1458d04ca39fSschwarzeOpen a file for writing.
1459d04ca39fSschwarzeIgnored because insecure.
14605539818bSschwarze.It Ic \&opena Ar stream file
1461d04ca39fSschwarzeOpen a file for appending.
1462d04ca39fSschwarzeIgnored because insecure.
14635539818bSschwarze.It Ic \&os
1464d04ca39fSschwarzeOutput saved vertical space.
1465d04ca39fSschwarzeCurrently ignored.
14665539818bSschwarze.It Ic \&output Ar string
1467d04ca39fSschwarzeOutput directly to intermediate output.
1468d04ca39fSschwarzeNot supported.
14695539818bSschwarze.It Ic \&padj Op Cm 1 | 0
1470d04ca39fSschwarzeGlobally control paragraph-at-once adjustment.
1471d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
14725539818bSschwarze.It Ic \&papersize Ar media
1473d04ca39fSschwarzeSet the paper size.
1474d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
14755539818bSschwarze.It Ic \&pc Op Ar char
1476d04ca39fSschwarzeChange the page number character.
1477d04ca39fSschwarzeCurrently ignored.
14785539818bSschwarze.It Ic \&pev
1479d04ca39fSschwarzePrint environments.
1480d04ca39fSschwarzeThis is a groff extension and currently ignored.
14815539818bSschwarze.It Ic \&pi Ar command
1482d04ca39fSschwarzePipe output to a shell command.
1483d04ca39fSschwarzeIgnored because insecure.
14845539818bSschwarze.It Ic \&PI
1485d04ca39fSschwarzeLow-level request used by
14865539818bSschwarze.Ic \&BP .
1487d04ca39fSschwarzeThis is a Heirloom extension and currently unsupported.
14885539818bSschwarze.It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1489703fac53SschwarzeChange page length.
1490d04ca39fSschwarzeCurrently ignored.
14915539818bSschwarze.It Ic \&pm
14925539818bSschwarzePrint names and sizes of macros, strings, and diversions
14935539818bSschwarzeto standard error output.
1494d04ca39fSschwarzeCurrently ignored.
14955539818bSschwarze.It Ic \&pn Oo Cm + Ns | Ns Cm - Oc Ns Ar number
14965539818bSschwarzeChange the page number of the next page.
1497d04ca39fSschwarzeCurrently ignored.
14985539818bSschwarze.It Ic \&pnr
14995539818bSschwarzePrint all number registers on standard error output.
1500d04ca39fSschwarzeCurrently ignored.
15015539818bSschwarze.It Ic \&po Op Oo Cm + Ns | Ns Cm - Oc Ns Ar offset
1502af1e8f15SschwarzeSet a horizontal page offset.
1503af1e8f15SschwarzeIf no argument is specified, the page offset is reverted to its
1504af1e8f15Sschwarzeprevious value.
1505af1e8f15SschwarzeIf a sign is specified, the new page offset is calculated relative
1506af1e8f15Sschwarzeto the current one; otherwise, it is absolute.
1507af1e8f15SschwarzeThe argument follows the syntax of
1508af1e8f15Sschwarze.Sx Scaling Widths
1509af1e8f15Sschwarzeand the default scaling unit is
1510af1e8f15Sschwarze.Cm m .
15115539818bSschwarze.It Ic \&ps Op Oo Cm + Ns | Ns Cm - Oc Ns size
15126a19e51cSschwarzeChange point size.
1513d04ca39fSschwarzeCurrently ignored.
15145539818bSschwarze.It Ic \&psbb Ar filename
1515d04ca39fSschwarzeRetrieve the bounding box of a PostScript file.
1516d04ca39fSschwarzeCurrently unsupported.
15175539818bSschwarze.It Ic \&pshape Ar indent length ...
1518d04ca39fSschwarzeSet a special shape for the current paragraph.
1519e62d7b36SschwarzeThis is a Heirloom extension and currently unsupported.
15205539818bSschwarze.It Ic \&pso Ar command
1521d04ca39fSschwarzeInclude output of a shell command.
1522d04ca39fSschwarzeIgnored because insecure.
15235539818bSschwarze.It Ic \&ptr
15245539818bSschwarzePrint the names and positions of all traps on standard error output.
1525d04ca39fSschwarzeThis is a groff extension and currently ignored.
15265539818bSschwarze.It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1527d04ca39fSschwarzeChange post-vertical spacing.
1528d04ca39fSschwarzeThis is a groff extension and currently ignored.
15295539818bSschwarze.It Ic \&rchar Ar glyph ...
1530d04ca39fSschwarzeRemove glyph definitions.
1531d04ca39fSschwarzeCurrently unsupported.
153209369349Sjmc.It Ic \&rd Op Ar prompt Op Ar argument ...
1533d04ca39fSschwarzeRead from standard input.
1534d04ca39fSschwarzeCurrently ignored.
15355539818bSschwarze.It Ic \&recursionlimit Ar maxrec maxtail
1536d04ca39fSschwarzeSet the maximum stack depth for recursive macros.
1537d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
15385539818bSschwarze.It Ic \&return Op Ar twice
15393dc5225dSschwarzeExit the presently executed macro and return to the caller.
15403dc5225dSschwarzeThe argument is currently ignored.
15415539818bSschwarze.It Ic \&rfschar Ar font glyph ...
1542d04ca39fSschwarzeRemove font-specific fallback glyph definitions.
1543d04ca39fSschwarzeCurrently unsupported.
15445539818bSschwarze.It Ic \&rhang Ar font char ... afmunits
1545d04ca39fSschwarzeHang characters at right margin.
1546d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
15475539818bSschwarze.It Ic \&rj Op Ar N
15485539818bSschwarzeJustify the next
15495539818bSschwarze.Ar N
15505539818bSschwarzeinput lines to the right margin without filling.
15516de096f4Sschwarze.Ar N
15526de096f4Sschwarzedefaults to 1.
15536de096f4SschwarzeAn argument of 0 or less ends right adjustment.
15545539818bSschwarze.It Ic \&rm Ar macroname
1555e7693622SschwarzeRemove a request, macro or string.
15565539818bSschwarze.It Ic \&rn Ar oldname newname
1557d04ca39fSschwarzeRename a request, macro, diversion, or string.
15587e291f10SschwarzeIn
15597e291f10Sschwarze.Xr mandoc 1 ,
15607e291f10Sschwarzeuser-defined macros,
15617e291f10Sschwarze.Xr mdoc 7
15627e291f10Sschwarzeand
15637e291f10Sschwarze.Xr man 7
15647e291f10Sschwarzemacros, and user-defined strings can be renamed, but renaming of
15657e291f10Sschwarzepredefined strings and of
15667e291f10Sschwarze.Nm
15677e291f10Sschwarzerequests is not supported, and diversions are not implemented at all.
15685539818bSschwarze.It Ic \&rnn Ar oldname newname
1569d04ca39fSschwarzeRename a number register.
1570d04ca39fSschwarzeCurrently unsupported.
15715539818bSschwarze.It Ic \&rr Ar register
1572e7693622SschwarzeRemove a register.
15735539818bSschwarze.It Ic \&rs
1574d04ca39fSschwarzeEnd no-space mode.
1575d04ca39fSschwarzeCurrently ignored.
15765539818bSschwarze.It Ic \&rt Op Ar dist
1577d04ca39fSschwarzeReturn to marked vertical position.
1578d04ca39fSschwarzeCurrently ignored.
15795539818bSschwarze.It Ic \&schar Ar glyph Op Ar string
1580d04ca39fSschwarzeDefine global fallback glyph.
1581d04ca39fSschwarzeThis is a groff extension and currently unsupported.
15825539818bSschwarze.It Ic \&sentchar Ar char ...
1583d04ca39fSschwarzeDefine sentence-ending characters.
1584d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
15855539818bSschwarze.It Ic \&shc Op Ar glyph
1586d04ca39fSschwarzeChange the soft hyphen character.
1587d04ca39fSschwarzeCurrently ignored.
15885539818bSschwarze.It Ic \&shift Op Ar number
15893dc5225dSschwarzeShift macro arguments
15903dc5225dSschwarze.Ar number
15913dc5225dSschwarzetimes, by default once: \e\e$i becomes what \e\e$i+number was.
15923dc5225dSschwarzeAlso decrement \en(.$ by
15933dc5225dSschwarze.Ar number .
15945539818bSschwarze.It Ic \&sizes Ar size ...
1595d04ca39fSschwarzeDefine permissible point sizes.
1596d04ca39fSschwarzeThis is a groff extension and currently ignored.
15975539818bSschwarze.It Ic \&so Ar filename
1598b9a2ea3fSschwarzeInclude a source file.
15995539818bSschwarzeThe file is read and its contents processed as input in place of the
16005539818bSschwarze.Ic \&so
1601b9a2ea3fSschwarzerequest line.
1602d806dec9SschwarzeTo avoid inadvertent inclusion of unrelated files,
1603b9a2ea3fSschwarze.Xr mandoc 1
1604b9a2ea3fSschwarzeonly accepts relative paths not containing the strings
1605b9a2ea3fSschwarze.Qq ../
1606b9a2ea3fSschwarzeand
1607b9a2ea3fSschwarze.Qq /.. .
16087a9f9675Sschwarze.Pp
16097a9f9675SschwarzeThis request requires
16107a9f9675Sschwarze.Xr man 1
16117a9f9675Sschwarzeto change to the right directory before calling
16127a9f9675Sschwarze.Xr mandoc 1 ,
16137a9f9675Sschwarzeper convention to the root of the manual tree.
16147a9f9675SschwarzeTypical usage looks like:
16157a9f9675Sschwarze.Pp
16167a9f9675Sschwarze.Dl \&.so man3/Xcursor.3
16177a9f9675Sschwarze.Pp
16187a9f9675SschwarzeAs the whole concept is rather fragile, the use of
16195539818bSschwarze.Ic \&so
16207a9f9675Sschwarzeis discouraged.
16217a9f9675SschwarzeUse
16227a9f9675Sschwarze.Xr ln 1
16237a9f9675Sschwarzeinstead.
16245539818bSschwarze.It Ic \&sp Op Ar height
1625ce691df8SschwarzeBreak the output line and emit vertical space.
1626ce691df8SschwarzeThe argument follows the syntax of
1627ce691df8Sschwarze.Sx Scaling Widths
1628ce691df8Sschwarzeand defaults to one blank line
1629ce691df8Sschwarze.Pq Li 1v .
16305539818bSschwarze.It Ic \&spacewidth Op Cm 1 | 0
1631d04ca39fSschwarzeSet the space width from the font metrics file.
1632d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
16335539818bSschwarze.It Ic \&special Op Ar font ...
1634d04ca39fSschwarzeDefine a special font.
1635d04ca39fSschwarzeThis is a groff extension and currently ignored.
16365539818bSschwarze.It Ic \&spreadwarn Op Ar width
1637d04ca39fSschwarzeWarn about wide spacing between words.
1638d04ca39fSschwarzeCurrently ignored.
16395539818bSschwarze.It Ic \&ss Ar wordspace Op Ar sentencespace
1640d04ca39fSschwarzeSet space character size.
1641d04ca39fSschwarzeCurrently ignored.
16425539818bSschwarze.It Ic \&sty Ar position style
1643d04ca39fSschwarzeAssociate style with a font position.
1644d04ca39fSschwarzeThis is a groff extension and currently ignored.
16455539818bSschwarze.It Ic \&substring Ar stringname startpos Op Ar endpos
1646d04ca39fSschwarzeReplace a user-defined string with a substring.
1647d04ca39fSschwarzeCurrently unsupported.
16485539818bSschwarze.It Ic \&sv Op Ar height
1649d04ca39fSschwarzeSave vertical space.
1650d04ca39fSschwarzeCurrently ignored.
16515539818bSschwarze.It Ic \&sy Ar command
1652d04ca39fSschwarzeExecute shell command.
1653d04ca39fSschwarzeIgnored because insecure.
16545539818bSschwarze.It Ic \&T&
1655d04ca39fSschwarzeRe-start a table layout, retaining the options of the prior table
1656d04ca39fSschwarzeinvocation.
1657d04ca39fSschwarzeSee
165849e8d17bSschwarze.Ic \&TS .
16595539818bSschwarze.It Ic \&ta Op Ar width ... Op Cm T Ar width ...
16606a19e51cSschwarzeSet tab stops.
16615539818bSschwarzeEach
16625539818bSschwarze.Ar width
16635539818bSschwarzeargument follows the syntax of
16645539818bSschwarze.Sx Scaling Widths .
16655539818bSschwarzeIf prefixed by a plus sign, it is relative to the previous tab stop.
16665539818bSschwarzeThe arguments after the
16675539818bSschwarze.Cm T
16685539818bSschwarzemarker are used repeatedly as often as needed; for each reuse,
16695539818bSschwarzethey are taken relative to the last previously established tab stop.
16705539818bSschwarzeWhen
16715539818bSschwarze.Ic \&ta
16725539818bSschwarzeis called without arguments, all tab stops are cleared.
16735539818bSschwarze.It Ic \&tc Op Ar glyph
1674ece2adc2SsobradoChange tab repetition character.
1675d04ca39fSschwarzeCurrently unsupported.
16765539818bSschwarze.It Ic \&TE
1677d04ca39fSschwarzeEnd a table context.
1678d04ca39fSschwarzeSee
167949e8d17bSschwarze.Ic \&TS .
168011d70615Sschwarze.It Ic \&ti Oo Cm + Ns | Ns Cm - Oc Ns Ar width
168111d70615SschwarzeBreak the output line and indent the next output line by
168211d70615Sschwarze.Ar width .
168311d70615SschwarzeIf a sign is specified, the temporary indentation is calculated
168411d70615Sschwarzerelative to the current indentation; otherwise, it is absolute.
168511d70615SschwarzeThe argument follows the syntax of
168611d70615Sschwarze.Sx Scaling Widths
168711d70615Sschwarzeand the default scaling unit is
168811d70615Sschwarze.Cm m .
16895539818bSschwarze.It Ic \&tkf Ar font minps width1 maxps width2
1690d04ca39fSschwarzeEnable track kerning for a font.
1691d04ca39fSschwarzeCurrently ignored.
16925539818bSschwarze.It Ic \&tl No \& Ap Ar left Ap Ar center Ap Ar right Ap
1693d04ca39fSschwarzePrint a title line.
1694d04ca39fSschwarzeCurrently unsupported.
16955539818bSschwarze.It Ic \&tm Ar string
1696d04ca39fSschwarzePrint to standard error output.
1697d04ca39fSschwarzeCurrently ignored.
16985539818bSschwarze.It Ic \&tm1 Ar string
1699d04ca39fSschwarzePrint to standard error output, allowing leading blanks.
1700d04ca39fSschwarzeThis is a groff extension and currently ignored.
17015539818bSschwarze.It Ic \&tmc Ar string
1702d04ca39fSschwarzePrint to standard error output without a trailing newline.
1703d04ca39fSschwarzeThis is a groff extension and currently ignored.
17045539818bSschwarze.It Ic \&tr Ar glyph glyph ...
1705b9a2ea3fSschwarzeOutput character translation.
17065539818bSschwarzeThe first glyph in each pair is replaced by the second one.
17075539818bSschwarzeCharacter escapes can be used; for example,
170804e980cbSschwarze.Pp
170904e980cbSschwarze.Dl tr \e(xx\e(yy
171004e980cbSschwarze.Pp
171104e980cbSschwarzereplaces all invocations of \e(xx with \e(yy.
17125539818bSschwarze.It Ic \&track Ar font minps width1 maxps width2
1713d04ca39fSschwarzeStatic letter space tracking.
1714d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17155539818bSschwarze.It Ic \&transchar Ar char ...
1716d04ca39fSschwarzeDefine transparent characters for sentence-ending.
1717d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17185539818bSschwarze.It Ic \&trf Ar filename
1719d04ca39fSschwarzeOutput the contents of a file, disallowing invalid characters.
1720d04ca39fSschwarzeThis is a groff extension and ignored because insecure.
17215539818bSschwarze.It Ic \&trimat Ar left top width height
1722d04ca39fSschwarzeSet the TrimBox page parameter for PDF generation.
1723d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17245539818bSschwarze.It Ic \&trin Ar glyph glyph ...
1725d04ca39fSschwarzeOutput character translation, ignored by
17265539818bSschwarze.Ic \&asciify .
1727d04ca39fSschwarzeCurrently unsupported.
17285539818bSschwarze.It Ic \&trnt Ar glyph glyph ...
1729d04ca39fSschwarzeOutput character translation, ignored by \e!.
1730d04ca39fSschwarzeCurrently unsupported.
17315539818bSschwarze.It Ic \&troff
1732d04ca39fSschwarzeForce troff mode.
1733d04ca39fSschwarzeThis is a groff extension and currently ignored.
17345539818bSschwarze.It Ic \&TS
17352683b1e5SschwarzeBegin a table, which formats input in aligned rows and columns.
17362683b1e5SschwarzeSee
17372683b1e5Sschwarze.Xr tbl 7
17382683b1e5Sschwarzefor a description of the tbl language.
17395539818bSschwarze.It Ic \&uf Ar font
1740d04ca39fSschwarzeGlobally set the underline font.
1741d04ca39fSschwarzeCurrently ignored.
17425539818bSschwarze.It Ic \&ul Op Ar N
17435539818bSschwarzeUnderline next
17445539818bSschwarze.Ar N
17455539818bSschwarzeinput lines.
1746d04ca39fSschwarzeCurrently ignored.
17475539818bSschwarze.It Ic \&unformat Ar divname
1748d04ca39fSschwarzeUnformat spaces and tabs in a diversion.
1749d04ca39fSschwarzeCurrently unsupported.
17505539818bSschwarze.It Ic \&unwatch Ar macroname
1751d04ca39fSschwarzeDisable notification for string or macro.
1752d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17535539818bSschwarze.It Ic \&unwatchn Ar register
1754d04ca39fSschwarzeDisable notification for register.
1755d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17565539818bSschwarze.It Ic \&vpt Op Cm 1 | 0
1757d04ca39fSschwarzeEnable or disable vertical position traps.
1758d04ca39fSschwarzeThis is a groff extension and currently ignored.
17595539818bSschwarze.It Ic \&vs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
1760d04ca39fSschwarzeChange vertical spacing.
1761d04ca39fSschwarzeCurrently ignored.
17625539818bSschwarze.It Ic \&warn Ar flags
1763d04ca39fSschwarzeSet warning level.
1764d04ca39fSschwarzeCurrently ignored.
17655539818bSschwarze.It Ic \&warnscale Ar si
1766d04ca39fSschwarzeSet the scaling indicator used in warnings.
1767d04ca39fSschwarzeThis is a groff extension and currently ignored.
17685539818bSschwarze.It Ic \&watch Ar macroname
1769d04ca39fSschwarzeNotify on change of string or macro.
1770d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17715539818bSschwarze.It Ic \&watchlength Ar maxlength
1772d04ca39fSschwarzeOn change, report the contents of macros and strings
1773ece2adc2Ssobradoup to the specified length.
1774d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17755539818bSschwarze.It Ic \&watchn Ar register
1776d04ca39fSschwarzeNotify on change of register.
1777d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
17785539818bSschwarze.It Ic \&wh Ar dist Op Ar macroname
1779d04ca39fSschwarzeSet a page location trap.
1780d04ca39fSschwarzeCurrently unsupported.
17815539818bSschwarze.It Ic \&while Ar condition body
1782b7f92c5fSschwarzeRepeated execution while a
1783b7f92c5fSschwarze.Ar condition
1784b7f92c5fSschwarzeis true, with syntax similar to
1785b7f92c5fSschwarze.Ic \&if .
1786b7f92c5fSschwarzeCurrently implemented with two restrictions: cannot nest,
1787b7f92c5fSschwarzeand each loop must start and end in the same scope.
17885539818bSschwarze.It Ic \&write Oo \(dq Oc Ns Ar string
1789d04ca39fSschwarzeWrite to an open file.
1790d04ca39fSschwarzeIgnored because insecure.
17915539818bSschwarze.It Ic \&writec Oo \(dq Oc Ns Ar string
1792d04ca39fSschwarzeWrite to an open file without appending a newline.
1793d04ca39fSschwarzeIgnored because insecure.
17945539818bSschwarze.It Ic \&writem Ar macroname
1795d04ca39fSschwarzeWrite macro or string to an open file.
1796d04ca39fSschwarzeIgnored because insecure.
17975539818bSschwarze.It Ic \&xflag Ar level
1798d04ca39fSschwarzeSet the extension level.
1799d04ca39fSschwarzeThis is a Heirloom extension and currently ignored.
18005539818bSschwarze.El
1801b6a36a9bSschwarze.Ss Numerical expressions
1802b6a36a9bSschwarzeThe
180349e8d17bSschwarze.Ic \&nr ,
180449e8d17bSschwarze.Ic \&if ,
1805b6a36a9bSschwarzeand
180649e8d17bSschwarze.Ic \&ie
1807b6a36a9bSschwarzerequests accept integer numerical expressions as arguments.
1808b6a36a9bSschwarzeThese are always evaluated using the C
1809b6a36a9bSschwarze.Vt int
1810b6a36a9bSschwarzetype; integer overflow works the same way as in the C language.
1811b6a36a9bSschwarzeNumbers consist of an arbitrary number of digits
1812b6a36a9bSschwarze.Sq 0
1813b6a36a9bSschwarzeto
1814b6a36a9bSschwarze.Sq 9
1815b6a36a9bSschwarzeprefixed by an optional sign
1816b6a36a9bSschwarze.Sq +
1817b6a36a9bSschwarzeor
1818b6a36a9bSschwarze.Sq - .
18194a635483SschwarzeEach number may be followed by one optional scaling unit described below
18204a635483Sschwarze.Sx Scaling Widths .
18214a635483SschwarzeThe following equations hold:
18224a635483Sschwarze.Bd -literal -offset indent
18234a635483Sschwarze1i = 6v = 6P = 10m = 10n = 72p = 1000M = 240u = 240
18244a635483Sschwarze254c = 100i = 24000u = 24000
18254a635483Sschwarze1f = 65536u = 65536
18264a635483Sschwarze.Ed
1827b6a36a9bSschwarze.Pp
1828b6a36a9bSschwarzeThe following binary operators are implemented.
1829b6a36a9bSschwarzeUnless otherwise stated, they behave as in the C language:
1830b6a36a9bSschwarze.Pp
1831b6a36a9bSschwarze.Bl -tag -width 2n -compact
1832b6a36a9bSschwarze.It Ic +
1833b6a36a9bSschwarzeaddition
1834b6a36a9bSschwarze.It Ic -
1835b6a36a9bSschwarzesubtraction
1836b6a36a9bSschwarze.It Ic *
1837b6a36a9bSschwarzemultiplication
1838b6a36a9bSschwarze.It Ic /
1839b6a36a9bSschwarzedivision
1840b6a36a9bSschwarze.It Ic %
1841b6a36a9bSschwarzeremainder of division
1842b6a36a9bSschwarze.It Ic <
1843b6a36a9bSschwarzeless than
1844b6a36a9bSschwarze.It Ic >
1845b6a36a9bSschwarzegreater than
1846b6a36a9bSschwarze.It Ic ==
1847b6a36a9bSschwarzeequal to
1848b6a36a9bSschwarze.It Ic =
1849b6a36a9bSschwarzeequal to, same effect as
1850b6a36a9bSschwarze.Ic ==
1851b6a36a9bSschwarze(this differs from C)
1852b6a36a9bSschwarze.It Ic <=
1853b6a36a9bSschwarzeless than or equal to
1854b6a36a9bSschwarze.It Ic >=
1855b6a36a9bSschwarzegreater than or equal to
1856b6a36a9bSschwarze.It Ic <>
1857b6a36a9bSschwarzenot equal to (corresponds to C
1858b6a36a9bSschwarze.Ic != ;
1859b6a36a9bSschwarzethis one is of limited portability, it is supported by Heirloom roff,
1860b6a36a9bSschwarzebut not by groff)
1861b6a36a9bSschwarze.It Ic &
1862b6a36a9bSschwarzelogical and (corresponds to C
1863b6a36a9bSschwarze.Ic && )
1864b6a36a9bSschwarze.It Ic \&:
1865b6a36a9bSschwarzelogical or (corresponds to C
186608931975Sschwarze.Ic || )
1867b6a36a9bSschwarze.It Ic <?
1868b6a36a9bSschwarzeminimum (not available in C)
1869b6a36a9bSschwarze.It Ic >?
1870b6a36a9bSschwarzemaximum (not available in C)
1871b6a36a9bSschwarze.El
1872b6a36a9bSschwarze.Pp
1873ece2adc2SsobradoThere is no concept of precedence; evaluation proceeds from left to right,
1874f693461fSschwarzeexcept when subexpressions are enclosed in parentheses.
1875b6a36a9bSschwarzeInside parentheses, whitespace is ignored.
18760d336403Sschwarze.Sh ESCAPE SEQUENCE REFERENCE
18770d336403SschwarzeThe
18780d336403Sschwarze.Xr mandoc 1
18790d336403Sschwarze.Nm
18800d336403Sschwarzeparser recognises the following escape sequences.
18810d336403SschwarzeIn
18820d336403Sschwarze.Xr mdoc 7
18830d336403Sschwarzeand
18840d336403Sschwarze.Xr man 7
18850d336403Sschwarzedocuments, using escape sequences is discouraged except for those
18860d336403Sschwarzedescribed in the
18870d336403Sschwarze.Sx LANGUAGE SYNTAX
18880d336403Sschwarzesection above.
18890d336403Sschwarze.Pp
18902b81461fSschwarzeA backslash followed by any character not listed here
18910d336403Sschwarzesimply prints that character itself.
189249e8d17bSschwarze.Bl -tag -width Ds
189349e8d17bSschwarze.It Ic \e<newline>
18940d336403SschwarzeA backslash at the end of an input line can be used to continue the
18950d336403Sschwarzelogical input line on the next physical input line, joining the text
18960d336403Sschwarzeon both lines together as if it were on a single input line.
189749e8d17bSschwarze.It Ic \e<space>
18980d336403SschwarzeThe escape sequence backslash-space
18990d336403Sschwarze.Pq Sq \e\ \&
19000d336403Sschwarzeis an unpaddable space-sized non-breaking space character; see
19012b81461fSschwarze.Sx Whitespace
19022b81461fSschwarzeand
19032b81461fSschwarze.Xr mandoc_char 7 .
19046f6722cbSschwarze.It Ic \e!
19056f6722cbSschwarzeEmbed text up to and including the end of the input line into the
19066f6722cbSschwarzecurrent diversion or into intermediate output without interpreting
19076f6722cbSschwarzerequests, macros, and escapes.
19086f6722cbSschwarzeCurrently unsupported.
190949e8d17bSschwarze.It Ic \e\(dq
19100d336403SschwarzeThe rest of the input line is treated as
19110d336403Sschwarze.Sx Comments .
191249e8d17bSschwarze.It Ic \e#
19132c723d08SschwarzeLine continuation with comment.
19142c723d08SschwarzeDiscard the rest of the physical input line and continue the logical
19152c723d08Sschwarzeinput line on the next physical input line, joining the text on
19162c723d08Sschwarzeboth lines together as if it were on a single input line.
19172c723d08SschwarzeThis is a groff extension.
191849e8d17bSschwarze.It Ic \e$ Ns Ar arg
1919e1866606SschwarzeMacro argument expansion, see
192049e8d17bSschwarze.Ic \&de .
192149e8d17bSschwarze.It Ic \e%
19220d336403SschwarzeHyphenation allowed at this point of the word; ignored by
19230d336403Sschwarze.Xr mandoc 1 .
192449e8d17bSschwarze.It Ic \e&
19252b81461fSschwarzeNon-printing zero-width character,
19262b81461fSschwarzeoften used for various kinds of escaping; see
19272b81461fSschwarze.Sx Whitespace ,
19282b81461fSschwarze.Xr mandoc_char 7 ,
19292b81461fSschwarzeand the
19302b81461fSschwarze.Dq MACRO SYNTAX
19312b81461fSschwarzeand
19322b81461fSschwarze.Dq Delimiters
19332b81461fSschwarzesections in
19342b81461fSschwarze.Xr mdoc 7 .
193549e8d17bSschwarze.It Ic \e\(aq
19360d336403SschwarzeAcute accent special character; use
193749e8d17bSschwarze.Ic \e(aa
19380d336403Sschwarzeinstead.
193949e8d17bSschwarze.It Ic \e( Ns Ar cc
19400d336403Sschwarze.Sx Special Characters
19410d336403Sschwarzewith two-letter names, see
19420d336403Sschwarze.Xr mandoc_char 7 .
19436f6722cbSschwarze.It Ic \e)
19446f6722cbSschwarzeZero-width space transparent to end-of-sentence detection;
19456f6722cbSschwarzeignored by
19466f6722cbSschwarze.Xr mandoc 1 .
194749e8d17bSschwarze.It Ic \e*[ Ns Ar name Ns Ic \&]
19480d336403SschwarzeInterpolate the string with the
194946d2cf2bSschwarze.Ar name .
19500d336403SschwarzeFor short names, there are variants
195149e8d17bSschwarze.Ic \e* Ns Ar c
19520d336403Sschwarzeand
195349e8d17bSschwarze.Ic \e*( Ns Ar cc .
195446d2cf2bSschwarze.Pp
195546d2cf2bSschwarzeOne string is predefined on the
195646d2cf2bSschwarze.Nm
195749e8d17bSschwarzelanguage level:
195849e8d17bSschwarze.Ic \e*(.T
195949e8d17bSschwarzeexpands to the name of the output device,
196046d2cf2bSschwarzefor example ascii, utf8, ps, pdf, html, or markdown.
196146d2cf2bSschwarze.Pp
196246d2cf2bSschwarzeMacro sets traditionally predefine additional strings which are not
196346d2cf2bSschwarzeportable and differ across implementations.
196446d2cf2bSschwarzeThose supported by
196546d2cf2bSschwarze.Xr mandoc 1
196646d2cf2bSschwarzeare listed in
196746d2cf2bSschwarze.Xr mandoc_char 7 .
196846d2cf2bSschwarze.Pp
196946d2cf2bSschwarzeStrings can be defined, changed, and deleted with the
197046d2cf2bSschwarze.Ic \&ds ,
197146d2cf2bSschwarze.Ic \&as ,
197246d2cf2bSschwarzeand
197346d2cf2bSschwarze.Ic \&rm
197446d2cf2bSschwarzerequests.
197549e8d17bSschwarze.It Ic \e,
19760439549aSschwarzeLeft italic correction (groff extension); ignored by
19770439549aSschwarze.Xr mandoc 1 .
197849e8d17bSschwarze.It Ic \e-
19790d336403SschwarzeSpecial character
19802b81461fSschwarze.Dq mathematical minus sign ;
19812b81461fSschwarzesee
19822b81461fSschwarze.Xr mandoc_char 7
19832b81461fSschwarzefor details.
198449e8d17bSschwarze.It Ic \e/
19850439549aSschwarzeRight italic correction (groff extension); ignored by
19860439549aSschwarze.Xr mandoc 1 .
19876f6722cbSschwarze.It Ic \e:
19886f6722cbSschwarzeBreaking the line is allowed at this point of the word
19896f6722cbSschwarzewithout inserting a hyphen.
19906f6722cbSschwarze.It Ic \e?
19916f6722cbSschwarzeEmbed the text up to the next
19926f6722cbSschwarze.Ic \e?
19936f6722cbSschwarzeinto the current diversion without interpreting requests, macros,
19946f6722cbSschwarzeand escapes.
19956f6722cbSschwarzeThis is a groff extension and currently unsupported.
199649e8d17bSschwarze.It Ic \e[ Ns Ar name Ns Ic \&]
19970d336403Sschwarze.Sx Special Characters
19980d336403Sschwarzewith names of arbitrary length, see
19990d336403Sschwarze.Xr mandoc_char 7 .
200049e8d17bSschwarze.It Ic \e^
20010d336403SschwarzeOne-twelfth em half-narrow space character, effectively zero-width in
20020d336403Sschwarze.Xr mandoc 1 .
20036f6722cbSschwarze.It Ic \e_
20046f6722cbSschwarzeUnderline special character; use
20056f6722cbSschwarze.Ic \e(ul
20066f6722cbSschwarzeinstead.
200749e8d17bSschwarze.It Ic \e`
20080d336403SschwarzeGrave accent special character; use
200949e8d17bSschwarze.Ic \e(ga
20100d336403Sschwarzeinstead.
201149e8d17bSschwarze.It Ic \e{
20120d336403SschwarzeBegin conditional input; see
201349e8d17bSschwarze.Ic \&if .
201449e8d17bSschwarze.It Ic \e\(ba
20150d336403SschwarzeOne-sixth em narrow space character, effectively zero-width in
20160d336403Sschwarze.Xr mandoc 1 .
201749e8d17bSschwarze.It Ic \e}
20180d336403SschwarzeEnd conditional input; see
201949e8d17bSschwarze.Ic \&if .
202049e8d17bSschwarze.It Ic \e~
20210d336403SschwarzePaddable non-breaking space character.
202249e8d17bSschwarze.It Ic \e0
20230d336403SschwarzeDigit width space character.
202475a6bad9Sschwarze.It Ic \eA\(aq Ns Ar name Ns Ic \(aq
202575a6bad9SschwarzeInterpolate
202675a6bad9Sschwarze.Sq 1
202775a6bad9Sschwarzeif
202875a6bad9Sschwarze.Ar name
202975a6bad9Sschwarzeis a syntactically valid identifier that can be used
203075a6bad9Sschwarzeas a name for a macro or user-defined string, or
203175a6bad9Sschwarze.Sq 0
203275a6bad9Sschwarzeotherwise.
203375a6bad9SschwarzeThis is a thoroughly non-portable groff extension.
203475a6bad9SschwarzeHeirloom troff uses the same escape sequence with the same syntax
203575a6bad9Sschwarzefor a completely different purpose,
203675a6bad9Sschwarzedefining a hyperlink target position, also called an
203775a6bad9Sschwarze.Dq anchor ,
203875a6bad9Sschwarzewith the given
203975a6bad9Sschwarze.Ar name .
204075a6bad9SschwarzeThe Heirloom semantics is not supported by
20410d336403Sschwarze.Xr mandoc 1 .
20426f6722cbSschwarze.It Ic \ea
20436f6722cbSschwarzeLeader character; ignored by
20446f6722cbSschwarze.Xr mandoc 1 .
204549e8d17bSschwarze.It Ic \eB\(aq Ns Ar string Ns Ic \(aq
2046778fe90eSschwarzeInterpolate
2047778fe90eSschwarze.Sq 1
2048778fe90eSschwarzeif
20490d336403Sschwarze.Ar string
2050778fe90eSschwarzeconforms to the syntax of
2051778fe90eSschwarze.Sx Numerical expressions
20522b81461fSschwarzeexplained above or
2053778fe90eSschwarze.Sq 0
2054778fe90eSschwarzeotherwise.
205549e8d17bSschwarze.It Ic \eb\(aq Ns Ar string Ns Ic \(aq
20560d336403SschwarzeBracket building function; ignored by
20570d336403Sschwarze.Xr mandoc 1 .
205849e8d17bSschwarze.It Ic \eC\(aq Ns Ar name Ns Ic \(aq
20590d336403Sschwarze.Sx Special Characters
20600d336403Sschwarzewith names of arbitrary length.
206149e8d17bSschwarze.It Ic \ec
206264c3401cSschwarzeWhen encountered at the end of an input text line,
206364c3401cSschwarzethe next input text line is considered to continue that line,
206464c3401cSschwarzeeven if there are request or macro lines in between.
206564c3401cSschwarzeNo whitespace is inserted.
206649e8d17bSschwarze.It Ic \eD\(aq Ns Ar string Ns Ic \(aq
20670d336403SschwarzeDraw graphics function; ignored by
20680d336403Sschwarze.Xr mandoc 1 .
206949e8d17bSschwarze.It Ic \ed
20700d336403SschwarzeMove down by half a line; ignored by
20710d336403Sschwarze.Xr mandoc 1 .
20726f6722cbSschwarze.It Ic \eE
20736f6722cbSschwarzeEscape character intended to not be interpreted in copy mode.
20746f6722cbSschwarzeIn
20756f6722cbSschwarze.Xr mandoc 1 ,
20762b81461fSschwarzeit currently does the same as
20776f6722cbSschwarze.Ic \e
20782b81461fSschwarzeitself.
207949e8d17bSschwarze.It Ic \ee
20800d336403SschwarzeBackslash special character.
208149e8d17bSschwarze.It Ic \eF[ Ns Ar name Ns Ic \&]
20820d336403SschwarzeSwitch font family (groff extension); ignored by
20830d336403Sschwarze.Xr mandoc 1 .
20840d336403SschwarzeFor short names, there are variants
208549e8d17bSschwarze.Ic \eF Ns Ar c
20860d336403Sschwarzeand
208749e8d17bSschwarze.Ic \eF( Ns Ar cc .
208849e8d17bSschwarze.It Ic \ef[ Ns Ar name Ns Ic \&]
20890d336403SschwarzeSwitch to the font
20900d336403Sschwarze.Ar name ,
20910d336403Sschwarzesee
20922e362670Sschwarze.Sx Font Selection .
20930d336403SschwarzeFor short names, there are variants
209449e8d17bSschwarze.Ic \ef Ns Ar c
20950d336403Sschwarzeand
209649e8d17bSschwarze.Ic \ef( Ns Ar cc .
20972e362670SschwarzeAn empty name
20982e362670Sschwarze.Ic \ef[]
20992e362670Sschwarzedefaults to
21002e362670Sschwarze.Ic \efP .
210149e8d17bSschwarze.It Ic \eg[ Ns Ar name Ns Ic \&]
21020d336403SschwarzeInterpolate the format of a number register; ignored by
21036f49ebc4Sschwarze.Xr mandoc 1 ,
21046f49ebc4Sschwarzewhich interpolates an empty string instead.
21050d336403SschwarzeFor short names, there are variants
210649e8d17bSschwarze.Ic \eg Ns Ar c
21070d336403Sschwarzeand
210849e8d17bSschwarze.Ic \eg( Ns Ar cc .
210949e8d17bSschwarze.It Ic \eH\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
21100d336403SschwarzeSet the height of the current font; ignored by
21110d336403Sschwarze.Xr mandoc 1 .
211249e8d17bSschwarze.It Ic \eh\(aq Ns Oo Cm \&| Oc Ns Ar width Ns Ic \(aq
21132aa67a98SschwarzeHorizontal motion.
21142aa67a98SschwarzeIf the vertical bar is given, the motion is relative to the current
21152aa67a98Sschwarzeindentation.
21162aa67a98SschwarzeOtherwise, it is relative to the current position.
21178e935ceaSschwarzeThe default scaling unit is
21188e935ceaSschwarze.Cm m .
211949e8d17bSschwarze.It Ic \ek[ Ns Ar name Ns Ic \&]
21200d336403SschwarzeMark horizontal input place in register; ignored by
21210d336403Sschwarze.Xr mandoc 1 .
21220d336403SschwarzeFor short names, there are variants
212349e8d17bSschwarze.Ic \ek Ns Ar c
21240d336403Sschwarzeand
212549e8d17bSschwarze.Ic \ek( Ns Ar cc .
212649e8d17bSschwarze.It Ic \eL\(aq Ns Ar number Ns Oo Ar c Oc Ns Ic \(aq
21270d336403SschwarzeVertical line drawing function; ignored by
21280d336403Sschwarze.Xr mandoc 1 .
212949e8d17bSschwarze.It Ic \el\(aq Ns Ar width Ns Oo Ar c Oc Ns Ic \(aq
2130bef920b0SschwarzeDraw a horizontal line of
2131bef920b0Sschwarze.Ar width
2132bef920b0Sschwarzeusing the glyph
2133bef920b0Sschwarze.Ar c .
213449e8d17bSschwarze.It Ic \eM[ Ns Ar name Ns Ic \&]
21350d336403SschwarzeSet fill (background) color (groff extension); ignored by
21360d336403Sschwarze.Xr mandoc 1 .
21370d336403SschwarzeFor short names, there are variants
213849e8d17bSschwarze.Ic \eM Ns Ar c
21390d336403Sschwarzeand
214049e8d17bSschwarze.Ic \eM( Ns Ar cc .
214149e8d17bSschwarze.It Ic \em[ Ns Ar name Ns Ic \&]
21420d336403SschwarzeSet glyph drawing color (groff extension); ignored by
21430d336403Sschwarze.Xr mandoc 1 .
21440d336403SschwarzeFor short names, there are variants
214549e8d17bSschwarze.Ic \em Ns Ar c
21460d336403Sschwarzeand
214749e8d17bSschwarze.Ic \em( Ns Ar cc .
214849e8d17bSschwarze.It Ic \eN\(aq Ns Ar number Ns Ic \(aq
21490d336403SschwarzeCharacter
21500d336403Sschwarze.Ar number
21510d336403Sschwarzeon the current font.
215249e8d17bSschwarze.It Ic \en Ns Oo +|- Oc Ns Ic \&[ Ns Ar name Ns Ic \&]
21530d336403SschwarzeInterpolate the number register
21540d336403Sschwarze.Ar name .
21550d336403SschwarzeFor short names, there are variants
215649e8d17bSschwarze.Ic \en Ns Ar c
21570d336403Sschwarzeand
215849e8d17bSschwarze.Ic \en( Ns Ar cc .
2159dcd9eb04SschwarzeIf the optional sign is specified,
2160dcd9eb04Sschwarzethe register is first incremented or decremented by the
2161dcd9eb04Sschwarze.Ar stepsize
2162dcd9eb04Sschwarzethat was specified in the relevant
2163dcd9eb04Sschwarze.Ic \&nr
2164dcd9eb04Sschwarzerequest, and the changed value is interpolated.
21656f6722cbSschwarze.It Ic \eO Ns Ar digit , Ic \eO[5 Ns arguments Ns Ic \&]
21666f6722cbSschwarzeSuppress output.
21676f6722cbSschwarzeThis is a groff extension and currently unsupported.
21686f6722cbSschwarzeWith an argument of
21696f6722cbSschwarze.Ic 1 , 2 , 3 ,
21706f6722cbSschwarzeor
21716f6722cbSschwarze.Ic 4 ,
21726f6722cbSschwarzeit is ignored.
217349e8d17bSschwarze.It Ic \eo\(aq Ns Ar string Ns Ic \(aq
217439d402deSjmcOverstrike, writing all the characters contained in the
217564f4916cSschwarze.Ar string
217664f4916cSschwarzeto the same output position.
217764f4916cSschwarzeIn terminal and HTML output modes,
217864f4916cSschwarzeonly the last one of the characters is visible.
217949e8d17bSschwarze.It Ic \ep
21806167ec38SschwarzeBreak the output line at the end of the current word.
218149e8d17bSschwarze.It Ic \eR\(aq Ns Ar name Oo +|- Oc Ns Ar number Ns Ic \(aq
21820d336403SschwarzeSet number register; ignored by
21830d336403Sschwarze.Xr mandoc 1 .
21846f6722cbSschwarze.It Ic \er
2185aa5d553dSschwarzeReverse line feed: move up by one output line.
2186aa5d553dSschwarzeCurrently unsupported.
218749e8d17bSschwarze.It Ic \eS\(aq Ns Ar number Ns Ic \(aq
21880d336403SschwarzeSlant output; ignored by
21890d336403Sschwarze.Xr mandoc 1 .
219049e8d17bSschwarze.It Ic \es\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
21910d336403SschwarzeChange point size; ignored by
21920d336403Sschwarze.Xr mandoc 1 .
21930d336403SschwarzeAlternative forms
219449e8d17bSschwarze.Ic \es Ns Oo +|- Oc Ns Ar n ,
219549e8d17bSschwarze.Ic \es Ns Oo +|- Oc Ns Ic \(aq Ns Ar number Ns Ic \(aq ,
219649e8d17bSschwarze.Ic \es[ Ns Oo +|- Oc Ns Ar number Ns Ic \&] ,
21970d336403Sschwarzeand
219849e8d17bSschwarze.Ic \es Ns Oo +|- Oc Ns Ic \&[ Ns Ar number Ns Ic \&]
21990d336403Sschwarzeare also parsed and ignored.
220049e8d17bSschwarze.It Ic \et
22010d336403SschwarzeHorizontal tab; ignored by
22020d336403Sschwarze.Xr mandoc 1 .
220349e8d17bSschwarze.It Ic \eu
22040d336403SschwarzeMove up by half a line; ignored by
22050d336403Sschwarze.Xr mandoc 1 .
220649e8d17bSschwarze.It Ic \eV[ Ns Ar name Ns Ic \&]
220783a9dfe1SschwarzeInterpolate an environment variable.
22080d336403SschwarzeFor short names, there are variants
220949e8d17bSschwarze.Ic \eV Ns Ar c
22100d336403Sschwarzeand
221149e8d17bSschwarze.Ic \eV( Ns Ar cc .
221283a9dfe1SschwarzeThis escape sequence is intentionally unsupported;
221383a9dfe1Sschwarze.Xr mandoc 1
221483a9dfe1Sschwarzeprints the string
221583a9dfe1Sschwarze.Dq Pf $ Brq Ar name
221683a9dfe1Sschwarzeinstead of inspecting the environment.
221749e8d17bSschwarze.It Ic \ev\(aq Ns Ar number Ns Ic \(aq
22180d336403SschwarzeVertical motion; ignored by
22190d336403Sschwarze.Xr mandoc 1 .
222049e8d17bSschwarze.It Ic \ew\(aq Ns Ar string Ns Ic \(aq
22210d336403SschwarzeInterpolate the width of the
2222778fe90eSschwarze.Ar string .
2223778fe90eSschwarzeThe
2224778fe90eSschwarze.Xr mandoc 1
2225778fe90eSschwarzeimplementation assumes that after expansion of user-defined strings, the
2226778fe90eSschwarze.Ar string
2227*6d9b308dSschwarzeonly contains normal characters, characters expressed as escape sequences,
2228*6d9b308dSschwarzeand zero-width escape sequences, and that each
2229778fe90eSschwarzecharacter has a width of 24 basic units.
223049e8d17bSschwarze.It Ic \eX\(aq Ns Ar string Ns Ic \(aq
22310d336403SschwarzeOutput
22320d336403Sschwarze.Ar string
22330d336403Sschwarzeas device control function; ignored in nroff mode and by
22340d336403Sschwarze.Xr mandoc 1 .
223549e8d17bSschwarze.It Ic \ex\(aq Ns Ar number Ns Ic \(aq
22360d336403SschwarzeExtra line space function; ignored by
22370d336403Sschwarze.Xr mandoc 1 .
223849e8d17bSschwarze.It Ic \eY[ Ns Ar name Ns Ic \&]
22390d336403SschwarzeOutput a string as a device control function; ignored in nroff mode and by
22400d336403Sschwarze.Xr mandoc 1 .
22410d336403SschwarzeFor short names, there are variants
224249e8d17bSschwarze.Ic \eY Ns Ar c
22430d336403Sschwarzeand
224449e8d17bSschwarze.Ic \eY( Ns Ar cc .
224549e8d17bSschwarze.It Ic \eZ\(aq Ns Ar string Ns Ic \(aq
22460d336403SschwarzePrint
22470d336403Sschwarze.Ar string
22480d336403Sschwarzewith zero width and height; ignored by
22490d336403Sschwarze.Xr mandoc 1 .
225049e8d17bSschwarze.It Ic \ez
2251f2e60d14SschwarzeOutput the next character without advancing the cursor position.
225249e8d17bSschwarze.El
2253b9a2ea3fSschwarze.Sh COMPATIBILITY
2254a497dac9SschwarzeThe
2255a497dac9Sschwarze.Xr mandoc 1
2256a497dac9Sschwarzeimplementation of the
2257d5886527Sschwarze.Nm
225848b448e1Sschwarzelanguage is incomplete.
225948b448e1SschwarzeMajor unimplemented features include:
2260b9a2ea3fSschwarze.Pp
2261b9a2ea3fSschwarze.Bl -dash -compact
2262b9a2ea3fSschwarze.It
2263a497dac9SschwarzeFor security reasons,
2264a497dac9Sschwarze.Xr mandoc 1
2265a497dac9Sschwarzenever reads or writes external files except via
226649e8d17bSschwarze.Ic \&so
2267a497dac9Sschwarzerequests with safe relative paths.
2268a497dac9Sschwarze.It
2269a497dac9SschwarzeThere is no automatic hyphenation, no adjustment to the right margin,
227048b448e1Sschwarzeand very limited support for centering; the output is always set flush-left.
2271a497dac9Sschwarze.It
227248b448e1SschwarzeSupport for setting tabulator and leader characters is missing,
2273a497dac9Sschwarzeand support for manually changing indentation is limited.
2274a497dac9Sschwarze.It
2275d5dc6f2eSschwarzeThe
2276d5dc6f2eSschwarze.Sq u
2277d5dc6f2eSschwarzescaling unit is the default terminal unit.
2278a497dac9SschwarzeIn traditional troff systems, this unit changes depending on the
2279d5dc6f2eSschwarzeoutput media.
2280d5dc6f2eSschwarze.It
2281a497dac9SschwarzeWidth measurements are implemented in a crude way
2282a497dac9Sschwarzeand often yield wrong results.
228348b448e1SschwarzeSupport for explicit movement requests and escapes is limited.
2284a497dac9Sschwarze.It
2285a497dac9SschwarzeThere is no concept of output pages, no support for floats,
2286a497dac9Sschwarzegraphics drawing, and picture inclusion;
2287a497dac9Sschwarzeterminal output is always continuous.
2288a497dac9Sschwarze.It
228948b448e1SschwarzeRequests regarding color, font families, font sizes,
229048b448e1Sschwarzeand glyph manipulation are ignored.
2291a497dac9SschwarzeFont support is very limited.
2292a497dac9SschwarzeKerning is not implemented, and no ligatures are produced.
22936d10740dSschwarze.It
2294b9a2ea3fSschwarzeThe
2295a497dac9Sschwarze.Qq \(aq
2296a497dac9Sschwarzemacro control character does not suppress output line breaks.
2297b9a2ea3fSschwarze.It
229848b448e1SschwarzeDiversions and environments are not implemented,
2299a497dac9Sschwarzeand support for traps is very incomplete.
230048b448e1Sschwarze.It
230148b448e1SschwarzeUse of macros is not supported inside
230248b448e1Sschwarze.Xr tbl 7
230348b448e1Sschwarzecode.
2304b9a2ea3fSschwarze.El
2305a497dac9Sschwarze.Pp
2306a497dac9SschwarzeThe special semantics of the
2307a497dac9Sschwarze.Cm nS
23088992c43aSschwarzenumber register is an idiosyncrasy of
2309a497dac9Sschwarze.Ox
2310a497dac9Sschwarzemanuals and not supported by other
2311a497dac9Sschwarze.Xr mdoc 7
2312a497dac9Sschwarzeimplementations.
2313d5886527Sschwarze.Sh SEE ALSO
2314d5886527Sschwarze.Xr mandoc 1 ,
23156d10740dSschwarze.Xr eqn 7 ,
2316d5886527Sschwarze.Xr man 7 ,
2317d5886527Sschwarze.Xr mandoc_char 7 ,
23182683b1e5Sschwarze.Xr mdoc 7 ,
23192683b1e5Sschwarze.Xr tbl 7
2320d5886527Sschwarze.Rs
2321d5886527Sschwarze.%A Joseph F. Ossanna
2322d5886527Sschwarze.%A Brian W. Kernighan
2323d5886527Sschwarze.%I AT&T Bell Laboratories
2324d5886527Sschwarze.%T Troff User's Manual
2325d5886527Sschwarze.%R Computing Science Technical Report
2326d5886527Sschwarze.%N 54
2327d5886527Sschwarze.%C Murray Hill, New Jersey
2328d5886527Sschwarze.%D 1976 and 1992
2329d5886527Sschwarze.%U http://www.kohala.com/start/troff/cstr54.ps
2330d5886527Sschwarze.Re
2331d5886527Sschwarze.Rs
2332d5886527Sschwarze.%A Joseph F. Ossanna
2333d5886527Sschwarze.%A Brian W. Kernighan
2334d5886527Sschwarze.%A Gunnar Ritter
2335d5886527Sschwarze.%T Heirloom Documentation Tools Nroff/Troff User's Manual
2336d5886527Sschwarze.%D September 17, 2007
2337d5886527Sschwarze.%U http://heirloom.sourceforge.net/doctools/troff.pdf
2338d5886527Sschwarze.Re
2339d5886527Sschwarze.Sh HISTORY
2340b21dc87fSschwarzeThe RUNOFF typesetting system, whose input forms the basis for
2341d5886527Sschwarze.Nm ,
2342b21dc87fSschwarzewas written in MAD and FAP for the CTSS operating system by Jerome E.
2343b21dc87fSschwarzeSaltzer in 1964.
2344b21dc87fSschwarzeDoug McIlroy rewrote it in BCPL in 1969, renaming it
2345b21dc87fSschwarze.Nm .
2346b21dc87fSschwarzeDennis M. Ritchie rewrote McIlroy's
2347b21dc87fSschwarze.Nm
2348d1ea3da2Sschwarzein PDP-11 assembly for
2349b21dc87fSschwarze.At v1 ,
2350b21dc87fSschwarzeJoseph F. Ossanna improved roff and renamed it nroff
2351b21dc87fSschwarzefor
2352b21dc87fSschwarze.At v2 ,
2353b21dc87fSschwarzethen ported nroff to C as troff, which Brian W. Kernighan released with
2354b21dc87fSschwarze.At v7 .
2355ec238637SschwarzeIn 1989, James Clark re-implemented troff in C++, naming it groff.
2356b9a2ea3fSschwarze.Sh AUTHORS
2357b9a2ea3fSschwarze.An -nosplit
23586d10740dSschwarzeThis
2359b9a2ea3fSschwarze.Nm
2360b9a2ea3fSschwarzereference was written by
2361866a81f2Sschwarze.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
2362b9a2ea3fSschwarzeand
2363866a81f2Sschwarze.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2364