xref: /dflybsd-src/contrib/mdocml/roff.7 (revision 1e4d43f9c96723e4e55543d240f182e1aac9a4c2)
1*99db7d0eSSascha Wildner.\"	$Id: roff.7,v 1.116 2021/09/18 12:23:06 schwarze Exp $
280387638SSascha Wildner.\"
37888c61dSFranco Fichtner.\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
454ba9607SSascha Wildner.\" Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>
580387638SSascha Wildner.\"
680387638SSascha Wildner.\" Permission to use, copy, modify, and distribute this software for any
780387638SSascha Wildner.\" purpose with or without fee is hereby granted, provided that the above
880387638SSascha Wildner.\" copyright notice and this permission notice appear in all copies.
980387638SSascha Wildner.\"
1080387638SSascha Wildner.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1180387638SSascha Wildner.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1280387638SSascha Wildner.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1380387638SSascha Wildner.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1480387638SSascha Wildner.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1580387638SSascha Wildner.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1680387638SSascha Wildner.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1780387638SSascha Wildner.\"
18*99db7d0eSSascha Wildner.Dd $Mdocdate: September 18 2021 $
1980387638SSascha Wildner.Dt ROFF 7
2080387638SSascha Wildner.Os
2180387638SSascha Wildner.Sh NAME
2280387638SSascha Wildner.Nm roff
2380387638SSascha Wildner.Nd roff language reference for mandoc
2480387638SSascha Wildner.Sh DESCRIPTION
2580387638SSascha WildnerThe
2680387638SSascha Wildner.Nm roff
2780387638SSascha Wildnerlanguage is a general purpose text formatting language.
2836342e81SSascha WildnerSince traditional implementations of the
2980387638SSascha Wildner.Xr mdoc 7
3080387638SSascha Wildnerand
3180387638SSascha Wildner.Xr man 7
3236342e81SSascha Wildnermanual formatting languages are based on it,
3336342e81SSascha Wildnermany real-world manuals use small numbers of
3480387638SSascha Wildner.Nm
357888c61dSFranco Fichtnerrequests and escape sequences intermixed with their
3636342e81SSascha Wildner.Xr mdoc 7
3780387638SSascha Wildneror
3836342e81SSascha Wildner.Xr man 7
3936342e81SSascha Wildnercode.
4036342e81SSascha WildnerTo properly format such manuals, the
4136342e81SSascha Wildner.Xr mandoc 1
4254ba9607SSascha Wildnerutility supports a subset of
4336342e81SSascha Wildner.Nm
447888c61dSFranco Fichtnerrequests and escapes.
4554ba9607SSascha WildnerEven though this manual page lists all
4654ba9607SSascha Wildner.Nm
4754ba9607SSascha Wildnerrequests and escape sequences, it only contains partial information
4854ba9607SSascha Wildnerabout requests not supported by
4936342e81SSascha Wildner.Xr mandoc 1
5054ba9607SSascha Wildnerand about language features that do not matter for manual pages.
5136342e81SSascha WildnerFor complete
5236342e81SSascha Wildner.Nm
5336342e81SSascha Wildnermanuals, consult the
5436342e81SSascha Wildner.Sx SEE ALSO
5536342e81SSascha Wildnersection.
5680387638SSascha Wildner.Pp
5736342e81SSascha WildnerInput lines beginning with the control character
5836342e81SSascha Wildner.Sq \&.
5936342e81SSascha Wildnerare parsed for requests and macros.
6036342e81SSascha WildnerSuch lines are called
6136342e81SSascha Wildner.Dq request lines
6236342e81SSascha Wildneror
6336342e81SSascha Wildner.Dq macro lines ,
6436342e81SSascha Wildnerrespectively.
6536342e81SSascha WildnerRequests change the processing state and manipulate the formatting;
6636342e81SSascha Wildnersome macros also define the document structure and produce formatted
6736342e81SSascha Wildneroutput.
6836342e81SSascha WildnerThe single quote
6936342e81SSascha Wildner.Pq Qq \(aq
7036342e81SSascha Wildneris accepted as an alternative control character,
7136342e81SSascha Wildnertreated by
7236342e81SSascha Wildner.Xr mandoc 1
7336342e81SSascha Wildnerjust like
7436342e81SSascha Wildner.Ql \&.
7536342e81SSascha Wildner.Pp
7636342e81SSascha WildnerLines not beginning with control characters are called
7736342e81SSascha Wildner.Dq text lines .
7836342e81SSascha WildnerThey provide free-form text to be printed; the formatting of the text
7936342e81SSascha Wildnerdepends on the respective processing context.
8080387638SSascha Wildner.Sh LANGUAGE SYNTAX
8180387638SSascha Wildner.Nm
8280387638SSascha Wildnerdocuments may contain only graphable 7-bit ASCII characters, the space
8380387638SSascha Wildnercharacter, and, in certain circumstances, the tab character.
84f88b6c16SFranco FichtnerThe backslash character
8536342e81SSascha Wildner.Sq \e
867888c61dSFranco Fichtnerindicates the start of an escape sequence, used for example for
8754ba9607SSascha Wildner.Sx Comments
8836342e81SSascha Wildnerand
8954ba9607SSascha Wildner.Sx Special Characters .
9054ba9607SSascha WildnerFor a complete listing of escape sequences, consult the
917888c61dSFranco Fichtner.Sx ESCAPE SEQUENCE REFERENCE
927888c61dSFranco Fichtnerbelow.
9336342e81SSascha Wildner.Ss Comments
9436342e81SSascha WildnerText following an escaped double-quote
9536342e81SSascha Wildner.Sq \e\(dq ,
9636342e81SSascha Wildnerwhether in a request, macro, or text line, is ignored to the end of the line.
9736342e81SSascha WildnerA request line beginning with a control character and comment escape
9836342e81SSascha Wildner.Sq \&.\e\(dq
9936342e81SSascha Wildneris also ignored.
10036342e81SSascha WildnerFurthermore, request lines with only a control character and optional
10136342e81SSascha Wildnertrailing whitespace are stripped from input.
10236342e81SSascha Wildner.Pp
10336342e81SSascha WildnerExamples:
10436342e81SSascha Wildner.Bd -literal -offset indent -compact
10536342e81SSascha Wildner\&.\e\(dq This is a comment line.
10636342e81SSascha Wildner\&.\e\(dq The next line is ignored:
10736342e81SSascha Wildner\&.
10836342e81SSascha Wildner\&.Sh EXAMPLES \e\(dq This is a comment, too.
10936342e81SSascha Wildner\&example text \e\(dq And so is this.
11036342e81SSascha Wildner.Ed
11136342e81SSascha Wildner.Ss Special Characters
11236342e81SSascha WildnerSpecial characters are used to encode special glyphs and are rendered
11336342e81SSascha Wildnerdifferently across output media.
11436342e81SSascha WildnerThey may occur in request, macro, and text lines.
11536342e81SSascha WildnerSequences begin with the escape character
11636342e81SSascha Wildner.Sq \e
11736342e81SSascha Wildnerfollowed by either an open-parenthesis
11836342e81SSascha Wildner.Sq \&(
11936342e81SSascha Wildnerfor two-character sequences; an open-bracket
12036342e81SSascha Wildner.Sq \&[
12136342e81SSascha Wildnerfor n-character sequences (terminated at a close-bracket
12236342e81SSascha Wildner.Sq \&] ) ;
12336342e81SSascha Wildneror a single one character sequence.
12436342e81SSascha Wildner.Pp
12536342e81SSascha WildnerExamples:
12636342e81SSascha Wildner.Bl -tag -width Ds -offset indent -compact
12736342e81SSascha Wildner.It Li \e(em
12836342e81SSascha WildnerTwo-letter em dash escape.
12936342e81SSascha Wildner.It Li \ee
13036342e81SSascha WildnerOne-letter backslash escape.
13136342e81SSascha Wildner.El
13236342e81SSascha Wildner.Pp
13336342e81SSascha WildnerSee
13480387638SSascha Wildner.Xr mandoc_char 7
13536342e81SSascha Wildnerfor a complete list.
13654ba9607SSascha Wildner.Ss Font Selection
13754ba9607SSascha WildnerIn
13854ba9607SSascha Wildner.Xr mdoc 7
13954ba9607SSascha Wildnerand
14054ba9607SSascha Wildner.Xr man 7
14154ba9607SSascha Wildnerdocuments, fonts are usually selected with macros.
14254ba9607SSascha WildnerThe
14354ba9607SSascha Wildner.Ic \ef
14454ba9607SSascha Wildnerescape sequence and the
14554ba9607SSascha Wildner.Ic \&ft
14654ba9607SSascha Wildnerrequest can be used to manually change the font,
14754ba9607SSascha Wildnerbut this is not recommended in
14854ba9607SSascha Wildner.Xr mdoc 7
14954ba9607SSascha Wildnerdocuments.
15054ba9607SSascha WildnerSuch manual font changes are overridden by many subsequent macros.
15136342e81SSascha Wildner.Pp
15254ba9607SSascha WildnerThe following fonts are supported:
15354ba9607SSascha Wildner.Pp
15454ba9607SSascha Wildner.Bl -tag -width CW -offset indent -compact
15554ba9607SSascha Wildner.It Cm B
15654ba9607SSascha WildnerBold font.
15754ba9607SSascha Wildner.It Cm BI
15854ba9607SSascha WildnerA font that is both bold and italic.
15954ba9607SSascha Wildner.It Cm CB
16054ba9607SSascha WildnerBold constant width font.
16154ba9607SSascha WildnerSame as
16254ba9607SSascha Wildner.Cm B
16354ba9607SSascha Wildnerin terminal output.
16454ba9607SSascha Wildner.It Cm CI
16554ba9607SSascha WildnerItalic constant width font.
16654ba9607SSascha WildnerSame as
16754ba9607SSascha Wildner.Cm I
16854ba9607SSascha Wildnerin terminal output.
16954ba9607SSascha Wildner.It Cm CR
17054ba9607SSascha WildnerRegular constant width font.
17154ba9607SSascha WildnerSame as
17254ba9607SSascha Wildner.Cm R
17354ba9607SSascha Wildnerin terminal output.
17454ba9607SSascha Wildner.It Cm CW
17554ba9607SSascha WildnerAn alias for
17654ba9607SSascha Wildner.Cm CR .
17754ba9607SSascha Wildner.It Cm I
17854ba9607SSascha WildnerItalic font.
17954ba9607SSascha Wildner.It Cm P
18054ba9607SSascha WildnerReturn to the previous font.
18154ba9607SSascha WildnerIf a macro caused a font change since the last
18254ba9607SSascha Wildner.Ic \ef
18354ba9607SSascha Wildnereascape sequence or
18454ba9607SSascha Wildner.Ic \&ft
18554ba9607SSascha Wildnerrequest, this returns to the font before the last font change in
18654ba9607SSascha Wildnerthe macro rather than to the font before the last manual font change.
18754ba9607SSascha Wildner.It Cm R
18854ba9607SSascha WildnerRoman font.
18954ba9607SSascha WildnerThis is the default font.
19054ba9607SSascha Wildner.It Cm 1
19154ba9607SSascha WildnerAn alias for
19254ba9607SSascha Wildner.Cm R .
19354ba9607SSascha Wildner.It Cm 2
19454ba9607SSascha WildnerAn alias for
19554ba9607SSascha Wildner.Cm I .
19654ba9607SSascha Wildner.It Cm 3
19754ba9607SSascha WildnerAn alias for
19854ba9607SSascha Wildner.Cm B .
19954ba9607SSascha Wildner.It Cm 4
20054ba9607SSascha WildnerAn alias for
20154ba9607SSascha Wildner.Cm BI .
20254ba9607SSascha Wildner.El
203f88b6c16SFranco Fichtner.Pp
20436342e81SSascha WildnerExamples:
20536342e81SSascha Wildner.Bl -tag -width Ds -offset indent -compact
20636342e81SSascha Wildner.It Li \efBbold\efR
207f88b6c16SFranco FichtnerWrite in \fBbold\fP, then switch to regular font mode.
20836342e81SSascha Wildner.It Li \efIitalic\efP
209f88b6c16SFranco FichtnerWrite in \fIitalic\fP, then return to previous font mode.
210f88b6c16SFranco Fichtner.It Li \ef(BIbold italic\efP
211f88b6c16SFranco FichtnerWrite in \f(BIbold italic\fP, then return to previous font mode.
21236342e81SSascha Wildner.El
21336342e81SSascha Wildner.Ss Whitespace
21436342e81SSascha WildnerWhitespace consists of the space character.
21536342e81SSascha WildnerIn text lines, whitespace is preserved within a line.
21636342e81SSascha WildnerIn request and macro lines, whitespace delimits arguments and is discarded.
21736342e81SSascha Wildner.Pp
21836342e81SSascha WildnerUnescaped trailing spaces are stripped from text line input unless in a
21936342e81SSascha Wildnerliteral context.
22036342e81SSascha WildnerIn general, trailing whitespace on any input line is discouraged for
22136342e81SSascha Wildnerreasons of portability.
22254ba9607SSascha WildnerIn the rare case that a space character is needed at the end of an
22336342e81SSascha Wildnerinput line, it may be forced by
22436342e81SSascha Wildner.Sq \e\ \e& .
22536342e81SSascha Wildner.Pp
22636342e81SSascha WildnerLiteral space characters can be produced in the output
22736342e81SSascha Wildnerusing escape sequences.
22836342e81SSascha WildnerIn macro lines, they can also be included in arguments using quotation; see
22936342e81SSascha Wildner.Sx MACRO SYNTAX
23036342e81SSascha Wildnerfor details.
23136342e81SSascha Wildner.Pp
23236342e81SSascha WildnerBlank text lines, which may include whitespace, are only permitted
23336342e81SSascha Wildnerwithin literal contexts.
23436342e81SSascha WildnerIf the first character of a text line is a space, that line is printed
23536342e81SSascha Wildnerwith a leading newline.
23636342e81SSascha Wildner.Ss Scaling Widths
23736342e81SSascha WildnerMany requests and macros support scaled widths for their arguments.
23836342e81SSascha WildnerThe syntax for a scaled width is
23936342e81SSascha Wildner.Sq Li [+-]?[0-9]*.[0-9]*[:unit:] ,
24036342e81SSascha Wildnerwhere a decimal must be preceded or followed by at least one digit.
24136342e81SSascha Wildner.Pp
24236342e81SSascha WildnerThe following scaling units are accepted:
24336342e81SSascha Wildner.Pp
24436342e81SSascha Wildner.Bl -tag -width Ds -offset indent -compact
24536342e81SSascha Wildner.It c
24636342e81SSascha Wildnercentimetre
24736342e81SSascha Wildner.It i
24836342e81SSascha Wildnerinch
24936342e81SSascha Wildner.It P
25054ba9607SSascha Wildnerpica (1/6 inch)
25136342e81SSascha Wildner.It p
25254ba9607SSascha Wildnerpoint (1/72 inch)
25336342e81SSascha Wildner.It f
25454ba9607SSascha Wildnerscale
25536342e81SSascha Wildner.Sq u
25654ba9607SSascha Wildnerby 65536
25736342e81SSascha Wildner.It v
25836342e81SSascha Wildnerdefault vertical span
25936342e81SSascha Wildner.It m
26036342e81SSascha Wildnerwidth of rendered
26136342e81SSascha Wildner.Sq m
26236342e81SSascha Wildner.Pq em
26336342e81SSascha Wildnercharacter
26436342e81SSascha Wildner.It n
26536342e81SSascha Wildnerwidth of rendered
26636342e81SSascha Wildner.Sq n
26736342e81SSascha Wildner.Pq en
26836342e81SSascha Wildnercharacter
26936342e81SSascha Wildner.It u
27054ba9607SSascha Wildnerdefault horizontal span for the terminal
27136342e81SSascha Wildner.It M
27254ba9607SSascha Wildnermini-em (1/100 em)
27336342e81SSascha Wildner.El
27436342e81SSascha Wildner.Pp
27536342e81SSascha WildnerUsing anything other than
27636342e81SSascha Wildner.Sq m ,
27736342e81SSascha Wildner.Sq n ,
27836342e81SSascha Wildneror
27936342e81SSascha Wildner.Sq v
28036342e81SSascha Wildneris necessarily non-portable across output media.
28136342e81SSascha WildnerSee
28236342e81SSascha Wildner.Sx COMPATIBILITY .
28336342e81SSascha Wildner.Pp
28436342e81SSascha WildnerIf a scaling unit is not provided, the numerical value is interpreted
28536342e81SSascha Wildnerunder the default rules of
28636342e81SSascha Wildner.Sq v
28736342e81SSascha Wildnerfor vertical spaces and
28836342e81SSascha Wildner.Sq u
28936342e81SSascha Wildnerfor horizontal ones.
29036342e81SSascha Wildner.Pp
29136342e81SSascha WildnerExamples:
29236342e81SSascha Wildner.Bl -tag -width ".Bl -tag -width 2i" -offset indent -compact
29336342e81SSascha Wildner.It Li \&.Bl -tag -width 2i
29436342e81SSascha Wildnertwo-inch tagged list indentation in
29536342e81SSascha Wildner.Xr mdoc 7
29636342e81SSascha Wildner.It Li \&.HP 2i
29736342e81SSascha Wildnertwo-inch tagged list indentation in
29836342e81SSascha Wildner.Xr man 7
29936342e81SSascha Wildner.It Li \&.sp 2v
30036342e81SSascha Wildnertwo vertical spaces
30136342e81SSascha Wildner.El
30236342e81SSascha Wildner.Ss Sentence Spacing
30336342e81SSascha WildnerEach sentence should terminate at the end of an input line.
30436342e81SSascha WildnerBy doing this, a formatter will be able to apply the proper amount of
30536342e81SSascha Wildnerspacing after the end of sentence (unescaped) period, exclamation mark,
30636342e81SSascha Wildneror question mark followed by zero or more non-sentence closing
30736342e81SSascha Wildnerdelimiters
30836342e81SSascha Wildner.Po
30936342e81SSascha Wildner.Sq \&) ,
31036342e81SSascha Wildner.Sq \&] ,
31136342e81SSascha Wildner.Sq \&' ,
31236342e81SSascha Wildner.Sq \&"
31336342e81SSascha Wildner.Pc .
31436342e81SSascha Wildner.Pp
31536342e81SSascha WildnerThe proper spacing is also intelligently preserved if a sentence ends at
31636342e81SSascha Wildnerthe boundary of a macro line.
31736342e81SSascha Wildner.Pp
318*99db7d0eSSascha WildnerIf an input line happens to end with a period, exclamation or question
319*99db7d0eSSascha Wildnermark that isn't the end of a sentence, append a zero-width space
320*99db7d0eSSascha Wildner.Pq Sq \e& .
321*99db7d0eSSascha Wildner.Pp
32236342e81SSascha WildnerExamples:
32336342e81SSascha Wildner.Bd -literal -offset indent -compact
32436342e81SSascha WildnerDo not end sentences mid-line like this.  Instead,
32536342e81SSascha Wildnerend a sentence like this.
32636342e81SSascha WildnerA macro would end like this:
32736342e81SSascha Wildner\&.Xr mandoc 1 \&.
328*99db7d0eSSascha WildnerAn abbreviation at the end of an input line needs escaping, e.g.\e&
329*99db7d0eSSascha Wildnerlike this.
33036342e81SSascha Wildner.Ed
33180387638SSascha Wildner.Sh REQUEST SYNTAX
33280387638SSascha WildnerA request or macro line consists of:
33380387638SSascha Wildner.Pp
33480387638SSascha Wildner.Bl -enum -compact
33580387638SSascha Wildner.It
33680387638SSascha Wildnerthe control character
33780387638SSascha Wildner.Sq \&.
33880387638SSascha Wildneror
33980387638SSascha Wildner.Sq \(aq
34080387638SSascha Wildnerat the beginning of the line,
34180387638SSascha Wildner.It
34280387638SSascha Wildneroptionally an arbitrary amount of whitespace,
34380387638SSascha Wildner.It
34480387638SSascha Wildnerthe name of the request or the macro, which is one word of arbitrary
34580387638SSascha Wildnerlength, terminated by whitespace,
34680387638SSascha Wildner.It
34780387638SSascha Wildnerand zero or more arguments delimited by whitespace.
34880387638SSascha Wildner.El
34980387638SSascha Wildner.Pp
35080387638SSascha WildnerThus, the following request lines are all equivalent:
35180387638SSascha Wildner.Bd -literal -offset indent
35280387638SSascha Wildner\&.ig end
35380387638SSascha Wildner\&.ig    end
35480387638SSascha Wildner\&.   ig end
35580387638SSascha Wildner.Ed
35660e1e752SSascha Wildner.Sh MACRO SYNTAX
35736342e81SSascha WildnerMacros are provided by the
35836342e81SSascha Wildner.Xr mdoc 7
35936342e81SSascha Wildnerand
36036342e81SSascha Wildner.Xr man 7
36136342e81SSascha Wildnerlanguages and can be defined by the
36254ba9607SSascha Wildner.Ic \&de
36360e1e752SSascha Wildnerrequest.
36460e1e752SSascha WildnerWhen called, they follow the same syntax as requests, except that
36560e1e752SSascha Wildnermacro arguments may optionally be quoted by enclosing them
36660e1e752SSascha Wildnerin double quote characters
36760e1e752SSascha Wildner.Pq Sq \(dq .
36836342e81SSascha WildnerQuoted text, even if it contains whitespace or would cause
36936342e81SSascha Wildnera macro invocation when unquoted, is always considered literal text.
37036342e81SSascha WildnerInside quoted text, pairs of double quote characters
37160e1e752SSascha Wildner.Pq Sq Qq
37260e1e752SSascha Wildnerresolve to single double quote characters.
37336342e81SSascha Wildner.Pp
37436342e81SSascha WildnerTo be recognised as the beginning of a quoted argument, the opening
37536342e81SSascha Wildnerquote character must be preceded by a space character.
37660e1e752SSascha WildnerA quoted argument extends to the next double quote character that is not
37760e1e752SSascha Wildnerpart of a pair, or to the end of the input line, whichever comes earlier.
37860e1e752SSascha WildnerLeaving out the terminating double quote character at the end of the line
37960e1e752SSascha Wildneris discouraged.
38060e1e752SSascha WildnerFor clarity, if more arguments follow on the same input line,
38160e1e752SSascha Wildnerit is recommended to follow the terminating double quote character
38260e1e752SSascha Wildnerby a space character; in case the next character after the terminating
38360e1e752SSascha Wildnerdouble quote character is anything else, it is regarded as the beginning
38460e1e752SSascha Wildnerof the next, unquoted argument.
38560e1e752SSascha Wildner.Pp
38660e1e752SSascha WildnerBoth in quoted and unquoted arguments, pairs of backslashes
38760e1e752SSascha Wildner.Pq Sq \e\e
38860e1e752SSascha Wildnerresolve to single backslashes.
38960e1e752SSascha WildnerIn unquoted arguments, space characters can alternatively be included
39060e1e752SSascha Wildnerby preceding them with a backslash
39160e1e752SSascha Wildner.Pq Sq \e\~ ,
39260e1e752SSascha Wildnerbut quoting is usually better for clarity.
39336342e81SSascha Wildner.Pp
39436342e81SSascha WildnerExamples:
39536342e81SSascha Wildner.Bl -tag -width Ds -offset indent -compact
39636342e81SSascha Wildner.It Li .Fn strlen \(dqconst char *s\(dq
39736342e81SSascha WildnerGroup arguments
39836342e81SSascha Wildner.Qq const char *s
39936342e81SSascha Wildnerinto one function argument.
40036342e81SSascha WildnerIf unspecified,
40136342e81SSascha Wildner.Qq const ,
40236342e81SSascha Wildner.Qq char ,
40336342e81SSascha Wildnerand
40436342e81SSascha Wildner.Qq *s
40536342e81SSascha Wildnerwould be considered separate arguments.
40636342e81SSascha Wildner.It Li .Op \(dqFl a\(dq
40736342e81SSascha WildnerConsider
40836342e81SSascha Wildner.Qq \&Fl a
40936342e81SSascha Wildneras literal text instead of a flag macro.
41036342e81SSascha Wildner.El
41180387638SSascha Wildner.Sh REQUEST REFERENCE
41280387638SSascha WildnerThe
41380387638SSascha Wildner.Xr mandoc 1
41480387638SSascha Wildner.Nm
41536342e81SSascha Wildnerparser recognises the following requests.
41654ba9607SSascha WildnerFor requests marked as "ignored" or "unsupported", any arguments are
41754ba9607SSascha Wildnerignored, and the number of arguments is not checked.
41854ba9607SSascha Wildner.Bl -tag -width Ds
41954ba9607SSascha Wildner.It Ic \&ab Op Ar message
42054ba9607SSascha WildnerAbort processing.
42154ba9607SSascha WildnerCurrently unsupported.
42254ba9607SSascha Wildner.It Ic \&ad Op Cm b | c | l | n | r
42354ba9607SSascha WildnerSet line adjustment mode for subsequent text.
42454ba9607SSascha WildnerCurrently ignored.
42554ba9607SSascha Wildner.It Ic \&af Ar registername format
42654ba9607SSascha WildnerAssign an output format to a number register.
42754ba9607SSascha WildnerCurrently ignored.
42854ba9607SSascha Wildner.It Ic \&aln Ar newname oldname
42954ba9607SSascha WildnerCreate an alias for a number register.
43054ba9607SSascha WildnerCurrently unsupported.
43154ba9607SSascha Wildner.It Ic \&als Ar newname oldname
43254ba9607SSascha WildnerCreate an alias for a request, string, macro, or diversion.
43354ba9607SSascha Wildner.It Ic \&am Ar macroname Op Ar endmacro
43480387638SSascha WildnerAppend to a macro definition.
43580387638SSascha WildnerThe syntax of this request is the same as that of
43654ba9607SSascha Wildner.Ic \&de .
43754ba9607SSascha Wildner.It Ic \&am1 Ar macroname Op Ar endmacro
43880387638SSascha WildnerAppend to a macro definition, switching roff compatibility mode off
43954ba9607SSascha Wildnerduring macro execution (groff extension).
44080387638SSascha WildnerThe syntax of this request is the same as that of
44154ba9607SSascha Wildner.Ic \&de1 .
442070c62a6SFranco FichtnerSince
443070c62a6SFranco Fichtner.Xr mandoc 1
444070c62a6SFranco Fichtnerdoes not implement
445070c62a6SFranco Fichtner.Nm
446070c62a6SFranco Fichtnercompatibility mode at all, it handles this request as an alias for
44754ba9607SSascha Wildner.Ic \&am .
44854ba9607SSascha Wildner.It Ic \&ami Ar macrostring Op Ar endstring
44954ba9607SSascha WildnerAppend to a macro definition, specifying the macro name indirectly
45054ba9607SSascha Wildner(groff extension).
45154ba9607SSascha WildnerThe syntax of this request is the same as that of
45254ba9607SSascha Wildner.Ic \&dei .
45354ba9607SSascha Wildner.It Ic \&ami1 Ar macrostring Op Ar endstring
45454ba9607SSascha WildnerAppend to a macro definition, specifying the macro name indirectly
45554ba9607SSascha Wildnerand switching roff compatibility mode off during macro execution
45654ba9607SSascha Wildner(groff extension).
45754ba9607SSascha WildnerThe syntax of this request is the same as that of
45854ba9607SSascha Wildner.Ic \&dei1 .
45954ba9607SSascha WildnerSince
46054ba9607SSascha Wildner.Xr mandoc 1
46154ba9607SSascha Wildnerdoes not implement
46254ba9607SSascha Wildner.Nm
46354ba9607SSascha Wildnercompatibility mode at all, it handles this request as an alias for
46454ba9607SSascha Wildner.Ic \&ami .
46554ba9607SSascha Wildner.It Ic \&as Ar stringname Op Ar string
466070c62a6SFranco FichtnerAppend to a user-defined string.
467070c62a6SFranco FichtnerThe syntax of this request is the same as that of
46854ba9607SSascha Wildner.Ic \&ds .
469070c62a6SFranco FichtnerIf a user-defined string with the specified name does not yet exist,
470070c62a6SFranco Fichtnerit is set to the empty string before appending.
47154ba9607SSascha Wildner.It Ic \&as1 Ar stringname Op Ar string
47254ba9607SSascha WildnerAppend to a user-defined string, switching roff compatibility mode off
47354ba9607SSascha Wildnerduring macro execution (groff extension).
47454ba9607SSascha WildnerThe syntax of this request is the same as that of
47554ba9607SSascha Wildner.Ic \&ds1 .
47654ba9607SSascha WildnerSince
47754ba9607SSascha Wildner.Xr mandoc 1
47854ba9607SSascha Wildnerdoes not implement
47954ba9607SSascha Wildner.Nm
48054ba9607SSascha Wildnercompatibility mode at all, it handles this request as an alias for
48154ba9607SSascha Wildner.Ic \&as .
48254ba9607SSascha Wildner.It Ic \&asciify Ar divname
48354ba9607SSascha WildnerFully unformat a diversion.
48454ba9607SSascha WildnerCurrently unsupported.
48554ba9607SSascha Wildner.It Ic \&backtrace
48654ba9607SSascha WildnerPrint a backtrace of the input stack.
48754ba9607SSascha WildnerThis is a groff extension and currently ignored.
48854ba9607SSascha Wildner.It Ic \&bd Ar font Oo Ar curfont Oc Op Ar offset
48954ba9607SSascha WildnerArtificially embolden by repeated printing with small shifts.
49054ba9607SSascha WildnerCurrently ignored.
49154ba9607SSascha Wildner.It Ic \&bleedat Ar left top width height
49254ba9607SSascha WildnerSet the BleedBox page parameter for PDF generation.
49354ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
49454ba9607SSascha Wildner.It Ic \&blm Ar macroname
49554ba9607SSascha WildnerSet a blank line trap.
49654ba9607SSascha WildnerCurrently unsupported.
49754ba9607SSascha Wildner.It Ic \&box Ar divname
49854ba9607SSascha WildnerBegin a diversion without including a partially filled line.
49954ba9607SSascha WildnerCurrently unsupported.
50054ba9607SSascha Wildner.It Ic \&boxa Ar divname
50154ba9607SSascha WildnerAdd to a diversion without including a partially filled line.
50254ba9607SSascha WildnerCurrently unsupported.
50354ba9607SSascha Wildner.It Ic \&bp Oo Cm + Ns | Ns Cm - Oc Ns Ar pagenumber
50454ba9607SSascha WildnerBegin a new page.
50554ba9607SSascha WildnerCurrently ignored.
50654ba9607SSascha Wildner.It Ic \&BP Ar source height width position offset flags label
50754ba9607SSascha WildnerDefine a frame and place a picture in it.
50854ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
50954ba9607SSascha Wildner.It Ic \&br
51054ba9607SSascha WildnerBreak the output line.
51154ba9607SSascha Wildner.It Ic \&break
512*99db7d0eSSascha WildnerBreak out of the innermost
51354ba9607SSascha Wildner.Ic \&while
51454ba9607SSascha Wildnerloop.
51554ba9607SSascha Wildner.It Ic \&breakchar Ar char ...
51654ba9607SSascha WildnerOptional line break characters.
51754ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
51854ba9607SSascha Wildner.It Ic \&brnl Ar N
51954ba9607SSascha WildnerBreak output line after the next
52054ba9607SSascha Wildner.Ar N
52154ba9607SSascha Wildnerinput lines.
52254ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
52354ba9607SSascha Wildner.It Ic \&brp
52454ba9607SSascha WildnerBreak and spread output line.
52554ba9607SSascha WildnerCurrently, this is implemented as an alias for
52654ba9607SSascha Wildner.Ic \&br .
52754ba9607SSascha Wildner.It Ic \&brpnl Ar N
52854ba9607SSascha WildnerBreak and spread output line after the next
52954ba9607SSascha Wildner.Ar N
53054ba9607SSascha Wildnerinput lines.
53154ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
53254ba9607SSascha Wildner.It Ic \&c2 Op Ar char
53354ba9607SSascha WildnerChange the no-break control character.
53454ba9607SSascha WildnerCurrently unsupported.
53554ba9607SSascha Wildner.It Ic \&cc Op Ar char
53654ba9607SSascha WildnerChange the control character.
537f88b6c16SFranco FichtnerIf
53854ba9607SSascha Wildner.Ar char
539f88b6c16SFranco Fichtneris not specified, the control character is reset to
540f88b6c16SFranco Fichtner.Sq \&. .
541f88b6c16SFranco FichtnerTrailing characters are ignored.
54254ba9607SSascha Wildner.It Ic \&ce Op Ar N
54354ba9607SSascha WildnerCenter the next
54454ba9607SSascha Wildner.Ar N
54554ba9607SSascha Wildnerinput lines without filling.
54654ba9607SSascha Wildner.Ar N
54754ba9607SSascha Wildnerdefaults to 1.
54854ba9607SSascha WildnerAn argument of 0 or less ends centering.
54954ba9607SSascha WildnerCurrently, high level macros abort centering.
55054ba9607SSascha Wildner.It Ic \&cf Ar filename
55154ba9607SSascha WildnerOutput the contents of a file.
55254ba9607SSascha WildnerIgnored because insecure.
55354ba9607SSascha Wildner.It Ic \&cflags Ar flags char ...
55454ba9607SSascha WildnerSet character flags.
55554ba9607SSascha WildnerThis is a groff extension and currently ignored.
55654ba9607SSascha Wildner.It Ic \&ch Ar macroname Op Ar dist
55754ba9607SSascha WildnerChange a trap location.
55854ba9607SSascha WildnerCurrently ignored.
55954ba9607SSascha Wildner.It Ic \&char Ar glyph Op Ar string
56054ba9607SSascha WildnerDefine or redefine the ASCII character or character escape sequence
56154ba9607SSascha Wildner.Ar glyph
56254ba9607SSascha Wildnerto be rendered as
56354ba9607SSascha Wildner.Ar string ,
56454ba9607SSascha Wildnerwhich can be empty.
56554ba9607SSascha WildnerOnly partially supported in
56654ba9607SSascha Wildner.Xr mandoc 1 ;
56754ba9607SSascha Wildnermay interact incorrectly with
56854ba9607SSascha Wildner.Ic \&tr .
56954ba9607SSascha Wildner.It Ic \&chop Ar stringname
57054ba9607SSascha WildnerRemove the last character from a macro, string, or diversion.
57154ba9607SSascha WildnerCurrently unsupported.
57254ba9607SSascha Wildner.It Ic \&class Ar classname char ...
57354ba9607SSascha WildnerDefine a character class.
57454ba9607SSascha WildnerThis is a groff extension and currently ignored.
57554ba9607SSascha Wildner.It Ic \&close Ar streamname
57654ba9607SSascha WildnerClose an open file.
57754ba9607SSascha WildnerIgnored because insecure.
57854ba9607SSascha Wildner.It Ic \&CL Ar color text
57954ba9607SSascha WildnerPrint text in color.
58054ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
58154ba9607SSascha Wildner.It Ic \&color Op Cm 1 | 0
58254ba9607SSascha WildnerActivate or deactivate colors.
58354ba9607SSascha WildnerThis is a groff extension and currently ignored.
58454ba9607SSascha Wildner.It Ic \&composite Ar from to
58554ba9607SSascha WildnerDefine a name component for composite glyph names.
58654ba9607SSascha WildnerThis is a groff extension and currently unsupported.
58754ba9607SSascha Wildner.It Ic \&continue
58854ba9607SSascha WildnerImmediately start the next iteration of a
58954ba9607SSascha Wildner.Ic \&while
59054ba9607SSascha Wildnerloop.
59154ba9607SSascha WildnerCurrently unsupported.
59254ba9607SSascha Wildner.It Ic \&cp Op Cm 1 | 0
59354ba9607SSascha WildnerSwitch
59454ba9607SSascha Wildner.Nm
59554ba9607SSascha Wildnercompatibility mode on or off.
59654ba9607SSascha WildnerCurrently ignored.
59754ba9607SSascha Wildner.It Ic \&cropat Ar left top width height
59854ba9607SSascha WildnerSet the CropBox page parameter for PDF generation.
59954ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
60054ba9607SSascha Wildner.It Ic \&cs Ar font Op Ar width Op Ar emsize
60154ba9607SSascha WildnerConstant character spacing mode.
60254ba9607SSascha WildnerCurrently ignored.
60354ba9607SSascha Wildner.It Ic \&cu Op Ar N
60454ba9607SSascha WildnerUnderline next
60554ba9607SSascha Wildner.Ar N
60654ba9607SSascha Wildnerinput lines including whitespace.
60754ba9607SSascha WildnerCurrently ignored.
60854ba9607SSascha Wildner.It Ic \&da Ar divname
60954ba9607SSascha WildnerAppend to a diversion.
61054ba9607SSascha WildnerCurrently unsupported.
61154ba9607SSascha Wildner.It Ic \&dch Ar macroname Op Ar dist
61254ba9607SSascha WildnerChange a trap location in the current diversion.
61354ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
61454ba9607SSascha Wildner.It Ic \&de Ar macroname Op Ar endmacro
61580387638SSascha WildnerDefine a
61680387638SSascha Wildner.Nm
61780387638SSascha Wildnermacro.
61880387638SSascha WildnerIts syntax can be either
61980387638SSascha Wildner.Bd -literal -offset indent
62054ba9607SSascha Wildner.Pf . Ic \&de Ar macroname
62154ba9607SSascha Wildner.Ar definition
62280387638SSascha Wildner\&..
62380387638SSascha Wildner.Ed
62480387638SSascha Wildner.Pp
62580387638SSascha Wildneror
62680387638SSascha Wildner.Bd -literal -offset indent
627*99db7d0eSSascha Wildner.Pf . Ic \&de Ar macroname endmacro
62854ba9607SSascha Wildner.Ar definition
62954ba9607SSascha Wildner.Pf . Ar endmacro
63080387638SSascha Wildner.Ed
63180387638SSascha Wildner.Pp
63280387638SSascha WildnerBoth forms define or redefine the macro
63354ba9607SSascha Wildner.Ar macroname
63480387638SSascha Wildnerto represent the
63554ba9607SSascha Wildner.Ar definition ,
63680387638SSascha Wildnerwhich may consist of one or more input lines, including the newline
63780387638SSascha Wildnercharacters terminating each line, optionally containing calls to
63880387638SSascha Wildner.Nm
63980387638SSascha Wildnerrequests,
64080387638SSascha Wildner.Nm
64180387638SSascha Wildnermacros or high-level macros like
64280387638SSascha Wildner.Xr man 7
64380387638SSascha Wildneror
64480387638SSascha Wildner.Xr mdoc 7
64580387638SSascha Wildnermacros, whichever applies to the document in question.
64680387638SSascha Wildner.Pp
64780387638SSascha WildnerSpecifying a custom
64854ba9607SSascha Wildner.Ar endmacro
64954ba9607SSascha Wildnerworks in the same way as for
65054ba9607SSascha Wildner.Ic \&ig ;
65180387638SSascha Wildnernamely, the call to
65254ba9607SSascha Wildner.Sq Pf . Ar endmacro
65380387638SSascha Wildnerfirst ends the
65454ba9607SSascha Wildner.Ar definition ,
65580387638SSascha Wildnerand after that, it is also evaluated as a
65680387638SSascha Wildner.Nm
65780387638SSascha Wildnerrequest or
65880387638SSascha Wildner.Nm
65980387638SSascha Wildnermacro, but not as a high-level macro.
66080387638SSascha Wildner.Pp
66180387638SSascha WildnerThe macro can be invoked later using the syntax
66280387638SSascha Wildner.Pp
66354ba9607SSascha Wildner.D1 Pf . Ar macroname Op Ar argument Op Ar argument ...
66480387638SSascha Wildner.Pp
66560e1e752SSascha WildnerRegarding argument parsing, see
66660e1e752SSascha Wildner.Sx MACRO SYNTAX
66760e1e752SSascha Wildnerabove.
66880387638SSascha Wildner.Pp
66980387638SSascha WildnerThe line invoking the macro will be replaced
67080387638SSascha Wildnerin the input stream by the
67154ba9607SSascha Wildner.Ar definition ,
67280387638SSascha Wildnerreplacing all occurrences of
67380387638SSascha Wildner.No \e\e$ Ns Ar N ,
67480387638SSascha Wildnerwhere
67580387638SSascha Wildner.Ar N
67680387638SSascha Wildneris a digit, by the
67780387638SSascha Wildner.Ar N Ns th Ar argument .
67880387638SSascha WildnerFor example,
67980387638SSascha Wildner.Bd -literal -offset indent
68080387638SSascha Wildner\&.de ZN
68180387638SSascha Wildner\efI\e^\e\e$1\e^\efP\e\e$2
68280387638SSascha Wildner\&..
68380387638SSascha Wildner\&.ZN XtFree .
68480387638SSascha Wildner.Ed
68580387638SSascha Wildner.Pp
68680387638SSascha Wildnerproduces
68780387638SSascha Wildner.Pp
68880387638SSascha Wildner.D1 \efI\e^XtFree\e^\efP.
68980387638SSascha Wildner.Pp
69080387638SSascha Wildnerin the input stream, and thus in the output: \fI\^XtFree\^\fP.
69154ba9607SSascha WildnerEach occurrence of \e\e$* is replaced with all the arguments,
69254ba9607SSascha Wildnerjoined together with single space characters.
69354ba9607SSascha WildnerThe variant \e\e$@ is similar, except that each argument is
69454ba9607SSascha Wildnerindividually quoted.
69580387638SSascha Wildner.Pp
69680387638SSascha WildnerSince macros and user-defined strings share a common string table,
69780387638SSascha Wildnerdefining a macro
69854ba9607SSascha Wildner.Ar macroname
69980387638SSascha Wildnerclobbers the user-defined string
70054ba9607SSascha Wildner.Ar macroname ,
70180387638SSascha Wildnerand the
70254ba9607SSascha Wildner.Ar definition
70380387638SSascha Wildnercan also be printed using the
70480387638SSascha Wildner.Sq \e*
70580387638SSascha Wildnerstring interpolation syntax described below
70654ba9607SSascha Wildner.Ic ds ,
70780387638SSascha Wildnerbut this is rarely useful because every macro definition contains at least
70880387638SSascha Wildnerone explicit newline character.
70980387638SSascha Wildner.Pp
71080387638SSascha WildnerIn order to prevent endless recursion, both groff and
71180387638SSascha Wildner.Xr mandoc 1
71280387638SSascha Wildnerlimit the stack depth for expanding macros and strings
71354ba9607SSascha Wildnerto a large, but finite number, and
71454ba9607SSascha Wildner.Xr mandoc 1
71554ba9607SSascha Wildneralso limits the length of the expanded input line.
71654ba9607SSascha WildnerDo not rely on the exact values of these limits.
71754ba9607SSascha Wildner.It Ic \&de1 Ar macroname Op Ar endmacro
71880387638SSascha WildnerDefine a
71980387638SSascha Wildner.Nm
72080387638SSascha Wildnermacro that will be executed with
72180387638SSascha Wildner.Nm
72280387638SSascha Wildnercompatibility mode switched off during macro execution.
72354ba9607SSascha WildnerThis is a groff extension.
72480387638SSascha WildnerSince
72580387638SSascha Wildner.Xr mandoc 1
72680387638SSascha Wildnerdoes not implement
72780387638SSascha Wildner.Nm
72880387638SSascha Wildnercompatibility mode at all, it handles this request as an alias for
72954ba9607SSascha Wildner.Ic \&de .
73054ba9607SSascha Wildner.It Ic \&defcolor Ar newname scheme component ...
73154ba9607SSascha WildnerDefine a color name.
73254ba9607SSascha WildnerThis is a groff extension and currently ignored.
73354ba9607SSascha Wildner.It Ic \&dei Ar macrostring Op Ar endstring
73454ba9607SSascha WildnerDefine a
73554ba9607SSascha Wildner.Nm
73654ba9607SSascha Wildnermacro, specifying the macro name indirectly (groff extension).
73754ba9607SSascha WildnerThe syntax of this request is the same as that of
73854ba9607SSascha Wildner.Ic \&de .
73954ba9607SSascha WildnerThe effect is the same as:
74054ba9607SSascha Wildner.Pp
74154ba9607SSascha Wildner.D1 Pf . Cm \&de No \e* Ns Bo Ar macrostring Bc Op \e* Ns Bq Ar endstring
74254ba9607SSascha Wildner.It Ic \&dei1 Ar macrostring Op Ar endstring
74354ba9607SSascha WildnerDefine a
74454ba9607SSascha Wildner.Nm
74554ba9607SSascha Wildnermacro that will be executed with
74654ba9607SSascha Wildner.Nm
74754ba9607SSascha Wildnercompatibility mode switched off during macro execution,
74854ba9607SSascha Wildnerspecifying the macro name indirectly (groff extension).
74954ba9607SSascha WildnerSince
75054ba9607SSascha Wildner.Xr mandoc 1
75154ba9607SSascha Wildnerdoes not implement
75254ba9607SSascha Wildner.Nm
75354ba9607SSascha Wildnercompatibility mode at all, it handles this request as an alias for
75454ba9607SSascha Wildner.Ic \&dei .
75554ba9607SSascha Wildner.It Ic \&device Ar string ...
75654ba9607SSascha Wildner.It Ic \&devicem Ar stringname
75754ba9607SSascha WildnerThese two requests only make sense with the groff-specific intermediate
75854ba9607SSascha Wildneroutput format and are unsupported.
75954ba9607SSascha Wildner.It Ic \&di Ar divname
76054ba9607SSascha WildnerBegin a diversion.
76154ba9607SSascha WildnerCurrently unsupported.
76254ba9607SSascha Wildner.It Ic \&do Ar command Op Ar argument ...
76354ba9607SSascha WildnerExecute
76454ba9607SSascha Wildner.Nm
76554ba9607SSascha Wildnerrequest or macro line with compatibility mode disabled.
76654ba9607SSascha WildnerCurrently unsupported.
76754ba9607SSascha Wildner.It Ic \&ds Ar stringname Op Oo \(dq Oc Ns Ar string
76880387638SSascha WildnerDefine a user-defined string.
76980387638SSascha WildnerThe
77054ba9607SSascha Wildner.Ar stringname
77180387638SSascha Wildnerand
77280387638SSascha Wildner.Ar string
77380387638SSascha Wildnerarguments are space-separated.
77480387638SSascha WildnerIf the
77580387638SSascha Wildner.Ar string
77680387638SSascha Wildnerbegins with a double-quote character, that character will not be part
77780387638SSascha Wildnerof the string.
77880387638SSascha WildnerAll remaining characters on the input line form the
77980387638SSascha Wildner.Ar string ,
78080387638SSascha Wildnerincluding whitespace and double-quote characters, even trailing ones.
78180387638SSascha Wildner.Pp
78280387638SSascha WildnerThe
78380387638SSascha Wildner.Ar string
78480387638SSascha Wildnercan be interpolated into subsequent text by using
78554ba9607SSascha Wildner.No \e* Ns Bq Ar stringname
78680387638SSascha Wildnerfor a
78754ba9607SSascha Wildner.Ar stringname
78880387638SSascha Wildnerof arbitrary length, or \e*(NN or \e*N if the length of
78954ba9607SSascha Wildner.Ar stringname
79080387638SSascha Wildneris two or one characters, respectively.
79180387638SSascha WildnerInterpolation can be prevented by escaping the leading backslash;
79280387638SSascha Wildnerthat is, an asterisk preceded by an even number of backslashes
79380387638SSascha Wildnerdoes not trigger string interpolation.
79480387638SSascha Wildner.Pp
79580387638SSascha WildnerSince user-defined strings and macros share a common string table,
79680387638SSascha Wildnerdefining a string
79754ba9607SSascha Wildner.Ar stringname
79880387638SSascha Wildnerclobbers the macro
79954ba9607SSascha Wildner.Ar stringname ,
80080387638SSascha Wildnerand the
80154ba9607SSascha Wildner.Ar stringname
80280387638SSascha Wildnerused for defining a string can also be invoked as a macro,
80380387638SSascha Wildnerin which case the following input line will be appended to the
80480387638SSascha Wildner.Ar string ,
80580387638SSascha Wildnerforming a new input line passed to the
80680387638SSascha Wildner.Nm
80780387638SSascha Wildnerparser.
80880387638SSascha WildnerFor example,
80980387638SSascha Wildner.Bd -literal -offset indent
81080387638SSascha Wildner\&.ds badidea .S
81180387638SSascha Wildner\&.badidea
81280387638SSascha WildnerH SYNOPSIS
81380387638SSascha Wildner.Ed
81480387638SSascha Wildner.Pp
81580387638SSascha Wildnerinvokes the
81654ba9607SSascha Wildner.Ic SH
81780387638SSascha Wildnermacro when used in a
81880387638SSascha Wildner.Xr man 7
81980387638SSascha Wildnerdocument.
82080387638SSascha WildnerSuch abuse is of course strongly discouraged.
82154ba9607SSascha Wildner.It Ic \&ds1 Ar stringname Op Oo \(dq Oc Ns Ar string
82254ba9607SSascha WildnerDefine a user-defined string that will be expanded with
82354ba9607SSascha Wildner.Nm
82454ba9607SSascha Wildnercompatibility mode switched off during string expansion.
82554ba9607SSascha WildnerThis is a groff extension.
82654ba9607SSascha WildnerSince
82754ba9607SSascha Wildner.Xr mandoc 1
82854ba9607SSascha Wildnerdoes not implement
82954ba9607SSascha Wildner.Nm
83054ba9607SSascha Wildnercompatibility mode at all, it handles this request as an alias for
83154ba9607SSascha Wildner.Ic \&ds .
83254ba9607SSascha Wildner.It Ic \&dwh Ar dist macroname
83354ba9607SSascha WildnerSet a location trap in the current diversion.
83454ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
83554ba9607SSascha Wildner.It Ic \&dt Op Ar dist macroname
83654ba9607SSascha WildnerSet a trap within a diversion.
83754ba9607SSascha WildnerCurrently unsupported.
83854ba9607SSascha Wildner.It Ic \&ec Op Ar char
83954ba9607SSascha WildnerEnable the escape mechanism and change the escape character.
84080387638SSascha WildnerThe
84154ba9607SSascha Wildner.Ar char
84254ba9607SSascha Wildnerargument defaults to the backslash
84354ba9607SSascha Wildner.Pq Sq \e .
84454ba9607SSascha Wildner.It Ic \&ecr
84554ba9607SSascha WildnerRestore the escape character.
84654ba9607SSascha WildnerCurrently unsupported.
84754ba9607SSascha Wildner.It Ic \&ecs
84854ba9607SSascha WildnerSave the escape character.
84954ba9607SSascha WildnerCurrently unsupported.
85054ba9607SSascha Wildner.It Ic \&el Ar body
85154ba9607SSascha WildnerThe
85254ba9607SSascha Wildner.Dq else
85380387638SSascha Wildnerhalf of an if/else conditional.
85480387638SSascha WildnerPops a result off the stack of conditional evaluations pushed by
85554ba9607SSascha Wildner.Ic \&ie
85680387638SSascha Wildnerand uses it as its conditional.
85780387638SSascha WildnerIf no stack entries are present (e.g., due to no prior
85854ba9607SSascha Wildner.Ic \&ie
85980387638SSascha Wildnercalls)
86080387638SSascha Wildnerthen false is assumed.
86180387638SSascha WildnerThe syntax of this request is similar to
86254ba9607SSascha Wildner.Ic \&if
86380387638SSascha Wildnerexcept that the conditional is missing.
86454ba9607SSascha Wildner.It Ic \&em Ar macroname
86554ba9607SSascha WildnerSet a trap at the end of input.
86654ba9607SSascha WildnerCurrently unsupported.
86754ba9607SSascha Wildner.It Ic \&EN
86860e1e752SSascha WildnerEnd an equation block.
86960e1e752SSascha WildnerSee
87054ba9607SSascha Wildner.Ic \&EQ .
87154ba9607SSascha Wildner.It Ic \&eo
87254ba9607SSascha WildnerDisable the escape mechanism completely.
87354ba9607SSascha Wildner.It Ic \&EP
87454ba9607SSascha WildnerEnd a picture started by
87554ba9607SSascha Wildner.Ic \&BP .
87654ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
87754ba9607SSascha Wildner.It Ic \&EQ
87860e1e752SSascha WildnerBegin an equation block.
87960e1e752SSascha WildnerSee
88060e1e752SSascha Wildner.Xr eqn 7
88160e1e752SSascha Wildnerfor a description of the equation language.
88254ba9607SSascha Wildner.It Ic \&errprint Ar message
88354ba9607SSascha WildnerPrint a string like an error message.
88454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
88554ba9607SSascha Wildner.It Ic \&ev Op Ar envname
88654ba9607SSascha WildnerSwitch to another environment.
88754ba9607SSascha WildnerCurrently unsupported.
88854ba9607SSascha Wildner.It Ic \&evc Op Ar envname
88954ba9607SSascha WildnerCopy an environment into the current environment.
89054ba9607SSascha WildnerCurrently unsupported.
89154ba9607SSascha Wildner.It Ic \&ex
89254ba9607SSascha WildnerAbort processing and exit.
89354ba9607SSascha WildnerCurrently unsupported.
89454ba9607SSascha Wildner.It Ic \&fallback Ar curfont font ...
89554ba9607SSascha WildnerSelect the fallback sequence for a font.
89654ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
89754ba9607SSascha Wildner.It Ic \&fam Op Ar familyname
8987888c61dSFranco FichtnerChange the font family.
89954ba9607SSascha WildnerThis is a groff extension and currently ignored.
90054ba9607SSascha Wildner.It Ic \&fc Op Ar delimchar Op Ar padchar
90154ba9607SSascha WildnerDefine a delimiting and a padding character for fields.
90254ba9607SSascha WildnerCurrently unsupported.
90354ba9607SSascha Wildner.It Ic \&fchar Ar glyphname Op Ar string
90454ba9607SSascha WildnerDefine a fallback glyph.
90554ba9607SSascha WildnerCurrently unsupported.
90654ba9607SSascha Wildner.It Ic \&fcolor Ar colorname
90754ba9607SSascha WildnerSet the fill color for \eD objects.
90854ba9607SSascha WildnerThis is a groff extension and currently ignored.
90954ba9607SSascha Wildner.It Ic \&fdeferlig Ar font string ...
91054ba9607SSascha WildnerDefer ligature building.
91154ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
91254ba9607SSascha Wildner.It Ic \&feature Cm + Ns | Ns Cm - Ns Ar name
91354ba9607SSascha WildnerEnable or disable an OpenType feature.
91454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
91554ba9607SSascha Wildner.It Ic \&fi
91654ba9607SSascha WildnerBreak the output line and switch to fill mode,
91754ba9607SSascha Wildnerwhich is active by default but can be ended with the
91854ba9607SSascha Wildner.Ic \&nf
91954ba9607SSascha Wildnerrequest.
92054ba9607SSascha WildnerIn fill mode, input from subsequent input lines is added to
92154ba9607SSascha Wildnerthe same output line until the next word no longer fits,
92254ba9607SSascha Wildnerat which point the output line is broken.
92354ba9607SSascha WildnerThis request is implied by the
92454ba9607SSascha Wildner.Xr mdoc 7
92554ba9607SSascha Wildner.Ic \&Sh
92654ba9607SSascha Wildnermacro and by the
927070c62a6SFranco Fichtner.Xr man 7
92854ba9607SSascha Wildner.Ic \&SH ,
92954ba9607SSascha Wildner.Ic \&SS ,
93054ba9607SSascha Wildnerand
93154ba9607SSascha Wildner.Ic \&EE
93254ba9607SSascha Wildnermacros.
93354ba9607SSascha Wildner.It Ic \&fkern Ar font minkern
93454ba9607SSascha WildnerControl the use of kerning tables for a font.
93554ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
93654ba9607SSascha Wildner.It Ic \&fl
93754ba9607SSascha WildnerFlush output.
93854ba9607SSascha WildnerCurrently ignored.
93954ba9607SSascha Wildner.It Ic \&flig Ar font string char ...
94054ba9607SSascha WildnerDefine ligatures.
94154ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
94254ba9607SSascha Wildner.It Ic \&fp Ar position font Op Ar filename
94354ba9607SSascha WildnerAssign font position.
94454ba9607SSascha WildnerCurrently ignored.
94554ba9607SSascha Wildner.It Ic \&fps Ar mapname ...
94654ba9607SSascha WildnerMount a font with a special character map.
94754ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
94854ba9607SSascha Wildner.It Ic \&fschar Ar font glyphname Op Ar string
94954ba9607SSascha WildnerDefine a font-specific fallback glyph.
95054ba9607SSascha WildnerThis is a groff extension and currently unsupported.
95154ba9607SSascha Wildner.It Ic \&fspacewidth Ar font Op Ar afmunits
95254ba9607SSascha WildnerSet a font-specific width for the space character.
95354ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
95454ba9607SSascha Wildner.It Ic \&fspecial Ar curfont Op Ar font ...
95554ba9607SSascha WildnerConditionally define a special font.
95654ba9607SSascha WildnerThis is a groff extension and currently ignored.
95754ba9607SSascha Wildner.It Ic \&ft Op Ar font
95854ba9607SSascha WildnerChange the font; see
95954ba9607SSascha Wildner.Sx Font Selection .
96080387638SSascha WildnerThe
96154ba9607SSascha Wildner.Ar font
96254ba9607SSascha Wildnerargument defaults to
96354ba9607SSascha Wildner.Cm P .
96454ba9607SSascha Wildner.It Ic \&ftr Ar newname Op Ar oldname
96554ba9607SSascha WildnerTranslate font name.
96654ba9607SSascha WildnerThis is a groff extension and currently ignored.
96754ba9607SSascha Wildner.It Ic \&fzoom Ar font Op Ar permille
96854ba9607SSascha WildnerZoom font size.
96954ba9607SSascha WildnerCurrently ignored.
97054ba9607SSascha Wildner.It Ic \&gcolor Op Ar colorname
97154ba9607SSascha WildnerSet glyph color.
97254ba9607SSascha WildnerThis is a groff extension and currently ignored.
97354ba9607SSascha Wildner.It Ic \&hc Op Ar char
97454ba9607SSascha WildnerSet the hyphenation character.
97554ba9607SSascha WildnerCurrently ignored.
97654ba9607SSascha Wildner.It Ic \&hcode Ar char code ...
97754ba9607SSascha WildnerSet hyphenation codes of characters.
97854ba9607SSascha WildnerCurrently ignored.
97954ba9607SSascha Wildner.It Ic \&hidechar Ar font char ...
98054ba9607SSascha WildnerHide characters in a font.
98154ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
98254ba9607SSascha Wildner.It Ic \&hla Ar language
98354ba9607SSascha WildnerSet hyphenation language.
98454ba9607SSascha WildnerThis is a groff extension and currently ignored.
98554ba9607SSascha Wildner.It Ic \&hlm Op Ar number
98654ba9607SSascha WildnerSet maximum number of consecutive hyphenated lines.
98754ba9607SSascha WildnerCurrently ignored.
98854ba9607SSascha Wildner.It Ic \&hpf Ar filename
98954ba9607SSascha WildnerLoad hyphenation pattern file.
99054ba9607SSascha WildnerThis is a groff extension and currently ignored.
99154ba9607SSascha Wildner.It Ic \&hpfa Ar filename
99254ba9607SSascha WildnerLoad hyphenation pattern file, appending to the current patterns.
99354ba9607SSascha WildnerThis is a groff extension and currently ignored.
99454ba9607SSascha Wildner.It Ic \&hpfcode Ar code code ...
99554ba9607SSascha WildnerDefine mapping values for character codes in hyphenation patterns.
99654ba9607SSascha WildnerThis is a groff extension and currently ignored.
99754ba9607SSascha Wildner.It Ic \&hw Ar word ...
99854ba9607SSascha WildnerSpecify hyphenation points in words.
99954ba9607SSascha WildnerCurrently ignored.
100054ba9607SSascha Wildner.It Ic \&hy Op Ar mode
100154ba9607SSascha WildnerSet automatic hyphenation mode.
100254ba9607SSascha WildnerCurrently ignored.
100354ba9607SSascha Wildner.It Ic \&hylang Ar language
100454ba9607SSascha WildnerSet hyphenation language.
100554ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
100654ba9607SSascha Wildner.It Ic \&hylen Ar nchar
100754ba9607SSascha WildnerMinimum word length for hyphenation.
100854ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
100954ba9607SSascha Wildner.It Ic \&hym Op Ar length
101054ba9607SSascha WildnerSet hyphenation margin.
101154ba9607SSascha WildnerThis is a groff extension and currently ignored.
101254ba9607SSascha Wildner.It Ic \&hypp Ar penalty ...
101354ba9607SSascha WildnerDefine hyphenation penalties.
101454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
101554ba9607SSascha Wildner.It Ic \&hys Op Ar length
101654ba9607SSascha WildnerSet hyphenation space.
101754ba9607SSascha WildnerThis is a groff extension and currently ignored.
101854ba9607SSascha Wildner.It Ic \&ie Ar condition body
101954ba9607SSascha WildnerThe
102054ba9607SSascha Wildner.Dq if
102180387638SSascha Wildnerhalf of an if/else conditional.
102280387638SSascha WildnerThe result of the conditional is pushed into a stack used by subsequent
102380387638SSascha Wildnerinvocations of
102454ba9607SSascha Wildner.Ic \&el ,
102580387638SSascha Wildnerwhich may be separated by any intervening input (or not exist at all).
102680387638SSascha WildnerIts syntax is equivalent to
102754ba9607SSascha Wildner.Ic \&if .
102854ba9607SSascha Wildner.It Ic \&if Ar condition body
102954ba9607SSascha WildnerBegin a conditional.
103054ba9607SSascha WildnerThis request can also be written as follows:
103154ba9607SSascha Wildner.Bd -unfilled -offset indent
103254ba9607SSascha Wildner.Pf . Ic \&if Ar condition No \e{ Ns Ar body
103354ba9607SSascha Wildner.Ar body ... Ns \e}
1034070c62a6SFranco Fichtner.Ed
103554ba9607SSascha Wildner.Bd -unfilled -offset indent
103654ba9607SSascha Wildner.Pf . Ic \&if Ar condition No \e{\e
103754ba9607SSascha Wildner.Ar body ...
103854ba9607SSascha Wildner.Pf . No \e}
1039070c62a6SFranco Fichtner.Ed
1040070c62a6SFranco Fichtner.Pp
104154ba9607SSascha WildnerThe
104254ba9607SSascha Wildner.Ar condition
104354ba9607SSascha Wildneris a boolean expression.
1044070c62a6SFranco FichtnerCurrently,
1045070c62a6SFranco Fichtner.Xr mandoc 1
1046070c62a6SFranco Fichtnersupports the following subset of roff conditionals:
1047070c62a6SFranco Fichtner.Bl -bullet
1048070c62a6SFranco Fichtner.It
1049070c62a6SFranco FichtnerIf
1050070c62a6SFranco Fichtner.Sq \&!
105154ba9607SSascha Wildneris prefixed to
105254ba9607SSascha Wildner.Ar condition ,
105354ba9607SSascha Wildnerit is logically inverted.
1054070c62a6SFranco Fichtner.It
105554ba9607SSascha WildnerIf the first character of
105654ba9607SSascha Wildner.Ar condition
105754ba9607SSascha Wildneris
1058070c62a6SFranco Fichtner.Sq n
1059070c62a6SFranco Fichtner.Pq nroff mode
1060070c62a6SFranco Fichtneror
1061070c62a6SFranco Fichtner.Sq o
1062070c62a6SFranco Fichtner.Pq odd page ,
106354ba9607SSascha Wildnerit evaluates to true, and the
106454ba9607SSascha Wildner.Ar body
106554ba9607SSascha Wildnerstarts with the next character.
1066070c62a6SFranco Fichtner.It
106754ba9607SSascha WildnerIf the first character of
106854ba9607SSascha Wildner.Ar condition
106954ba9607SSascha Wildneris
1070070c62a6SFranco Fichtner.Sq e
1071070c62a6SFranco Fichtner.Pq even page ,
1072070c62a6SFranco Fichtner.Sq t
1073070c62a6SFranco Fichtner.Pq troff mode ,
107454ba9607SSascha Wildneror
107554ba9607SSascha Wildner.Sq v
107654ba9607SSascha Wildner.Pq vroff mode ,
107754ba9607SSascha Wildnerit evaluates to false, and the
107854ba9607SSascha Wildner.Ar body
107954ba9607SSascha Wildnerstarts with the next character.
1080070c62a6SFranco Fichtner.It
108154ba9607SSascha WildnerIf the first character of
108254ba9607SSascha Wildner.Ar condition
108354ba9607SSascha Wildneris
108454ba9607SSascha Wildner.Sq c
108554ba9607SSascha Wildner.Pq character available ,
108654ba9607SSascha Wildnerit evaluates to true if the following character is an ASCII character
108754ba9607SSascha Wildneror a valid character escape sequence, or to false otherwise.
108854ba9607SSascha WildnerThe
108954ba9607SSascha Wildner.Ar body
109054ba9607SSascha Wildnerstarts with the character following that next character.
109154ba9607SSascha Wildner.It
109254ba9607SSascha WildnerIf the first character of
109354ba9607SSascha Wildner.Ar condition
109454ba9607SSascha Wildneris
109554ba9607SSascha Wildner.Sq d ,
109654ba9607SSascha Wildnerit evaluates to true if the rest of
109754ba9607SSascha Wildner.Ar condition
109854ba9607SSascha Wildneris the name of an existing user defined macro or string;
109954ba9607SSascha Wildnerotherwise, it evaluates to false.
110054ba9607SSascha Wildner.It
110154ba9607SSascha WildnerIf the first character of
110254ba9607SSascha Wildner.Ar condition
110354ba9607SSascha Wildneris
110454ba9607SSascha Wildner.Sq r ,
110554ba9607SSascha Wildnerit evaluates to true if the rest of
110654ba9607SSascha Wildner.Ar condition
110754ba9607SSascha Wildneris the name of an existing number register;
110854ba9607SSascha Wildnerotherwise, it evaluates to false.
110954ba9607SSascha Wildner.It
111054ba9607SSascha WildnerIf the
111154ba9607SSascha Wildner.Ar condition
111254ba9607SSascha Wildnerstarts with a parenthesis or with an optionally signed
1113070c62a6SFranco Fichtnerinteger number, it is evaluated according to the rules of
1114070c62a6SFranco Fichtner.Sx Numerical expressions
1115070c62a6SFranco Fichtnerexplained below.
111654ba9607SSascha WildnerIt evaluates to true if the result is positive,
1117070c62a6SFranco Fichtneror to false if the result is zero or negative.
1118070c62a6SFranco Fichtner.It
111954ba9607SSascha WildnerOtherwise, the first character of
112054ba9607SSascha Wildner.Ar condition
112154ba9607SSascha Wildneris regarded as a delimiter and it evaluates to true if the string
112254ba9607SSascha Wildnerextending from its first to its second occurrence is equal to the
112354ba9607SSascha Wildnerstring extending from its second to its third occurrence.
1124070c62a6SFranco Fichtner.It
112554ba9607SSascha WildnerIf
112654ba9607SSascha Wildner.Ar condition
112754ba9607SSascha Wildnercannot be parsed, it evaluates to false.
1128070c62a6SFranco Fichtner.El
1129070c62a6SFranco Fichtner.Pp
113080387638SSascha WildnerIf a conditional is false, its children are not processed, but are
113180387638SSascha Wildnersyntactically interpreted to preserve the integrity of the input
113280387638SSascha Wildnerdocument.
113380387638SSascha WildnerThus,
113480387638SSascha Wildner.Pp
113580387638SSascha Wildner.D1 \&.if t .ig
113680387638SSascha Wildner.Pp
113780387638SSascha Wildnerwill discard the
113880387638SSascha Wildner.Sq \&.ig ,
113980387638SSascha Wildnerwhich may lead to interesting results, but
114080387638SSascha Wildner.Pp
114180387638SSascha Wildner.D1 \&.if t .if t \e{\e
114280387638SSascha Wildner.Pp
114380387638SSascha Wildnerwill continue to syntactically interpret to the block close of the final
114480387638SSascha Wildnerconditional.
114580387638SSascha WildnerSub-conditionals, in this case, obviously inherit the truth value of
114680387638SSascha Wildnerthe parent.
114780387638SSascha Wildner.Pp
114854ba9607SSascha WildnerIf the
114954ba9607SSascha Wildner.Ar body
115054ba9607SSascha Wildnersection is begun by an escaped brace
115180387638SSascha Wildner.Sq \e{ ,
1152070c62a6SFranco Fichtnerscope continues until the end of the input line containing the
1153070c62a6SFranco Fichtnermatching closing-brace escape sequence
1154070c62a6SFranco Fichtner.Sq \e} .
115554ba9607SSascha WildnerIf the
115654ba9607SSascha Wildner.Ar body
115754ba9607SSascha Wildneris not enclosed in braces, scope continues until the end of the line.
115854ba9607SSascha WildnerIf the
115954ba9607SSascha Wildner.Ar condition
116054ba9607SSascha Wildneris followed by a
116154ba9607SSascha Wildner.Ar body
116254ba9607SSascha Wildneron the same line, whether after a brace or not, then requests and macros
116380387638SSascha Wildner.Em must
116480387638SSascha Wildnerbegin with a control character.
116580387638SSascha WildnerIt is generally more intuitive, in this case, to write
116654ba9607SSascha Wildner.Bd -unfilled -offset indent
116754ba9607SSascha Wildner.Pf . Ic \&if Ar condition No \e{\e
116854ba9607SSascha Wildner.Pf . Ar request
116954ba9607SSascha Wildner.Pf . No \e}
117080387638SSascha Wildner.Ed
117180387638SSascha Wildner.Pp
117280387638SSascha Wildnerthan having the request or macro follow as
117380387638SSascha Wildner.Pp
117454ba9607SSascha Wildner.D1 Pf . Ic \&if Ar condition Pf \e{. Ar request
117580387638SSascha Wildner.Pp
117680387638SSascha WildnerThe scope of a conditional is always parsed, but only executed if the
117780387638SSascha Wildnerconditional evaluates to true.
117880387638SSascha Wildner.Pp
1179a4c7eb57SSascha WildnerNote that the
118080387638SSascha Wildner.Sq \e}
1181a4c7eb57SSascha Wildneris converted into a zero-width escape sequence if not passed as a
1182a4c7eb57SSascha Wildnerstandalone macro
1183a4c7eb57SSascha Wildner.Sq \&.\e} .
1184a4c7eb57SSascha WildnerFor example,
1185a4c7eb57SSascha Wildner.Pp
1186a4c7eb57SSascha Wildner.D1 \&.Fl a \e} b
1187a4c7eb57SSascha Wildner.Pp
1188a4c7eb57SSascha Wildnerwill result in
118980387638SSascha Wildner.Sq \e}
1190a4c7eb57SSascha Wildnerbeing considered an argument of the
1191a4c7eb57SSascha Wildner.Sq \&Fl
1192a4c7eb57SSascha Wildnermacro.
119354ba9607SSascha Wildner.It Ic \&ig Op Ar endmacro
119480387638SSascha WildnerIgnore input.
119580387638SSascha WildnerIts syntax can be either
119680387638SSascha Wildner.Bd -literal -offset indent
119780387638SSascha Wildner.Pf . Cm \&ig
119880387638SSascha Wildner.Ar ignored text
119980387638SSascha Wildner\&..
120080387638SSascha Wildner.Ed
120180387638SSascha Wildner.Pp
120280387638SSascha Wildneror
120380387638SSascha Wildner.Bd -literal -offset indent
120454ba9607SSascha Wildner.Pf . Cm \&ig Ar endmacro
120580387638SSascha Wildner.Ar ignored text
120654ba9607SSascha Wildner.Pf . Ar endmacro
120780387638SSascha Wildner.Ed
120880387638SSascha Wildner.Pp
120980387638SSascha WildnerIn the first case, input is ignored until a
121080387638SSascha Wildner.Sq \&..
121180387638SSascha Wildnerrequest is encountered on its own line.
121280387638SSascha WildnerIn the second case, input is ignored until the specified
121354ba9607SSascha Wildner.Sq Pf . Ar endmacro
121454ba9607SSascha Wildneris encountered.
121580387638SSascha WildnerDo not use the escape character
121680387638SSascha Wildner.Sq \e
121780387638SSascha Wildneranywhere in the definition of
121854ba9607SSascha Wildner.Ar endmacro ;
121980387638SSascha Wildnerit would cause very strange behaviour.
122080387638SSascha Wildner.Pp
122180387638SSascha WildnerWhen the
122254ba9607SSascha Wildner.Ar endmacro
122354ba9607SSascha Wildneris a roff request or a roff macro, like in
122480387638SSascha Wildner.Pp
122580387638SSascha Wildner.D1 \&.ig if
122680387638SSascha Wildner.Pp
122780387638SSascha Wildnerthe subsequent invocation of
122854ba9607SSascha Wildner.Ic \&if
122980387638SSascha Wildnerwill first terminate the
123080387638SSascha Wildner.Ar ignored text ,
123180387638SSascha Wildnerthen be invoked as usual.
123280387638SSascha WildnerOtherwise, it only terminates the
123380387638SSascha Wildner.Ar ignored text ,
123480387638SSascha Wildnerand arguments following it or the
123580387638SSascha Wildner.Sq \&..
123680387638SSascha Wildnerrequest are discarded.
123754ba9607SSascha Wildner.It Ic \&in Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
123854ba9607SSascha WildnerChange indentation.
123954ba9607SSascha WildnerSee
124054ba9607SSascha Wildner.Xr man 7 .
124154ba9607SSascha WildnerIgnored in
124254ba9607SSascha Wildner.Xr mdoc 7 .
124354ba9607SSascha Wildner.It Ic \&index Ar register stringname substring
124454ba9607SSascha WildnerFind a substring in a string.
124554ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
124654ba9607SSascha Wildner.It Ic \&it Ar expression macro
124754ba9607SSascha WildnerSet an input line trap.
124854ba9607SSascha WildnerThe named
124954ba9607SSascha Wildner.Ar macro
125054ba9607SSascha Wildnerwill be invoked after processing the number of input text lines
125154ba9607SSascha Wildnerspecified by the numerical
125254ba9607SSascha Wildner.Ar expression .
125354ba9607SSascha WildnerWhile evaluating the
125454ba9607SSascha Wildner.Ar expression ,
125554ba9607SSascha Wildnerthe unit suffixes described below
125654ba9607SSascha Wildner.Sx Scaling Widths
125754ba9607SSascha Wildnerare ignored.
125854ba9607SSascha Wildner.It Ic \&itc Ar expression macro
125954ba9607SSascha WildnerSet an input line trap, not counting lines ending with \ec.
126054ba9607SSascha WildnerCurrently unsupported.
126154ba9607SSascha Wildner.It Ic \&IX Ar class keystring
126254ba9607SSascha WildnerTo support the generation of a table of contents,
126354ba9607SSascha Wildner.Xr pod2man 1
126454ba9607SSascha Wildneremits this user-defined macro, usually without defining it.
126554ba9607SSascha WildnerTo avoid reporting large numbers of spurious errors,
126654ba9607SSascha Wildner.Xr mandoc 1
126754ba9607SSascha Wildnerignores it.
126854ba9607SSascha Wildner.It Ic \&kern Op Cm 1 | 0
126954ba9607SSascha WildnerSwitch kerning on or off.
127054ba9607SSascha WildnerCurrently ignored.
127154ba9607SSascha Wildner.It Ic \&kernafter Ar font char ... afmunits ...
127254ba9607SSascha WildnerIncrease kerning after some characters.
127354ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
127454ba9607SSascha Wildner.It Ic \&kernbefore Ar font char ... afmunits ...
127554ba9607SSascha WildnerIncrease kerning before some characters.
127654ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
127754ba9607SSascha Wildner.It Ic \&kernpair Ar font char ... font char ... afmunits
127854ba9607SSascha WildnerAdd a kerning pair to the kerning table.
127954ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
128054ba9607SSascha Wildner.It Ic \&lc Op Ar glyph
128154ba9607SSascha WildnerDefine a leader repetition character.
128254ba9607SSascha WildnerCurrently unsupported.
128354ba9607SSascha Wildner.It Ic \&lc_ctype Ar localename
128454ba9607SSascha WildnerSet the
128554ba9607SSascha Wildner.Dv LC_CTYPE
128654ba9607SSascha Wildnerlocale.
128754ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
128854ba9607SSascha Wildner.It Ic \&lds Ar macroname string
128954ba9607SSascha WildnerDefine a local string.
129054ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
129154ba9607SSascha Wildner.It Ic \&length Ar register string
129254ba9607SSascha WildnerCount the number of input characters in a string.
129354ba9607SSascha WildnerCurrently unsupported.
129454ba9607SSascha Wildner.It Ic \&letadj Ar lspmin lshmin letss lspmax lshmax
129554ba9607SSascha WildnerDynamic letter spacing and reshaping.
129654ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
129754ba9607SSascha Wildner.It Ic \&lf Ar lineno Op Ar filename
129854ba9607SSascha WildnerChange the line number for error messages.
129954ba9607SSascha WildnerIgnored because insecure.
130054ba9607SSascha Wildner.It Ic \&lg Op Cm 1 | 0
130154ba9607SSascha WildnerSwitch the ligature mechanism on or off.
130254ba9607SSascha WildnerCurrently ignored.
130354ba9607SSascha Wildner.It Ic \&lhang Ar font char ... afmunits
130454ba9607SSascha WildnerHang characters at left margin.
130554ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
130654ba9607SSascha Wildner.It Ic \&linetabs Op Cm 1 | 0
130754ba9607SSascha WildnerEnable or disable line-tabs mode.
130854ba9607SSascha WildnerThis is a groff extension and currently unsupported.
130954ba9607SSascha Wildner.It Ic \&ll Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
1310070c62a6SFranco FichtnerChange the output line length.
1311070c62a6SFranco FichtnerIf the
1312070c62a6SFranco Fichtner.Ar width
1313070c62a6SFranco Fichtnerargument is omitted, the line length is reset to its previous value.
1314070c62a6SFranco FichtnerThe default setting for terminal output is 78n.
1315070c62a6SFranco FichtnerIf a sign is given, the line length is added to or subtracted from;
1316070c62a6SFranco Fichtnerotherwise, it is set to the provided value.
1317070c62a6SFranco FichtnerUsing this request in new manuals is discouraged for several reasons,
1318070c62a6SFranco Fichtneramong others because it overrides the
1319070c62a6SFranco Fichtner.Xr mandoc 1
1320070c62a6SFranco Fichtner.Fl O Cm width
1321070c62a6SFranco Fichtnercommand line option.
132254ba9607SSascha Wildner.It Ic \&lnr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
132354ba9607SSascha WildnerSet local number register.
132454ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
132554ba9607SSascha Wildner.It Ic \&lnrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment
132654ba9607SSascha WildnerSet local floating-point register.
132754ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
132854ba9607SSascha Wildner.It Ic \&lpfx Ar string
132954ba9607SSascha WildnerSet a line prefix.
133054ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
133154ba9607SSascha Wildner.It Ic \&ls Op Ar factor
133254ba9607SSascha WildnerSet line spacing.
133354ba9607SSascha WildnerIt takes one integer argument specifying the vertical distance of
133454ba9607SSascha Wildnersubsequent output text lines measured in v units.
133554ba9607SSascha WildnerCurrently ignored.
133654ba9607SSascha Wildner.It Ic \&lsm Ar macroname
133754ba9607SSascha WildnerSet a leading spaces trap.
133854ba9607SSascha WildnerThis is a groff extension and currently unsupported.
133954ba9607SSascha Wildner.It Ic \&lt Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width
134054ba9607SSascha WildnerSet title line length.
134154ba9607SSascha WildnerCurrently ignored.
134254ba9607SSascha Wildner.It Ic \&mc Ar glyph Op Ar dist
134354ba9607SSascha WildnerPrint margin character in the right margin.
134454ba9607SSascha WildnerThe
134554ba9607SSascha Wildner.Ar dist
134654ba9607SSascha Wildneris currently ignored; instead, 1n is used.
134754ba9607SSascha Wildner.It Ic \&mediasize Ar media
134854ba9607SSascha WildnerSet the device media size.
134954ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
135054ba9607SSascha Wildner.It Ic \&minss Ar width
135154ba9607SSascha WildnerSet minimum word space.
135254ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
135354ba9607SSascha Wildner.It Ic \&mk Op Ar register
135454ba9607SSascha WildnerMark vertical position.
135554ba9607SSascha WildnerCurrently ignored.
135654ba9607SSascha Wildner.It Ic \&mso Ar filename
135754ba9607SSascha WildnerLoad a macro file using the search path.
135854ba9607SSascha WildnerIgnored because insecure.
135954ba9607SSascha Wildner.It Ic \&na
136054ba9607SSascha WildnerDisable adjusting without changing the adjustment mode.
136154ba9607SSascha WildnerCurrently ignored.
136254ba9607SSascha Wildner.It Ic \&ne Op Ar height
136380387638SSascha WildnerDeclare the need for the specified minimum vertical space
136480387638SSascha Wildnerbefore the next trap or the bottom of the page.
136554ba9607SSascha WildnerCurrently ignored.
136654ba9607SSascha Wildner.It Ic \&nf
136754ba9607SSascha WildnerBreak the output line and switch to no-fill mode.
136854ba9607SSascha WildnerSubsequent input lines are kept together on the same output line
136954ba9607SSascha Wildnereven when exceeding the right margin,
137054ba9607SSascha Wildnerand line breaks in subsequent input cause output line breaks.
137154ba9607SSascha WildnerThis request is implied by the
137254ba9607SSascha Wildner.Xr mdoc 7
137354ba9607SSascha Wildner.Ic \&Bd Fl unfilled
137454ba9607SSascha Wildnerand
137554ba9607SSascha Wildner.Ic \&Bd Fl literal
137654ba9607SSascha Wildnermacros and by the
137754ba9607SSascha Wildner.Xr man 7
137854ba9607SSascha Wildner.Ic \&EX
137954ba9607SSascha Wildnermacro.
138054ba9607SSascha WildnerThe
138154ba9607SSascha Wildner.Ic \&fi
138254ba9607SSascha Wildnerrequest switches back to the default fill mode.
138354ba9607SSascha Wildner.It Ic \&nh
138480387638SSascha WildnerTurn off automatic hyphenation mode.
138554ba9607SSascha WildnerCurrently ignored.
138654ba9607SSascha Wildner.It Ic \&nhychar Ar char ...
138754ba9607SSascha WildnerDefine hyphenation-inhibiting characters.
138854ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
138954ba9607SSascha Wildner.It Ic \&nm Op Ar start Op Ar inc Op Ar space Op Ar indent
139054ba9607SSascha WildnerPrint line numbers.
139154ba9607SSascha WildnerCurrently unsupported.
139254ba9607SSascha Wildner.It Ic \&nn Op Ar number
139354ba9607SSascha WildnerTemporarily turn off line numbering.
139454ba9607SSascha WildnerCurrently unsupported.
139554ba9607SSascha Wildner.It Ic \&nop Ar body
139654ba9607SSascha WildnerExecute the rest of the input line as a request, macro, or text line,
139754ba9607SSascha Wildnerskipping the
139854ba9607SSascha Wildner.Ic \&nop
139954ba9607SSascha Wildnerrequest and any space characters immediately following it.
140054ba9607SSascha WildnerThis is mostly used to indent text lines inside macro definitions.
140154ba9607SSascha Wildner.It Ic \&nr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression Op Ar stepsize
14027888c61dSFranco FichtnerDefine or change a register.
140380387638SSascha WildnerA register is an arbitrary string value that defines some sort of state,
140480387638SSascha Wildnerwhich influences parsing and/or formatting.
1405070c62a6SFranco FichtnerFor the syntax of
1406070c62a6SFranco Fichtner.Ar expression ,
1407070c62a6SFranco Fichtnersee
1408070c62a6SFranco Fichtner.Sx Numerical expressions
1409070c62a6SFranco Fichtnerbelow.
14107888c61dSFranco FichtnerIf it is prefixed by a sign, the register will be
14117888c61dSFranco Fichtnerincremented or decremented instead of assigned to.
14127888c61dSFranco Fichtner.Pp
141354ba9607SSascha WildnerThe
141454ba9607SSascha Wildner.Ar stepsize
141554ba9607SSascha Wildneris used by the
141654ba9607SSascha Wildner.Ic \en+
141754ba9607SSascha Wildnerauto-increment feature.
141854ba9607SSascha WildnerIt remains unchanged when omitted while changing an existing register,
141954ba9607SSascha Wildnerand it defaults to 0 when defining a new register.
142054ba9607SSascha Wildner.Pp
142154ba9607SSascha WildnerThe following
142254ba9607SSascha Wildner.Ar register
14237888c61dSFranco Fichtneris handled specially:
142480387638SSascha Wildner.Bl -tag -width Ds
142580387638SSascha Wildner.It Cm nS
142680387638SSascha WildnerIf set to a positive integer value, certain
142780387638SSascha Wildner.Xr mdoc 7
142880387638SSascha Wildnermacros will behave in the same way as in the
142980387638SSascha Wildner.Em SYNOPSIS
143080387638SSascha Wildnersection.
143180387638SSascha WildnerIf set to 0, these macros will behave in the same way as outside the
143280387638SSascha Wildner.Em SYNOPSIS
143380387638SSascha Wildnersection, even when called within the
143480387638SSascha Wildner.Em SYNOPSIS
143580387638SSascha Wildnersection itself.
143680387638SSascha WildnerNote that starting a new
143780387638SSascha Wildner.Xr mdoc 7
143880387638SSascha Wildnersection with the
143954ba9607SSascha Wildner.Ic \&Sh
144080387638SSascha Wildnermacro will reset this register.
144180387638SSascha Wildner.El
144254ba9607SSascha Wildner.It Xo
144354ba9607SSascha Wildner.Ic \&nrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression
144454ba9607SSascha Wildner.Op Ar increment
144554ba9607SSascha Wildner.Xc
144654ba9607SSascha WildnerDefine or change a floating-point register.
144754ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
144854ba9607SSascha Wildner.It Ic \&nroff
144954ba9607SSascha WildnerForce nroff mode.
145054ba9607SSascha WildnerThis is a groff extension and currently ignored.
145154ba9607SSascha Wildner.It Ic \&ns
145260e1e752SSascha WildnerTurn on no-space mode.
145354ba9607SSascha WildnerCurrently ignored.
145454ba9607SSascha Wildner.It Ic \&nx Op Ar filename
145554ba9607SSascha WildnerAbort processing of the current input file and process another one.
145654ba9607SSascha WildnerIgnored because insecure.
145754ba9607SSascha Wildner.It Ic \&open Ar stream file
145854ba9607SSascha WildnerOpen a file for writing.
145954ba9607SSascha WildnerIgnored because insecure.
146054ba9607SSascha Wildner.It Ic \&opena Ar stream file
146154ba9607SSascha WildnerOpen a file for appending.
146254ba9607SSascha WildnerIgnored because insecure.
146354ba9607SSascha Wildner.It Ic \&os
146454ba9607SSascha WildnerOutput saved vertical space.
146554ba9607SSascha WildnerCurrently ignored.
146654ba9607SSascha Wildner.It Ic \&output Ar string
146754ba9607SSascha WildnerOutput directly to intermediate output.
146854ba9607SSascha WildnerNot supported.
146954ba9607SSascha Wildner.It Ic \&padj Op Cm 1 | 0
147054ba9607SSascha WildnerGlobally control paragraph-at-once adjustment.
147154ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
147254ba9607SSascha Wildner.It Ic \&papersize Ar media
147354ba9607SSascha WildnerSet the paper size.
147454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
147554ba9607SSascha Wildner.It Ic \&pc Op Ar char
147654ba9607SSascha WildnerChange the page number character.
147754ba9607SSascha WildnerCurrently ignored.
147854ba9607SSascha Wildner.It Ic \&pev
147954ba9607SSascha WildnerPrint environments.
148054ba9607SSascha WildnerThis is a groff extension and currently ignored.
148154ba9607SSascha Wildner.It Ic \&pi Ar command
148254ba9607SSascha WildnerPipe output to a shell command.
148354ba9607SSascha WildnerIgnored because insecure.
148454ba9607SSascha Wildner.It Ic \&PI
148554ba9607SSascha WildnerLow-level request used by
148654ba9607SSascha Wildner.Ic \&BP .
148754ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
148854ba9607SSascha Wildner.It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
148954ba9607SSascha WildnerChange page length.
149054ba9607SSascha WildnerCurrently ignored.
149154ba9607SSascha Wildner.It Ic \&pm
149254ba9607SSascha WildnerPrint names and sizes of macros, strings, and diversions
149354ba9607SSascha Wildnerto standard error output.
149454ba9607SSascha WildnerCurrently ignored.
149554ba9607SSascha Wildner.It Ic \&pn Oo Cm + Ns | Ns Cm - Oc Ns Ar number
149654ba9607SSascha WildnerChange the page number of the next page.
149754ba9607SSascha WildnerCurrently ignored.
149854ba9607SSascha Wildner.It Ic \&pnr
149954ba9607SSascha WildnerPrint all number registers on standard error output.
150054ba9607SSascha WildnerCurrently ignored.
150154ba9607SSascha Wildner.It Ic \&po Op Oo Cm + Ns | Ns Cm - Oc Ns Ar offset
150254ba9607SSascha WildnerSet a horizontal page offset.
150354ba9607SSascha WildnerIf no argument is specified, the page offset is reverted to its
150454ba9607SSascha Wildnerprevious value.
150554ba9607SSascha WildnerIf a sign is specified, the new page offset is calculated relative
150654ba9607SSascha Wildnerto the current one; otherwise, it is absolute.
150754ba9607SSascha WildnerThe argument follows the syntax of
150854ba9607SSascha Wildner.Sx Scaling Widths
150954ba9607SSascha Wildnerand the default scaling unit is
151054ba9607SSascha Wildner.Cm m .
151154ba9607SSascha Wildner.It Ic \&ps Op Oo Cm + Ns | Ns Cm - Oc Ns size
151260e1e752SSascha WildnerChange point size.
151354ba9607SSascha WildnerCurrently ignored.
151454ba9607SSascha Wildner.It Ic \&psbb Ar filename
151554ba9607SSascha WildnerRetrieve the bounding box of a PostScript file.
151654ba9607SSascha WildnerCurrently unsupported.
151754ba9607SSascha Wildner.It Ic \&pshape Ar indent length ...
151854ba9607SSascha WildnerSet a special shape for the current paragraph.
151954ba9607SSascha WildnerThis is a Heirloom extension and currently unsupported.
152054ba9607SSascha Wildner.It Ic \&pso Ar command
152154ba9607SSascha WildnerInclude output of a shell command.
152254ba9607SSascha WildnerIgnored because insecure.
152354ba9607SSascha Wildner.It Ic \&ptr
152454ba9607SSascha WildnerPrint the names and positions of all traps on standard error output.
152554ba9607SSascha WildnerThis is a groff extension and currently ignored.
152654ba9607SSascha Wildner.It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
152754ba9607SSascha WildnerChange post-vertical spacing.
152854ba9607SSascha WildnerThis is a groff extension and currently ignored.
152954ba9607SSascha Wildner.It Ic \&rchar Ar glyph ...
153054ba9607SSascha WildnerRemove glyph definitions.
153154ba9607SSascha WildnerCurrently unsupported.
153254ba9607SSascha Wildner.It Ic \&rd Op Ar prompt Op Ar argument ...
153354ba9607SSascha WildnerRead from standard input.
153454ba9607SSascha WildnerCurrently ignored.
153554ba9607SSascha Wildner.It Ic \&recursionlimit Ar maxrec maxtail
153654ba9607SSascha WildnerSet the maximum stack depth for recursive macros.
153754ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
153854ba9607SSascha Wildner.It Ic \&return Op Ar twice
153954ba9607SSascha WildnerExit the presently executed macro and return to the caller.
154054ba9607SSascha WildnerThe argument is currently ignored.
154154ba9607SSascha Wildner.It Ic \&rfschar Ar font glyph ...
154254ba9607SSascha WildnerRemove font-specific fallback glyph definitions.
154354ba9607SSascha WildnerCurrently unsupported.
154454ba9607SSascha Wildner.It Ic \&rhang Ar font char ... afmunits
154554ba9607SSascha WildnerHang characters at right margin.
154654ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
154754ba9607SSascha Wildner.It Ic \&rj Op Ar N
154854ba9607SSascha WildnerJustify the next
154954ba9607SSascha Wildner.Ar N
155054ba9607SSascha Wildnerinput lines to the right margin without filling.
155154ba9607SSascha Wildner.Ar N
155254ba9607SSascha Wildnerdefaults to 1.
155354ba9607SSascha WildnerAn argument of 0 or less ends right adjustment.
155454ba9607SSascha Wildner.It Ic \&rm Ar macroname
1555070c62a6SFranco FichtnerRemove a request, macro or string.
155654ba9607SSascha Wildner.It Ic \&rn Ar oldname newname
155754ba9607SSascha WildnerRename a request, macro, diversion, or string.
155854ba9607SSascha WildnerIn
155954ba9607SSascha Wildner.Xr mandoc 1 ,
156054ba9607SSascha Wildneruser-defined macros,
156154ba9607SSascha Wildner.Xr mdoc 7
156254ba9607SSascha Wildnerand
156354ba9607SSascha Wildner.Xr man 7
156454ba9607SSascha Wildnermacros, and user-defined strings can be renamed, but renaming of
156554ba9607SSascha Wildnerpredefined strings and of
156654ba9607SSascha Wildner.Nm
156754ba9607SSascha Wildnerrequests is not supported, and diversions are not implemented at all.
156854ba9607SSascha Wildner.It Ic \&rnn Ar oldname newname
156954ba9607SSascha WildnerRename a number register.
157054ba9607SSascha WildnerCurrently unsupported.
157154ba9607SSascha Wildner.It Ic \&rr Ar register
1572070c62a6SFranco FichtnerRemove a register.
157354ba9607SSascha Wildner.It Ic \&rs
157454ba9607SSascha WildnerEnd no-space mode.
157554ba9607SSascha WildnerCurrently ignored.
157654ba9607SSascha Wildner.It Ic \&rt Op Ar dist
157754ba9607SSascha WildnerReturn to marked vertical position.
157854ba9607SSascha WildnerCurrently ignored.
157954ba9607SSascha Wildner.It Ic \&schar Ar glyph Op Ar string
158054ba9607SSascha WildnerDefine global fallback glyph.
158154ba9607SSascha WildnerThis is a groff extension and currently unsupported.
158254ba9607SSascha Wildner.It Ic \&sentchar Ar char ...
158354ba9607SSascha WildnerDefine sentence-ending characters.
158454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
158554ba9607SSascha Wildner.It Ic \&shc Op Ar glyph
158654ba9607SSascha WildnerChange the soft hyphen character.
158754ba9607SSascha WildnerCurrently ignored.
158854ba9607SSascha Wildner.It Ic \&shift Op Ar number
158954ba9607SSascha WildnerShift macro arguments
159054ba9607SSascha Wildner.Ar number
159154ba9607SSascha Wildnertimes, by default once: \e\e$i becomes what \e\e$i+number was.
159254ba9607SSascha WildnerAlso decrement \en(.$ by
159354ba9607SSascha Wildner.Ar number .
159454ba9607SSascha Wildner.It Ic \&sizes Ar size ...
159554ba9607SSascha WildnerDefine permissible point sizes.
159654ba9607SSascha WildnerThis is a groff extension and currently ignored.
159754ba9607SSascha Wildner.It Ic \&so Ar filename
159880387638SSascha WildnerInclude a source file.
159954ba9607SSascha WildnerThe file is read and its contents processed as input in place of the
160054ba9607SSascha Wildner.Ic \&so
160180387638SSascha Wildnerrequest line.
1602a4c7eb57SSascha WildnerTo avoid inadvertent inclusion of unrelated files,
160380387638SSascha Wildner.Xr mandoc 1
160480387638SSascha Wildneronly accepts relative paths not containing the strings
160580387638SSascha Wildner.Qq ../
160680387638SSascha Wildnerand
160780387638SSascha Wildner.Qq /.. .
160836342e81SSascha Wildner.Pp
160936342e81SSascha WildnerThis request requires
161036342e81SSascha Wildner.Xr man 1
161136342e81SSascha Wildnerto change to the right directory before calling
161236342e81SSascha Wildner.Xr mandoc 1 ,
161336342e81SSascha Wildnerper convention to the root of the manual tree.
161436342e81SSascha WildnerTypical usage looks like:
161536342e81SSascha Wildner.Pp
161636342e81SSascha Wildner.Dl \&.so man3/Xcursor.3
161736342e81SSascha Wildner.Pp
161836342e81SSascha WildnerAs the whole concept is rather fragile, the use of
161954ba9607SSascha Wildner.Ic \&so
162036342e81SSascha Wildneris discouraged.
162136342e81SSascha WildnerUse
162236342e81SSascha Wildner.Xr ln 1
162336342e81SSascha Wildnerinstead.
162454ba9607SSascha Wildner.It Ic \&sp Op Ar height
162554ba9607SSascha WildnerBreak the output line and emit vertical space.
162654ba9607SSascha WildnerThe argument follows the syntax of
162754ba9607SSascha Wildner.Sx Scaling Widths
162854ba9607SSascha Wildnerand defaults to one blank line
162954ba9607SSascha Wildner.Pq Li 1v .
163054ba9607SSascha Wildner.It Ic \&spacewidth Op Cm 1 | 0
163154ba9607SSascha WildnerSet the space width from the font metrics file.
163254ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
163354ba9607SSascha Wildner.It Ic \&special Op Ar font ...
163454ba9607SSascha WildnerDefine a special font.
163554ba9607SSascha WildnerThis is a groff extension and currently ignored.
163654ba9607SSascha Wildner.It Ic \&spreadwarn Op Ar width
163754ba9607SSascha WildnerWarn about wide spacing between words.
163854ba9607SSascha WildnerCurrently ignored.
163954ba9607SSascha Wildner.It Ic \&ss Ar wordspace Op Ar sentencespace
164054ba9607SSascha WildnerSet space character size.
164154ba9607SSascha WildnerCurrently ignored.
164254ba9607SSascha Wildner.It Ic \&sty Ar position style
164354ba9607SSascha WildnerAssociate style with a font position.
164454ba9607SSascha WildnerThis is a groff extension and currently ignored.
164554ba9607SSascha Wildner.It Ic \&substring Ar stringname startpos Op Ar endpos
164654ba9607SSascha WildnerReplace a user-defined string with a substring.
164754ba9607SSascha WildnerCurrently unsupported.
164854ba9607SSascha Wildner.It Ic \&sv Op Ar height
164954ba9607SSascha WildnerSave vertical space.
165054ba9607SSascha WildnerCurrently ignored.
165154ba9607SSascha Wildner.It Ic \&sy Ar command
165254ba9607SSascha WildnerExecute shell command.
165354ba9607SSascha WildnerIgnored because insecure.
165454ba9607SSascha Wildner.It Ic \&T&
165554ba9607SSascha WildnerRe-start a table layout, retaining the options of the prior table
165654ba9607SSascha Wildnerinvocation.
165754ba9607SSascha WildnerSee
165854ba9607SSascha Wildner.Ic \&TS .
165954ba9607SSascha Wildner.It Ic \&ta Op Ar width ... Op Cm T Ar width ...
166060e1e752SSascha WildnerSet tab stops.
166154ba9607SSascha WildnerEach
166254ba9607SSascha Wildner.Ar width
166354ba9607SSascha Wildnerargument follows the syntax of
166454ba9607SSascha Wildner.Sx Scaling Widths .
166554ba9607SSascha WildnerIf prefixed by a plus sign, it is relative to the previous tab stop.
166654ba9607SSascha WildnerThe arguments after the
166754ba9607SSascha Wildner.Cm T
166854ba9607SSascha Wildnermarker are used repeatedly as often as needed; for each reuse,
166954ba9607SSascha Wildnerthey are taken relative to the last previously established tab stop.
167054ba9607SSascha WildnerWhen
167154ba9607SSascha Wildner.Ic \&ta
167254ba9607SSascha Wildneris called without arguments, all tab stops are cleared.
167354ba9607SSascha Wildner.It Ic \&tc Op Ar glyph
167454ba9607SSascha WildnerChange tab repetition character.
167554ba9607SSascha WildnerCurrently unsupported.
167654ba9607SSascha Wildner.It Ic \&TE
167754ba9607SSascha WildnerEnd a table context.
167854ba9607SSascha WildnerSee
167954ba9607SSascha Wildner.Ic \&TS .
168054ba9607SSascha Wildner.It Ic \&ti Oo Cm + Ns | Ns Cm - Oc Ns Ar width
168154ba9607SSascha WildnerBreak the output line and indent the next output line by
168254ba9607SSascha Wildner.Ar width .
168354ba9607SSascha WildnerIf a sign is specified, the temporary indentation is calculated
168454ba9607SSascha Wildnerrelative to the current indentation; otherwise, it is absolute.
168554ba9607SSascha WildnerThe argument follows the syntax of
168654ba9607SSascha Wildner.Sx Scaling Widths
168754ba9607SSascha Wildnerand the default scaling unit is
168854ba9607SSascha Wildner.Cm m .
168954ba9607SSascha Wildner.It Ic \&tkf Ar font minps width1 maxps width2
169054ba9607SSascha WildnerEnable track kerning for a font.
169154ba9607SSascha WildnerCurrently ignored.
169254ba9607SSascha Wildner.It Ic \&tl No \& Ap Ar left Ap Ar center Ap Ar right Ap
169354ba9607SSascha WildnerPrint a title line.
169454ba9607SSascha WildnerCurrently unsupported.
169554ba9607SSascha Wildner.It Ic \&tm Ar string
169654ba9607SSascha WildnerPrint to standard error output.
169754ba9607SSascha WildnerCurrently ignored.
169854ba9607SSascha Wildner.It Ic \&tm1 Ar string
169954ba9607SSascha WildnerPrint to standard error output, allowing leading blanks.
170054ba9607SSascha WildnerThis is a groff extension and currently ignored.
170154ba9607SSascha Wildner.It Ic \&tmc Ar string
170254ba9607SSascha WildnerPrint to standard error output without a trailing newline.
170354ba9607SSascha WildnerThis is a groff extension and currently ignored.
170454ba9607SSascha Wildner.It Ic \&tr Ar glyph glyph ...
170580387638SSascha WildnerOutput character translation.
170654ba9607SSascha WildnerThe first glyph in each pair is replaced by the second one.
170754ba9607SSascha WildnerCharacter escapes can be used; for example,
170836342e81SSascha Wildner.Pp
170936342e81SSascha Wildner.Dl tr \e(xx\e(yy
171036342e81SSascha Wildner.Pp
171136342e81SSascha Wildnerreplaces all invocations of \e(xx with \e(yy.
171254ba9607SSascha Wildner.It Ic \&track Ar font minps width1 maxps width2
171354ba9607SSascha WildnerStatic letter space tracking.
171454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
171554ba9607SSascha Wildner.It Ic \&transchar Ar char ...
171654ba9607SSascha WildnerDefine transparent characters for sentence-ending.
171754ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
171854ba9607SSascha Wildner.It Ic \&trf Ar filename
171954ba9607SSascha WildnerOutput the contents of a file, disallowing invalid characters.
172054ba9607SSascha WildnerThis is a groff extension and ignored because insecure.
172154ba9607SSascha Wildner.It Ic \&trimat Ar left top width height
172254ba9607SSascha WildnerSet the TrimBox page parameter for PDF generation.
172354ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
172454ba9607SSascha Wildner.It Ic \&trin Ar glyph glyph ...
172554ba9607SSascha WildnerOutput character translation, ignored by
172654ba9607SSascha Wildner.Ic \&asciify .
172754ba9607SSascha WildnerCurrently unsupported.
172854ba9607SSascha Wildner.It Ic \&trnt Ar glyph glyph ...
172954ba9607SSascha WildnerOutput character translation, ignored by \e!.
173054ba9607SSascha WildnerCurrently unsupported.
173154ba9607SSascha Wildner.It Ic \&troff
173254ba9607SSascha WildnerForce troff mode.
173354ba9607SSascha WildnerThis is a groff extension and currently ignored.
173454ba9607SSascha Wildner.It Ic \&TS
173580387638SSascha WildnerBegin a table, which formats input in aligned rows and columns.
173680387638SSascha WildnerSee
173780387638SSascha Wildner.Xr tbl 7
173880387638SSascha Wildnerfor a description of the tbl language.
173954ba9607SSascha Wildner.It Ic \&uf Ar font
174054ba9607SSascha WildnerGlobally set the underline font.
174154ba9607SSascha WildnerCurrently ignored.
174254ba9607SSascha Wildner.It Ic \&ul Op Ar N
174354ba9607SSascha WildnerUnderline next
174454ba9607SSascha Wildner.Ar N
174554ba9607SSascha Wildnerinput lines.
174654ba9607SSascha WildnerCurrently ignored.
174754ba9607SSascha Wildner.It Ic \&unformat Ar divname
174854ba9607SSascha WildnerUnformat spaces and tabs in a diversion.
174954ba9607SSascha WildnerCurrently unsupported.
175054ba9607SSascha Wildner.It Ic \&unwatch Ar macroname
175154ba9607SSascha WildnerDisable notification for string or macro.
175254ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
175354ba9607SSascha Wildner.It Ic \&unwatchn Ar register
175454ba9607SSascha WildnerDisable notification for register.
175554ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
175654ba9607SSascha Wildner.It Ic \&vpt Op Cm 1 | 0
175754ba9607SSascha WildnerEnable or disable vertical position traps.
175854ba9607SSascha WildnerThis is a groff extension and currently ignored.
175954ba9607SSascha Wildner.It Ic \&vs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height
176054ba9607SSascha WildnerChange vertical spacing.
176154ba9607SSascha WildnerCurrently ignored.
176254ba9607SSascha Wildner.It Ic \&warn Ar flags
176354ba9607SSascha WildnerSet warning level.
176454ba9607SSascha WildnerCurrently ignored.
176554ba9607SSascha Wildner.It Ic \&warnscale Ar si
176654ba9607SSascha WildnerSet the scaling indicator used in warnings.
176754ba9607SSascha WildnerThis is a groff extension and currently ignored.
176854ba9607SSascha Wildner.It Ic \&watch Ar macroname
176954ba9607SSascha WildnerNotify on change of string or macro.
177054ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
177154ba9607SSascha Wildner.It Ic \&watchlength Ar maxlength
177254ba9607SSascha WildnerOn change, report the contents of macros and strings
177354ba9607SSascha Wildnerup to the specified length.
177454ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
177554ba9607SSascha Wildner.It Ic \&watchn Ar register
177654ba9607SSascha WildnerNotify on change of register.
177754ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
177854ba9607SSascha Wildner.It Ic \&wh Ar dist Op Ar macroname
177954ba9607SSascha WildnerSet a page location trap.
178054ba9607SSascha WildnerCurrently unsupported.
178154ba9607SSascha Wildner.It Ic \&while Ar condition body
178254ba9607SSascha WildnerRepeated execution while a
178354ba9607SSascha Wildner.Ar condition
178454ba9607SSascha Wildneris true, with syntax similar to
178554ba9607SSascha Wildner.Ic \&if .
178654ba9607SSascha WildnerCurrently implemented with two restrictions: cannot nest,
178754ba9607SSascha Wildnerand each loop must start and end in the same scope.
178854ba9607SSascha Wildner.It Ic \&write Oo \(dq Oc Ns Ar string
178954ba9607SSascha WildnerWrite to an open file.
179054ba9607SSascha WildnerIgnored because insecure.
179154ba9607SSascha Wildner.It Ic \&writec Oo \(dq Oc Ns Ar string
179254ba9607SSascha WildnerWrite to an open file without appending a newline.
179354ba9607SSascha WildnerIgnored because insecure.
179454ba9607SSascha Wildner.It Ic \&writem Ar macroname
179554ba9607SSascha WildnerWrite macro or string to an open file.
179654ba9607SSascha WildnerIgnored because insecure.
179754ba9607SSascha Wildner.It Ic \&xflag Ar level
179854ba9607SSascha WildnerSet the extension level.
179954ba9607SSascha WildnerThis is a Heirloom extension and currently ignored.
180054ba9607SSascha Wildner.El
1801070c62a6SFranco Fichtner.Ss Numerical expressions
1802070c62a6SFranco FichtnerThe
180354ba9607SSascha Wildner.Ic \&nr ,
180454ba9607SSascha Wildner.Ic \&if ,
1805070c62a6SFranco Fichtnerand
180654ba9607SSascha Wildner.Ic \&ie
1807070c62a6SFranco Fichtnerrequests accept integer numerical expressions as arguments.
1808070c62a6SFranco FichtnerThese are always evaluated using the C
1809070c62a6SFranco Fichtner.Vt int
1810070c62a6SFranco Fichtnertype; integer overflow works the same way as in the C language.
1811070c62a6SFranco FichtnerNumbers consist of an arbitrary number of digits
1812070c62a6SFranco Fichtner.Sq 0
1813070c62a6SFranco Fichtnerto
1814070c62a6SFranco Fichtner.Sq 9
1815070c62a6SFranco Fichtnerprefixed by an optional sign
1816070c62a6SFranco Fichtner.Sq +
1817070c62a6SFranco Fichtneror
1818070c62a6SFranco Fichtner.Sq - .
181954ba9607SSascha WildnerEach number may be followed by one optional scaling unit described below
182054ba9607SSascha Wildner.Sx Scaling Widths .
182154ba9607SSascha WildnerThe following equations hold:
182254ba9607SSascha Wildner.Bd -literal -offset indent
182354ba9607SSascha Wildner1i = 6v = 6P = 10m = 10n = 72p = 1000M = 240u = 240
182454ba9607SSascha Wildner254c = 100i = 24000u = 24000
182554ba9607SSascha Wildner1f = 65536u = 65536
182654ba9607SSascha Wildner.Ed
1827070c62a6SFranco Fichtner.Pp
1828070c62a6SFranco FichtnerThe following binary operators are implemented.
1829070c62a6SFranco FichtnerUnless otherwise stated, they behave as in the C language:
1830070c62a6SFranco Fichtner.Pp
1831070c62a6SFranco Fichtner.Bl -tag -width 2n -compact
1832070c62a6SFranco Fichtner.It Ic +
1833070c62a6SFranco Fichtneraddition
1834070c62a6SFranco Fichtner.It Ic -
1835070c62a6SFranco Fichtnersubtraction
1836070c62a6SFranco Fichtner.It Ic *
1837070c62a6SFranco Fichtnermultiplication
1838070c62a6SFranco Fichtner.It Ic /
1839070c62a6SFranco Fichtnerdivision
1840070c62a6SFranco Fichtner.It Ic %
1841070c62a6SFranco Fichtnerremainder of division
1842070c62a6SFranco Fichtner.It Ic <
1843070c62a6SFranco Fichtnerless than
1844070c62a6SFranco Fichtner.It Ic >
1845070c62a6SFranco Fichtnergreater than
1846070c62a6SFranco Fichtner.It Ic ==
1847070c62a6SFranco Fichtnerequal to
1848070c62a6SFranco Fichtner.It Ic =
1849070c62a6SFranco Fichtnerequal to, same effect as
1850070c62a6SFranco Fichtner.Ic ==
1851070c62a6SFranco Fichtner(this differs from C)
1852070c62a6SFranco Fichtner.It Ic <=
1853070c62a6SFranco Fichtnerless than or equal to
1854070c62a6SFranco Fichtner.It Ic >=
1855070c62a6SFranco Fichtnergreater than or equal to
1856070c62a6SFranco Fichtner.It Ic <>
1857070c62a6SFranco Fichtnernot equal to (corresponds to C
1858070c62a6SFranco Fichtner.Ic != ;
1859070c62a6SFranco Fichtnerthis one is of limited portability, it is supported by Heirloom roff,
1860070c62a6SFranco Fichtnerbut not by groff)
1861070c62a6SFranco Fichtner.It Ic &
1862070c62a6SFranco Fichtnerlogical and (corresponds to C
1863070c62a6SFranco Fichtner.Ic && )
1864070c62a6SFranco Fichtner.It Ic \&:
1865070c62a6SFranco Fichtnerlogical or (corresponds to C
186654ba9607SSascha Wildner.Ic || )
1867070c62a6SFranco Fichtner.It Ic <?
1868070c62a6SFranco Fichtnerminimum (not available in C)
1869070c62a6SFranco Fichtner.It Ic >?
1870070c62a6SFranco Fichtnermaximum (not available in C)
1871070c62a6SFranco Fichtner.El
1872070c62a6SFranco Fichtner.Pp
187354ba9607SSascha WildnerThere is no concept of precedence; evaluation proceeds from left to right,
187454ba9607SSascha Wildnerexcept when subexpressions are enclosed in parentheses.
1875070c62a6SFranco FichtnerInside parentheses, whitespace is ignored.
18767888c61dSFranco Fichtner.Sh ESCAPE SEQUENCE REFERENCE
18777888c61dSFranco FichtnerThe
18787888c61dSFranco Fichtner.Xr mandoc 1
18797888c61dSFranco Fichtner.Nm
18807888c61dSFranco Fichtnerparser recognises the following escape sequences.
18817888c61dSFranco FichtnerIn
18827888c61dSFranco Fichtner.Xr mdoc 7
18837888c61dSFranco Fichtnerand
18847888c61dSFranco Fichtner.Xr man 7
18857888c61dSFranco Fichtnerdocuments, using escape sequences is discouraged except for those
18867888c61dSFranco Fichtnerdescribed in the
18877888c61dSFranco Fichtner.Sx LANGUAGE SYNTAX
18887888c61dSFranco Fichtnersection above.
18897888c61dSFranco Fichtner.Pp
18907888c61dSFranco FichtnerA backslash followed by any character not listed here
18917888c61dSFranco Fichtnersimply prints that character itself.
189254ba9607SSascha Wildner.Bl -tag -width Ds
189354ba9607SSascha Wildner.It Ic \e<newline>
18947888c61dSFranco FichtnerA backslash at the end of an input line can be used to continue the
18957888c61dSFranco Fichtnerlogical input line on the next physical input line, joining the text
18967888c61dSFranco Fichtneron both lines together as if it were on a single input line.
189754ba9607SSascha Wildner.It Ic \e<space>
18987888c61dSFranco FichtnerThe escape sequence backslash-space
18997888c61dSFranco Fichtner.Pq Sq \e\ \&
19007888c61dSFranco Fichtneris an unpaddable space-sized non-breaking space character; see
190154ba9607SSascha Wildner.Sx Whitespace
190254ba9607SSascha Wildnerand
190354ba9607SSascha Wildner.Xr mandoc_char 7 .
190454ba9607SSascha Wildner.It Ic \e!
190554ba9607SSascha WildnerEmbed text up to and including the end of the input line into the
190654ba9607SSascha Wildnercurrent diversion or into intermediate output without interpreting
190754ba9607SSascha Wildnerrequests, macros, and escapes.
190854ba9607SSascha WildnerCurrently unsupported.
190954ba9607SSascha Wildner.It Ic \e\(dq
19107888c61dSFranco FichtnerThe rest of the input line is treated as
19117888c61dSFranco Fichtner.Sx Comments .
191254ba9607SSascha Wildner.It Ic \e#
191354ba9607SSascha WildnerLine continuation with comment.
191454ba9607SSascha WildnerDiscard the rest of the physical input line and continue the logical
191554ba9607SSascha Wildnerinput line on the next physical input line, joining the text on
191654ba9607SSascha Wildnerboth lines together as if it were on a single input line.
191754ba9607SSascha WildnerThis is a groff extension.
191854ba9607SSascha Wildner.It Ic \e$ Ns Ar arg
191954ba9607SSascha WildnerMacro argument expansion, see
192054ba9607SSascha Wildner.Ic \&de .
192154ba9607SSascha Wildner.It Ic \e%
19227888c61dSFranco FichtnerHyphenation allowed at this point of the word; ignored by
19237888c61dSFranco Fichtner.Xr mandoc 1 .
192454ba9607SSascha Wildner.It Ic \e&
192554ba9607SSascha WildnerNon-printing zero-width character,
192654ba9607SSascha Wildneroften used for various kinds of escaping; see
192754ba9607SSascha Wildner.Sx Whitespace ,
192854ba9607SSascha Wildner.Xr mandoc_char 7 ,
192954ba9607SSascha Wildnerand the
193054ba9607SSascha Wildner.Dq MACRO SYNTAX
193154ba9607SSascha Wildnerand
193254ba9607SSascha Wildner.Dq Delimiters
193354ba9607SSascha Wildnersections in
193454ba9607SSascha Wildner.Xr mdoc 7 .
193554ba9607SSascha Wildner.It Ic \e\(aq
19367888c61dSFranco FichtnerAcute accent special character; use
193754ba9607SSascha Wildner.Ic \e(aa
19387888c61dSFranco Fichtnerinstead.
193954ba9607SSascha Wildner.It Ic \e( Ns Ar cc
19407888c61dSFranco Fichtner.Sx Special Characters
19417888c61dSFranco Fichtnerwith two-letter names, see
19427888c61dSFranco Fichtner.Xr mandoc_char 7 .
194354ba9607SSascha Wildner.It Ic \e)
194454ba9607SSascha WildnerZero-width space transparent to end-of-sentence detection;
194554ba9607SSascha Wildnerignored by
194654ba9607SSascha Wildner.Xr mandoc 1 .
194754ba9607SSascha Wildner.It Ic \e*[ Ns Ar name Ns Ic \&]
19487888c61dSFranco FichtnerInterpolate the string with the
194954ba9607SSascha Wildner.Ar name .
19507888c61dSFranco FichtnerFor short names, there are variants
195154ba9607SSascha Wildner.Ic \e* Ns Ar c
19527888c61dSFranco Fichtnerand
195354ba9607SSascha Wildner.Ic \e*( Ns Ar cc .
195454ba9607SSascha Wildner.Pp
195554ba9607SSascha WildnerOne string is predefined on the
195654ba9607SSascha Wildner.Nm
195754ba9607SSascha Wildnerlanguage level:
195854ba9607SSascha Wildner.Ic \e*(.T
195954ba9607SSascha Wildnerexpands to the name of the output device,
196054ba9607SSascha Wildnerfor example ascii, utf8, ps, pdf, html, or markdown.
196154ba9607SSascha Wildner.Pp
196254ba9607SSascha WildnerMacro sets traditionally predefine additional strings which are not
196354ba9607SSascha Wildnerportable and differ across implementations.
196454ba9607SSascha WildnerThose supported by
196554ba9607SSascha Wildner.Xr mandoc 1
196654ba9607SSascha Wildnerare listed in
196754ba9607SSascha Wildner.Xr mandoc_char 7 .
196854ba9607SSascha Wildner.Pp
196954ba9607SSascha WildnerStrings can be defined, changed, and deleted with the
197054ba9607SSascha Wildner.Ic \&ds ,
197154ba9607SSascha Wildner.Ic \&as ,
197254ba9607SSascha Wildnerand
197354ba9607SSascha Wildner.Ic \&rm
197454ba9607SSascha Wildnerrequests.
197554ba9607SSascha Wildner.It Ic \e,
197654ba9607SSascha WildnerLeft italic correction (groff extension); ignored by
197754ba9607SSascha Wildner.Xr mandoc 1 .
197854ba9607SSascha Wildner.It Ic \e-
19797888c61dSFranco FichtnerSpecial character
198054ba9607SSascha Wildner.Dq mathematical minus sign ;
198154ba9607SSascha Wildnersee
198254ba9607SSascha Wildner.Xr mandoc_char 7
198354ba9607SSascha Wildnerfor details.
198454ba9607SSascha Wildner.It Ic \e/
198554ba9607SSascha WildnerRight italic correction (groff extension); ignored by
198654ba9607SSascha Wildner.Xr mandoc 1 .
198754ba9607SSascha Wildner.It Ic \e:
198854ba9607SSascha WildnerBreaking the line is allowed at this point of the word
198954ba9607SSascha Wildnerwithout inserting a hyphen.
199054ba9607SSascha Wildner.It Ic \e?
199154ba9607SSascha WildnerEmbed the text up to the next
199254ba9607SSascha Wildner.Ic \e?
199354ba9607SSascha Wildnerinto the current diversion without interpreting requests, macros,
199454ba9607SSascha Wildnerand escapes.
199554ba9607SSascha WildnerThis is a groff extension and currently unsupported.
199654ba9607SSascha Wildner.It Ic \e[ Ns Ar name Ns Ic \&]
19977888c61dSFranco Fichtner.Sx Special Characters
19987888c61dSFranco Fichtnerwith names of arbitrary length, see
19997888c61dSFranco Fichtner.Xr mandoc_char 7 .
200054ba9607SSascha Wildner.It Ic \e^
20017888c61dSFranco FichtnerOne-twelfth em half-narrow space character, effectively zero-width in
20027888c61dSFranco Fichtner.Xr mandoc 1 .
200354ba9607SSascha Wildner.It Ic \e_
200454ba9607SSascha WildnerUnderline special character; use
200554ba9607SSascha Wildner.Ic \e(ul
20067888c61dSFranco Fichtnerinstead.
200754ba9607SSascha Wildner.It Ic \e`
200854ba9607SSascha WildnerGrave accent special character; use
200954ba9607SSascha Wildner.Ic \e(ga
201054ba9607SSascha Wildnerinstead.
201154ba9607SSascha Wildner.It Ic \e{
20127888c61dSFranco FichtnerBegin conditional input; see
201354ba9607SSascha Wildner.Ic \&if .
201454ba9607SSascha Wildner.It Ic \e\(ba
20157888c61dSFranco FichtnerOne-sixth em narrow space character, effectively zero-width in
20167888c61dSFranco Fichtner.Xr mandoc 1 .
201754ba9607SSascha Wildner.It Ic \e}
20187888c61dSFranco FichtnerEnd conditional input; see
201954ba9607SSascha Wildner.Ic \&if .
202054ba9607SSascha Wildner.It Ic \e~
20217888c61dSFranco FichtnerPaddable non-breaking space character.
202254ba9607SSascha Wildner.It Ic \e0
20237888c61dSFranco FichtnerDigit width space character.
202454ba9607SSascha Wildner.It Ic \eA\(aq Ns Ar string Ns Ic \(aq
20257888c61dSFranco FichtnerAnchor definition; ignored by
20267888c61dSFranco Fichtner.Xr mandoc 1 .
202754ba9607SSascha Wildner.It Ic \ea
202854ba9607SSascha WildnerLeader character; ignored by
202954ba9607SSascha Wildner.Xr mandoc 1 .
203054ba9607SSascha Wildner.It Ic \eB\(aq Ns Ar string Ns Ic \(aq
2031070c62a6SFranco FichtnerInterpolate
2032070c62a6SFranco Fichtner.Sq 1
2033070c62a6SFranco Fichtnerif
20347888c61dSFranco Fichtner.Ar string
2035070c62a6SFranco Fichtnerconforms to the syntax of
2036070c62a6SFranco Fichtner.Sx Numerical expressions
203754ba9607SSascha Wildnerexplained above or
2038070c62a6SFranco Fichtner.Sq 0
2039070c62a6SFranco Fichtnerotherwise.
204054ba9607SSascha Wildner.It Ic \eb\(aq Ns Ar string Ns Ic \(aq
20417888c61dSFranco FichtnerBracket building function; ignored by
20427888c61dSFranco Fichtner.Xr mandoc 1 .
204354ba9607SSascha Wildner.It Ic \eC\(aq Ns Ar name Ns Ic \(aq
20447888c61dSFranco Fichtner.Sx Special Characters
20457888c61dSFranco Fichtnerwith names of arbitrary length.
204654ba9607SSascha Wildner.It Ic \ec
204754ba9607SSascha WildnerWhen encountered at the end of an input text line,
204854ba9607SSascha Wildnerthe next input text line is considered to continue that line,
204954ba9607SSascha Wildnereven if there are request or macro lines in between.
205054ba9607SSascha WildnerNo whitespace is inserted.
205154ba9607SSascha Wildner.It Ic \eD\(aq Ns Ar string Ns Ic \(aq
20527888c61dSFranco FichtnerDraw graphics function; ignored by
20537888c61dSFranco Fichtner.Xr mandoc 1 .
205454ba9607SSascha Wildner.It Ic \ed
20557888c61dSFranco FichtnerMove down by half a line; ignored by
20567888c61dSFranco Fichtner.Xr mandoc 1 .
205754ba9607SSascha Wildner.It Ic \eE
205854ba9607SSascha WildnerEscape character intended to not be interpreted in copy mode.
205954ba9607SSascha WildnerIn
206054ba9607SSascha Wildner.Xr mandoc 1 ,
206154ba9607SSascha Wildnerit currently does the same as
206254ba9607SSascha Wildner.Ic \e
206354ba9607SSascha Wildneritself.
206454ba9607SSascha Wildner.It Ic \ee
20657888c61dSFranco FichtnerBackslash special character.
206654ba9607SSascha Wildner.It Ic \eF[ Ns Ar name Ns Ic \&]
20677888c61dSFranco FichtnerSwitch font family (groff extension); ignored by
20687888c61dSFranco Fichtner.Xr mandoc 1 .
20697888c61dSFranco FichtnerFor short names, there are variants
207054ba9607SSascha Wildner.Ic \eF Ns Ar c
20717888c61dSFranco Fichtnerand
207254ba9607SSascha Wildner.Ic \eF( Ns Ar cc .
207354ba9607SSascha Wildner.It Ic \ef[ Ns Ar name Ns Ic \&]
20747888c61dSFranco FichtnerSwitch to the font
20757888c61dSFranco Fichtner.Ar name ,
20767888c61dSFranco Fichtnersee
207754ba9607SSascha Wildner.Sx Font Selection .
20787888c61dSFranco FichtnerFor short names, there are variants
207954ba9607SSascha Wildner.Ic \ef Ns Ar c
20807888c61dSFranco Fichtnerand
208154ba9607SSascha Wildner.Ic \ef( Ns Ar cc .
208254ba9607SSascha WildnerAn empty name
208354ba9607SSascha Wildner.Ic \ef[]
208454ba9607SSascha Wildnerdefaults to
208554ba9607SSascha Wildner.Ic \efP .
208654ba9607SSascha Wildner.It Ic \eg[ Ns Ar name Ns Ic \&]
20877888c61dSFranco FichtnerInterpolate the format of a number register; ignored by
20887888c61dSFranco Fichtner.Xr mandoc 1 .
20897888c61dSFranco FichtnerFor short names, there are variants
209054ba9607SSascha Wildner.Ic \eg Ns Ar c
20917888c61dSFranco Fichtnerand
209254ba9607SSascha Wildner.Ic \eg( Ns Ar cc .
209354ba9607SSascha Wildner.It Ic \eH\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
20947888c61dSFranco FichtnerSet the height of the current font; ignored by
20957888c61dSFranco Fichtner.Xr mandoc 1 .
209654ba9607SSascha Wildner.It Ic \eh\(aq Ns Oo Cm \&| Oc Ns Ar width Ns Ic \(aq
209754ba9607SSascha WildnerHorizontal motion.
209854ba9607SSascha WildnerIf the vertical bar is given, the motion is relative to the current
209954ba9607SSascha Wildnerindentation.
210054ba9607SSascha WildnerOtherwise, it is relative to the current position.
210154ba9607SSascha WildnerThe default scaling unit is
210254ba9607SSascha Wildner.Cm m .
210354ba9607SSascha Wildner.It Ic \ek[ Ns Ar name Ns Ic \&]
21047888c61dSFranco FichtnerMark horizontal input place in register; ignored by
21057888c61dSFranco Fichtner.Xr mandoc 1 .
21067888c61dSFranco FichtnerFor short names, there are variants
210754ba9607SSascha Wildner.Ic \ek Ns Ar c
21087888c61dSFranco Fichtnerand
210954ba9607SSascha Wildner.Ic \ek( Ns Ar cc .
211054ba9607SSascha Wildner.It Ic \eL\(aq Ns Ar number Ns Oo Ar c Oc Ns Ic \(aq
21117888c61dSFranco FichtnerVertical line drawing function; ignored by
21127888c61dSFranco Fichtner.Xr mandoc 1 .
211354ba9607SSascha Wildner.It Ic \el\(aq Ns Ar width Ns Oo Ar c Oc Ns Ic \(aq
211454ba9607SSascha WildnerDraw a horizontal line of
211554ba9607SSascha Wildner.Ar width
211654ba9607SSascha Wildnerusing the glyph
211754ba9607SSascha Wildner.Ar c .
211854ba9607SSascha Wildner.It Ic \eM[ Ns Ar name Ns Ic \&]
21197888c61dSFranco FichtnerSet fill (background) color (groff extension); ignored by
21207888c61dSFranco Fichtner.Xr mandoc 1 .
21217888c61dSFranco FichtnerFor short names, there are variants
212254ba9607SSascha Wildner.Ic \eM Ns Ar c
21237888c61dSFranco Fichtnerand
212454ba9607SSascha Wildner.Ic \eM( Ns Ar cc .
212554ba9607SSascha Wildner.It Ic \em[ Ns Ar name Ns Ic \&]
21267888c61dSFranco FichtnerSet glyph drawing color (groff extension); ignored by
21277888c61dSFranco Fichtner.Xr mandoc 1 .
21287888c61dSFranco FichtnerFor short names, there are variants
212954ba9607SSascha Wildner.Ic \em Ns Ar c
21307888c61dSFranco Fichtnerand
213154ba9607SSascha Wildner.Ic \em( Ns Ar cc .
213254ba9607SSascha Wildner.It Ic \eN\(aq Ns Ar number Ns Ic \(aq
21337888c61dSFranco FichtnerCharacter
21347888c61dSFranco Fichtner.Ar number
21357888c61dSFranco Fichtneron the current font.
213654ba9607SSascha Wildner.It Ic \en Ns Oo +|- Oc Ns Ic \&[ Ns Ar name Ns Ic \&]
21377888c61dSFranco FichtnerInterpolate the number register
21387888c61dSFranco Fichtner.Ar name .
21397888c61dSFranco FichtnerFor short names, there are variants
214054ba9607SSascha Wildner.Ic \en Ns Ar c
21417888c61dSFranco Fichtnerand
214254ba9607SSascha Wildner.Ic \en( Ns Ar cc .
214354ba9607SSascha WildnerIf the optional sign is specified,
214454ba9607SSascha Wildnerthe register is first incremented or decremented by the
214554ba9607SSascha Wildner.Ar stepsize
214654ba9607SSascha Wildnerthat was specified in the relevant
214754ba9607SSascha Wildner.Ic \&nr
214854ba9607SSascha Wildnerrequest, and the changed value is interpolated.
214954ba9607SSascha Wildner.It Ic \eO Ns Ar digit , Ic \eO[5 Ns arguments Ns Ic \&]
215054ba9607SSascha WildnerSuppress output.
215154ba9607SSascha WildnerThis is a groff extension and currently unsupported.
215254ba9607SSascha WildnerWith an argument of
215354ba9607SSascha Wildner.Ic 1 , 2 , 3 ,
215454ba9607SSascha Wildneror
215554ba9607SSascha Wildner.Ic 4 ,
215654ba9607SSascha Wildnerit is ignored.
215754ba9607SSascha Wildner.It Ic \eo\(aq Ns Ar string Ns Ic \(aq
215854ba9607SSascha WildnerOverstrike, writing all the characters contained in the
215954ba9607SSascha Wildner.Ar string
216054ba9607SSascha Wildnerto the same output position.
216154ba9607SSascha WildnerIn terminal and HTML output modes,
216254ba9607SSascha Wildneronly the last one of the characters is visible.
216354ba9607SSascha Wildner.It Ic \ep
216454ba9607SSascha WildnerBreak the output line at the end of the current word.
216554ba9607SSascha Wildner.It Ic \eR\(aq Ns Ar name Oo +|- Oc Ns Ar number Ns Ic \(aq
21667888c61dSFranco FichtnerSet number register; ignored by
21677888c61dSFranco Fichtner.Xr mandoc 1 .
216854ba9607SSascha Wildner.It Ic \er
216954ba9607SSascha WildnerMove up by one line; ignored by
217054ba9607SSascha Wildner.Xr mandoc 1 .
217154ba9607SSascha Wildner.It Ic \eS\(aq Ns Ar number Ns Ic \(aq
21727888c61dSFranco FichtnerSlant output; ignored by
21737888c61dSFranco Fichtner.Xr mandoc 1 .
217454ba9607SSascha Wildner.It Ic \es\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq
21757888c61dSFranco FichtnerChange point size; ignored by
21767888c61dSFranco Fichtner.Xr mandoc 1 .
21777888c61dSFranco FichtnerAlternative forms
217854ba9607SSascha Wildner.Ic \es Ns Oo +|- Oc Ns Ar n ,
217954ba9607SSascha Wildner.Ic \es Ns Oo +|- Oc Ns Ic \(aq Ns Ar number Ns Ic \(aq ,
218054ba9607SSascha Wildner.Ic \es[ Ns Oo +|- Oc Ns Ar number Ns Ic \&] ,
21817888c61dSFranco Fichtnerand
218254ba9607SSascha Wildner.Ic \es Ns Oo +|- Oc Ns Ic \&[ Ns Ar number Ns Ic \&]
21837888c61dSFranco Fichtnerare also parsed and ignored.
218454ba9607SSascha Wildner.It Ic \et
21857888c61dSFranco FichtnerHorizontal tab; ignored by
21867888c61dSFranco Fichtner.Xr mandoc 1 .
218754ba9607SSascha Wildner.It Ic \eu
21887888c61dSFranco FichtnerMove up by half a line; ignored by
21897888c61dSFranco Fichtner.Xr mandoc 1 .
219054ba9607SSascha Wildner.It Ic \eV[ Ns Ar name Ns Ic \&]
21917888c61dSFranco FichtnerInterpolate an environment variable; ignored by
21927888c61dSFranco Fichtner.Xr mandoc 1 .
21937888c61dSFranco FichtnerFor short names, there are variants
219454ba9607SSascha Wildner.Ic \eV Ns Ar c
21957888c61dSFranco Fichtnerand
219654ba9607SSascha Wildner.Ic \eV( Ns Ar cc .
219754ba9607SSascha Wildner.It Ic \ev\(aq Ns Ar number Ns Ic \(aq
21987888c61dSFranco FichtnerVertical motion; ignored by
21997888c61dSFranco Fichtner.Xr mandoc 1 .
220054ba9607SSascha Wildner.It Ic \ew\(aq Ns Ar string Ns Ic \(aq
22017888c61dSFranco FichtnerInterpolate the width of the
2202070c62a6SFranco Fichtner.Ar string .
2203070c62a6SFranco FichtnerThe
2204070c62a6SFranco Fichtner.Xr mandoc 1
2205070c62a6SFranco Fichtnerimplementation assumes that after expansion of user-defined strings, the
2206070c62a6SFranco Fichtner.Ar string
2207070c62a6SFranco Fichtneronly contains normal characters, no escape sequences, and that each
2208070c62a6SFranco Fichtnercharacter has a width of 24 basic units.
220954ba9607SSascha Wildner.It Ic \eX\(aq Ns Ar string Ns Ic \(aq
22107888c61dSFranco FichtnerOutput
22117888c61dSFranco Fichtner.Ar string
22127888c61dSFranco Fichtneras device control function; ignored in nroff mode and by
22137888c61dSFranco Fichtner.Xr mandoc 1 .
221454ba9607SSascha Wildner.It Ic \ex\(aq Ns Ar number Ns Ic \(aq
22157888c61dSFranco FichtnerExtra line space function; ignored by
22167888c61dSFranco Fichtner.Xr mandoc 1 .
221754ba9607SSascha Wildner.It Ic \eY[ Ns Ar name Ns Ic \&]
22187888c61dSFranco FichtnerOutput a string as a device control function; ignored in nroff mode and by
22197888c61dSFranco Fichtner.Xr mandoc 1 .
22207888c61dSFranco FichtnerFor short names, there are variants
222154ba9607SSascha Wildner.Ic \eY Ns Ar c
22227888c61dSFranco Fichtnerand
222354ba9607SSascha Wildner.Ic \eY( Ns Ar cc .
222454ba9607SSascha Wildner.It Ic \eZ\(aq Ns Ar string Ns Ic \(aq
22257888c61dSFranco FichtnerPrint
22267888c61dSFranco Fichtner.Ar string
22277888c61dSFranco Fichtnerwith zero width and height; ignored by
22287888c61dSFranco Fichtner.Xr mandoc 1 .
222954ba9607SSascha Wildner.It Ic \ez
223054ba9607SSascha WildnerOutput the next character without advancing the cursor position.
223154ba9607SSascha Wildner.El
223280387638SSascha Wildner.Sh COMPATIBILITY
223354ba9607SSascha WildnerThe
223454ba9607SSascha Wildner.Xr mandoc 1
223554ba9607SSascha Wildnerimplementation of the
223680387638SSascha Wildner.Nm
223754ba9607SSascha Wildnerlanguage is incomplete.
223854ba9607SSascha WildnerMajor unimplemented features include:
223980387638SSascha Wildner.Pp
224080387638SSascha Wildner.Bl -dash -compact
224180387638SSascha Wildner.It
224254ba9607SSascha WildnerFor security reasons,
224354ba9607SSascha Wildner.Xr mandoc 1
224454ba9607SSascha Wildnernever reads or writes external files except via
224554ba9607SSascha Wildner.Ic \&so
224654ba9607SSascha Wildnerrequests with safe relative paths.
224754ba9607SSascha Wildner.It
224854ba9607SSascha WildnerThere is no automatic hyphenation, no adjustment to the right margin,
224954ba9607SSascha Wildnerand very limited support for centering; the output is always set flush-left.
225054ba9607SSascha Wildner.It
225154ba9607SSascha WildnerSupport for setting tabulator and leader characters is missing,
225254ba9607SSascha Wildnerand support for manually changing indentation is limited.
225360e1e752SSascha Wildner.It
225480387638SSascha WildnerThe
225554ba9607SSascha Wildner.Sq u
225654ba9607SSascha Wildnerscaling unit is the default terminal unit.
225754ba9607SSascha WildnerIn traditional troff systems, this unit changes depending on the
225854ba9607SSascha Wildneroutput media.
225980387638SSascha Wildner.It
226054ba9607SSascha WildnerWidth measurements are implemented in a crude way
226154ba9607SSascha Wildnerand often yield wrong results.
226254ba9607SSascha WildnerSupport for explicit movement requests and escapes is limited.
226354ba9607SSascha Wildner.It
226454ba9607SSascha WildnerThere is no concept of output pages, no support for floats,
226554ba9607SSascha Wildnergraphics drawing, and picture inclusion;
226654ba9607SSascha Wildnerterminal output is always continuous.
226754ba9607SSascha Wildner.It
226854ba9607SSascha WildnerRequests regarding color, font families, font sizes,
226954ba9607SSascha Wildnerand glyph manipulation are ignored.
227054ba9607SSascha WildnerFont support is very limited.
227154ba9607SSascha WildnerKerning is not implemented, and no ligatures are produced.
227280387638SSascha Wildner.It
227380387638SSascha WildnerThe
227454ba9607SSascha Wildner.Qq \(aq
227554ba9607SSascha Wildnermacro control character does not suppress output line breaks.
227654ba9607SSascha Wildner.It
227754ba9607SSascha WildnerDiversions and environments are not implemented,
227854ba9607SSascha Wildnerand support for traps is very incomplete.
227954ba9607SSascha Wildner.It
228054ba9607SSascha WildnerUse of macros is not supported inside
228154ba9607SSascha Wildner.Xr tbl 7
228254ba9607SSascha Wildnercode.
228380387638SSascha Wildner.El
228454ba9607SSascha Wildner.Pp
228554ba9607SSascha WildnerThe special semantics of the
228654ba9607SSascha Wildner.Cm nS
2287*99db7d0eSSascha Wildnernumber register is an idiosyncrasy of
228854ba9607SSascha Wildner.Ox
228954ba9607SSascha Wildnermanuals and not supported by other
229054ba9607SSascha Wildner.Xr mdoc 7
229154ba9607SSascha Wildnerimplementations.
229280387638SSascha Wildner.Sh SEE ALSO
229380387638SSascha Wildner.Xr mandoc 1 ,
229460e1e752SSascha Wildner.Xr eqn 7 ,
229580387638SSascha Wildner.Xr man 7 ,
229680387638SSascha Wildner.Xr mandoc_char 7 ,
229780387638SSascha Wildner.Xr mdoc 7 ,
229880387638SSascha Wildner.Xr tbl 7
229980387638SSascha Wildner.Rs
230080387638SSascha Wildner.%A Joseph F. Ossanna
230180387638SSascha Wildner.%A Brian W. Kernighan
230280387638SSascha Wildner.%I AT&T Bell Laboratories
230380387638SSascha Wildner.%T Troff User's Manual
230480387638SSascha Wildner.%R Computing Science Technical Report
230580387638SSascha Wildner.%N 54
230680387638SSascha Wildner.%C Murray Hill, New Jersey
230780387638SSascha Wildner.%D 1976 and 1992
230880387638SSascha Wildner.%U http://www.kohala.com/start/troff/cstr54.ps
230980387638SSascha Wildner.Re
231080387638SSascha Wildner.Rs
231180387638SSascha Wildner.%A Joseph F. Ossanna
231280387638SSascha Wildner.%A Brian W. Kernighan
231380387638SSascha Wildner.%A Gunnar Ritter
231480387638SSascha Wildner.%T Heirloom Documentation Tools Nroff/Troff User's Manual
231580387638SSascha Wildner.%D September 17, 2007
231680387638SSascha Wildner.%U http://heirloom.sourceforge.net/doctools/troff.pdf
231780387638SSascha Wildner.Re
231880387638SSascha Wildner.Sh HISTORY
231936342e81SSascha WildnerThe RUNOFF typesetting system, whose input forms the basis for
232080387638SSascha Wildner.Nm ,
232136342e81SSascha Wildnerwas written in MAD and FAP for the CTSS operating system by Jerome E.
232236342e81SSascha WildnerSaltzer in 1964.
232336342e81SSascha WildnerDoug McIlroy rewrote it in BCPL in 1969, renaming it
232436342e81SSascha Wildner.Nm .
232536342e81SSascha WildnerDennis M. Ritchie rewrote McIlroy's
232636342e81SSascha Wildner.Nm
232736342e81SSascha Wildnerin PDP-11 assembly for
232836342e81SSascha Wildner.At v1 ,
232936342e81SSascha WildnerJoseph F. Ossanna improved roff and renamed it nroff
233036342e81SSascha Wildnerfor
233136342e81SSascha Wildner.At v2 ,
233236342e81SSascha Wildnerthen ported nroff to C as troff, which Brian W. Kernighan released with
233336342e81SSascha Wildner.At v7 .
2334*99db7d0eSSascha WildnerIn 1989, James Clark re-implemented troff in C++, naming it groff.
233580387638SSascha Wildner.Sh AUTHORS
233680387638SSascha Wildner.An -nosplit
233736342e81SSascha WildnerThis
233880387638SSascha Wildner.Nm
233980387638SSascha Wildnerreference was written by
2340f88b6c16SFranco Fichtner.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
234180387638SSascha Wildnerand
2342f88b6c16SFranco Fichtner.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2343