version 1.22, 2011/01/04 15:02:00 |
version 1.114, 2019/07/15 19:20:30 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> |
.\" Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org> |
.\" |
.\" |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" purpose with or without fee is hereby granted, provided that the above |
.\" purpose with or without fee is hereby granted, provided that the above |
|
|
The |
The |
.Nm roff |
.Nm roff |
language is a general purpose text formatting language. |
language is a general purpose text formatting language. |
In particular, it serves as the basis for the |
Since traditional implementations of the |
.Xr mdoc 7 |
.Xr mdoc 7 |
and |
and |
.Xr man 7 |
.Xr man 7 |
manual formatting macro languages. |
manual formatting languages are based on it, |
This manual describes the subset of the |
many real-world manuals use small numbers of |
.Nm |
.Nm |
language accepted by the |
requests and escape sequences intermixed with their |
|
.Xr mdoc 7 |
|
or |
|
.Xr man 7 |
|
code. |
|
To properly format such manuals, the |
.Xr mandoc 1 |
.Xr mandoc 1 |
utility. |
utility supports a subset of |
|
.Nm |
|
requests and escapes. |
|
Even though this manual page lists all |
|
.Nm |
|
requests and escape sequences, it only contains partial information |
|
about requests not supported by |
|
.Xr mandoc 1 |
|
and about language features that do not matter for manual pages. |
|
For complete |
|
.Nm |
|
manuals, consult the |
|
.Sx SEE ALSO |
|
section. |
.Pp |
.Pp |
Input lines beginning with the control characters |
Input lines beginning with the control character |
.Sq \&. |
.Sq \&. |
or |
|
.Sq \(aq |
|
are parsed for requests and macros. |
are parsed for requests and macros. |
These define the document structure, change the processing state |
Such lines are called |
and manipulate the formatting. |
.Dq request lines |
Some requests and macros also produce formatted output, |
or |
while others do not. |
.Dq macro lines , |
|
respectively. |
|
Requests change the processing state and manipulate the formatting; |
|
some macros also define the document structure and produce formatted |
|
output. |
|
The single quote |
|
.Pq Qq \(aq |
|
is accepted as an alternative control character, |
|
treated by |
|
.Xr mandoc 1 |
|
just like |
|
.Ql \&. |
.Pp |
.Pp |
All other input lines provide free-form text to be printed; |
Lines not beginning with control characters are called |
the formatting of free-form text depends on the respective |
.Dq text lines . |
processing context. |
They provide free-form text to be printed; the formatting of the text |
|
depends on the respective processing context. |
.Sh LANGUAGE SYNTAX |
.Sh LANGUAGE SYNTAX |
.Nm |
.Nm |
documents may contain only graphable 7-bit ASCII characters, the space |
documents may contain only graphable 7-bit ASCII characters, the space |
character, and, in certain circumstances, the tab character. |
character, and, in certain circumstances, the tab character. |
To produce other characters in the output, use the escape sequences |
The backslash character |
documented in the |
.Sq \e |
|
indicates the start of an escape sequence, used for example for |
|
.Sx Comments |
|
and |
|
.Sx Special Characters . |
|
For a complete listing of escape sequences, consult the |
|
.Sx ESCAPE SEQUENCE REFERENCE |
|
below. |
|
.Ss Comments |
|
Text following an escaped double-quote |
|
.Sq \e\(dq , |
|
whether in a request, macro, or text line, is ignored to the end of the line. |
|
A request line beginning with a control character and comment escape |
|
.Sq \&.\e\(dq |
|
is also ignored. |
|
Furthermore, request lines with only a control character and optional |
|
trailing whitespace are stripped from input. |
|
.Pp |
|
Examples: |
|
.Bd -literal -offset indent -compact |
|
\&.\e\(dq This is a comment line. |
|
\&.\e\(dq The next line is ignored: |
|
\&. |
|
\&.Sh EXAMPLES \e\(dq This is a comment, too. |
|
\&example text \e\(dq And so is this. |
|
.Ed |
|
.Ss Special Characters |
|
Special characters are used to encode special glyphs and are rendered |
|
differently across output media. |
|
They may occur in request, macro, and text lines. |
|
Sequences begin with the escape character |
|
.Sq \e |
|
followed by either an open-parenthesis |
|
.Sq \&( |
|
for two-character sequences; an open-bracket |
|
.Sq \&[ |
|
for n-character sequences (terminated at a close-bracket |
|
.Sq \&] ) ; |
|
or a single one character sequence. |
|
.Pp |
|
Examples: |
|
.Bl -tag -width Ds -offset indent -compact |
|
.It Li \e(em |
|
Two-letter em dash escape. |
|
.It Li \ee |
|
One-letter backslash escape. |
|
.El |
|
.Pp |
|
See |
.Xr mandoc_char 7 |
.Xr mandoc_char 7 |
manual. |
for a complete list. |
|
.Ss Font Selection |
|
In |
|
.Xr mdoc 7 |
|
and |
|
.Xr man 7 |
|
documents, fonts are usually selected with macros. |
|
The |
|
.Ic \ef |
|
escape sequence and the |
|
.Ic \&ft |
|
request can be used to manually change the font, |
|
but this is not recommended in |
|
.Xr mdoc 7 |
|
documents. |
|
Such manual font changes are overridden by many subsequent macros. |
.Pp |
.Pp |
All manuals must have |
The following fonts are supported: |
.Ux |
.Pp |
line terminators. |
.Bl -tag -width CW -offset indent -compact |
|
.It Cm B |
|
Bold font. |
|
.It Cm BI |
|
A font that is both bold and italic. |
|
.It Cm CB |
|
Bold constant width font. |
|
Same as |
|
.Cm B |
|
in terminal output. |
|
.It Cm CI |
|
Italic constant width font. |
|
Same as |
|
.Cm I |
|
in terminal output. |
|
.It Cm CR |
|
Regular constant width font. |
|
Same as |
|
.Cm R |
|
in terminal output. |
|
.It Cm CW |
|
An alias for |
|
.Cm CR . |
|
.It Cm I |
|
Italic font. |
|
.It Cm P |
|
Return to the previous font. |
|
If a macro caused a font change since the last |
|
.Ic \ef |
|
eascape sequence or |
|
.Ic \&ft |
|
request, this returns to the font before the last font change in |
|
the macro rather than to the font before the last manual font change. |
|
.It Cm R |
|
Roman font. |
|
This is the default font. |
|
.It Cm 1 |
|
An alias for |
|
.Cm R . |
|
.It Cm 2 |
|
An alias for |
|
.Cm I . |
|
.It Cm 3 |
|
An alias for |
|
.Cm B . |
|
.It Cm 4 |
|
An alias for |
|
.Cm BI . |
|
.El |
|
.Pp |
|
Examples: |
|
.Bl -tag -width Ds -offset indent -compact |
|
.It Li \efBbold\efR |
|
Write in \fBbold\fP, then switch to regular font mode. |
|
.It Li \efIitalic\efP |
|
Write in \fIitalic\fP, then return to previous font mode. |
|
.It Li \ef(BIbold italic\efP |
|
Write in \f(BIbold italic\fP, then return to previous font mode. |
|
.El |
|
.Ss Whitespace |
|
Whitespace consists of the space character. |
|
In text lines, whitespace is preserved within a line. |
|
In request and macro lines, whitespace delimits arguments and is discarded. |
|
.Pp |
|
Unescaped trailing spaces are stripped from text line input unless in a |
|
literal context. |
|
In general, trailing whitespace on any input line is discouraged for |
|
reasons of portability. |
|
In the rare case that a space character is needed at the end of an |
|
input line, it may be forced by |
|
.Sq \e\ \e& . |
|
.Pp |
|
Literal space characters can be produced in the output |
|
using escape sequences. |
|
In macro lines, they can also be included in arguments using quotation; see |
|
.Sx MACRO SYNTAX |
|
for details. |
|
.Pp |
|
Blank text lines, which may include whitespace, are only permitted |
|
within literal contexts. |
|
If the first character of a text line is a space, that line is printed |
|
with a leading newline. |
|
.Ss Scaling Widths |
|
Many requests and macros support scaled widths for their arguments. |
|
The syntax for a scaled width is |
|
.Sq Li [+-]?[0-9]*.[0-9]*[:unit:] , |
|
where a decimal must be preceded or followed by at least one digit. |
|
.Pp |
|
The following scaling units are accepted: |
|
.Pp |
|
.Bl -tag -width Ds -offset indent -compact |
|
.It c |
|
centimetre |
|
.It i |
|
inch |
|
.It P |
|
pica (1/6 inch) |
|
.It p |
|
point (1/72 inch) |
|
.It f |
|
scale |
|
.Sq u |
|
by 65536 |
|
.It v |
|
default vertical span |
|
.It m |
|
width of rendered |
|
.Sq m |
|
.Pq em |
|
character |
|
.It n |
|
width of rendered |
|
.Sq n |
|
.Pq en |
|
character |
|
.It u |
|
default horizontal span for the terminal |
|
.It M |
|
mini-em (1/100 em) |
|
.El |
|
.Pp |
|
Using anything other than |
|
.Sq m , |
|
.Sq n , |
|
or |
|
.Sq v |
|
is necessarily non-portable across output media. |
|
See |
|
.Sx COMPATIBILITY . |
|
.Pp |
|
If a scaling unit is not provided, the numerical value is interpreted |
|
under the default rules of |
|
.Sq v |
|
for vertical spaces and |
|
.Sq u |
|
for horizontal ones. |
|
.Pp |
|
Examples: |
|
.Bl -tag -width ".Bl -tag -width 2i" -offset indent -compact |
|
.It Li \&.Bl -tag -width 2i |
|
two-inch tagged list indentation in |
|
.Xr mdoc 7 |
|
.It Li \&.HP 2i |
|
two-inch tagged list indentation in |
|
.Xr man 7 |
|
.It Li \&.sp 2v |
|
two vertical spaces |
|
.El |
|
.Ss Sentence Spacing |
|
Each sentence should terminate at the end of an input line. |
|
By doing this, a formatter will be able to apply the proper amount of |
|
spacing after the end of sentence (unescaped) period, exclamation mark, |
|
or question mark followed by zero or more non-sentence closing |
|
delimiters |
|
.Po |
|
.Sq \&) , |
|
.Sq \&] , |
|
.Sq \&' , |
|
.Sq \&" |
|
.Pc . |
|
.Pp |
|
The proper spacing is also intelligently preserved if a sentence ends at |
|
the boundary of a macro line. |
|
.Pp |
|
If an input line happens to end with a period, exclamation or question |
|
mark that isn't the end of a sentence, append a zero-width space |
|
.Pq Sq \e& . |
|
.Pp |
|
Examples: |
|
.Bd -literal -offset indent -compact |
|
Do not end sentences mid-line like this. Instead, |
|
end a sentence like this. |
|
A macro would end like this: |
|
\&.Xr mandoc 1 \&. |
|
An abbreviation at the end of an input line needs escaping, e.g.\e& |
|
like this. |
|
.Ed |
.Sh REQUEST SYNTAX |
.Sh REQUEST SYNTAX |
A request or macro line consists of: |
A request or macro line consists of: |
.Pp |
.Pp |
Line 86 Thus, the following request lines are all equivalent: |
|
Line 353 Thus, the following request lines are all equivalent: |
|
\&.ig end |
\&.ig end |
\&. ig end |
\&. ig end |
.Ed |
.Ed |
|
.Sh MACRO SYNTAX |
|
Macros are provided by the |
|
.Xr mdoc 7 |
|
and |
|
.Xr man 7 |
|
languages and can be defined by the |
|
.Ic \&de |
|
request. |
|
When called, they follow the same syntax as requests, except that |
|
macro arguments may optionally be quoted by enclosing them |
|
in double quote characters |
|
.Pq Sq \(dq . |
|
Quoted text, even if it contains whitespace or would cause |
|
a macro invocation when unquoted, is always considered literal text. |
|
Inside quoted text, pairs of double quote characters |
|
.Pq Sq Qq |
|
resolve to single double quote characters. |
|
.Pp |
|
To be recognised as the beginning of a quoted argument, the opening |
|
quote character must be preceded by a space character. |
|
A quoted argument extends to the next double quote character that is not |
|
part of a pair, or to the end of the input line, whichever comes earlier. |
|
Leaving out the terminating double quote character at the end of the line |
|
is discouraged. |
|
For clarity, if more arguments follow on the same input line, |
|
it is recommended to follow the terminating double quote character |
|
by a space character; in case the next character after the terminating |
|
double quote character is anything else, it is regarded as the beginning |
|
of the next, unquoted argument. |
|
.Pp |
|
Both in quoted and unquoted arguments, pairs of backslashes |
|
.Pq Sq \e\e |
|
resolve to single backslashes. |
|
In unquoted arguments, space characters can alternatively be included |
|
by preceding them with a backslash |
|
.Pq Sq \e\~ , |
|
but quoting is usually better for clarity. |
|
.Pp |
|
Examples: |
|
.Bl -tag -width Ds -offset indent -compact |
|
.It Li .Fn strlen \(dqconst char *s\(dq |
|
Group arguments |
|
.Qq const char *s |
|
into one function argument. |
|
If unspecified, |
|
.Qq const , |
|
.Qq char , |
|
and |
|
.Qq *s |
|
would be considered separate arguments. |
|
.It Li .Op \(dqFl a\(dq |
|
Consider |
|
.Qq \&Fl a |
|
as literal text instead of a flag macro. |
|
.El |
.Sh REQUEST REFERENCE |
.Sh REQUEST REFERENCE |
The |
The |
.Xr mandoc 1 |
.Xr mandoc 1 |
.Nm |
.Nm |
parser recognizes the following requests. |
parser recognises the following requests. |
Note that the |
For requests marked as "ignored" or "unsupported", any arguments are |
.Nm |
ignored, and the number of arguments is not checked. |
language defines many more requests not implemented in |
.Bl -tag -width Ds |
.Xr mandoc 1 . |
.It Ic \&ab Op Ar message |
.Ss \&ad |
Abort processing. |
Set line adjustment mode. |
Currently unsupported. |
This line-scoped request is intended to have one argument to select |
.It Ic \&ad Op Cm b | c | l | n | r |
normal, left, right, or center adjustment for subsequent text. |
Set line adjustment mode for subsequent text. |
Currently, it is ignored including its arguments, |
Currently ignored. |
and the number of arguments is not checked. |
.It Ic \&af Ar registername format |
.Ss \&am |
Assign an output format to a number register. |
|
Currently ignored. |
|
.It Ic \&aln Ar newname oldname |
|
Create an alias for a number register. |
|
Currently unsupported. |
|
.It Ic \&als Ar newname oldname |
|
Create an alias for a request, string, macro, or diversion. |
|
.It Ic \&am Ar macroname Op Ar endmacro |
Append to a macro definition. |
Append to a macro definition. |
The syntax of this request is the same as that of |
The syntax of this request is the same as that of |
.Sx \&de . |
.Ic \&de . |
It is currently ignored by |
.It Ic \&am1 Ar macroname Op Ar endmacro |
.Xr mandoc 1 , |
|
as are its children. |
|
.Ss \&ami |
|
Append to a macro definition, specifying the macro name indirectly. |
|
The syntax of this request is the same as that of |
|
.Sx \&dei . |
|
It is currently ignored by |
|
.Xr mandoc 1 , |
|
as are its children. |
|
.Ss \&am1 |
|
Append to a macro definition, switching roff compatibility mode off |
Append to a macro definition, switching roff compatibility mode off |
during macro execution. |
during macro execution (groff extension). |
The syntax of this request is the same as that of |
The syntax of this request is the same as that of |
.Sx \&de1 . |
.Ic \&de1 . |
It is currently ignored by |
Since |
.Xr mandoc 1 , |
.Xr mandoc 1 |
as are its children. |
does not implement |
.Ss \&de |
.Nm |
|
compatibility mode at all, it handles this request as an alias for |
|
.Ic \&am . |
|
.It Ic \&ami Ar macrostring Op Ar endstring |
|
Append to a macro definition, specifying the macro name indirectly |
|
(groff extension). |
|
The syntax of this request is the same as that of |
|
.Ic \&dei . |
|
.It Ic \&ami1 Ar macrostring Op Ar endstring |
|
Append to a macro definition, specifying the macro name indirectly |
|
and switching roff compatibility mode off during macro execution |
|
(groff extension). |
|
The syntax of this request is the same as that of |
|
.Ic \&dei1 . |
|
Since |
|
.Xr mandoc 1 |
|
does not implement |
|
.Nm |
|
compatibility mode at all, it handles this request as an alias for |
|
.Ic \&ami . |
|
.It Ic \&as Ar stringname Op Ar string |
|
Append to a user-defined string. |
|
The syntax of this request is the same as that of |
|
.Ic \&ds . |
|
If a user-defined string with the specified name does not yet exist, |
|
it is set to the empty string before appending. |
|
.It Ic \&as1 Ar stringname Op Ar string |
|
Append to a user-defined string, switching roff compatibility mode off |
|
during macro execution (groff extension). |
|
The syntax of this request is the same as that of |
|
.Ic \&ds1 . |
|
Since |
|
.Xr mandoc 1 |
|
does not implement |
|
.Nm |
|
compatibility mode at all, it handles this request as an alias for |
|
.Ic \&as . |
|
.It Ic \&asciify Ar divname |
|
Fully unformat a diversion. |
|
Currently unsupported. |
|
.It Ic \&backtrace |
|
Print a backtrace of the input stack. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&bd Ar font Oo Ar curfont Oc Op Ar offset |
|
Artificially embolden by repeated printing with small shifts. |
|
Currently ignored. |
|
.It Ic \&bleedat Ar left top width height |
|
Set the BleedBox page parameter for PDF generation. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&blm Ar macroname |
|
Set a blank line trap. |
|
Currently unsupported. |
|
.It Ic \&box Ar divname |
|
Begin a diversion without including a partially filled line. |
|
Currently unsupported. |
|
.It Ic \&boxa Ar divname |
|
Add to a diversion without including a partially filled line. |
|
Currently unsupported. |
|
.It Ic \&bp Oo Cm + Ns | Ns Cm - Oc Ns Ar pagenumber |
|
Begin a new page. |
|
Currently ignored. |
|
.It Ic \&BP Ar source height width position offset flags label |
|
Define a frame and place a picture in it. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&br |
|
Break the output line. |
|
.It Ic \&break |
|
Break out of the innermost |
|
.Ic \&while |
|
loop. |
|
.It Ic \&breakchar Ar char ... |
|
Optional line break characters. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&brnl Ar N |
|
Break output line after the next |
|
.Ar N |
|
input lines. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&brp |
|
Break and spread output line. |
|
Currently, this is implemented as an alias for |
|
.Ic \&br . |
|
.It Ic \&brpnl Ar N |
|
Break and spread output line after the next |
|
.Ar N |
|
input lines. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&c2 Op Ar char |
|
Change the no-break control character. |
|
Currently unsupported. |
|
.It Ic \&cc Op Ar char |
|
Change the control character. |
|
If |
|
.Ar char |
|
is not specified, the control character is reset to |
|
.Sq \&. . |
|
Trailing characters are ignored. |
|
.It Ic \&ce Op Ar N |
|
Center the next |
|
.Ar N |
|
input lines without filling. |
|
.Ar N |
|
defaults to 1. |
|
An argument of 0 or less ends centering. |
|
Currently, high level macros abort centering. |
|
.It Ic \&cf Ar filename |
|
Output the contents of a file. |
|
Ignored because insecure. |
|
.It Ic \&cflags Ar flags char ... |
|
Set character flags. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&ch Ar macroname Op Ar dist |
|
Change a trap location. |
|
Currently ignored. |
|
.It Ic \&char Ar glyph Op Ar string |
|
Define or redefine the ASCII character or character escape sequence |
|
.Ar glyph |
|
to be rendered as |
|
.Ar string , |
|
which can be empty. |
|
Only partially supported in |
|
.Xr mandoc 1 ; |
|
may interact incorrectly with |
|
.Ic \&tr . |
|
.It Ic \&chop Ar stringname |
|
Remove the last character from a macro, string, or diversion. |
|
Currently unsupported. |
|
.It Ic \&class Ar classname char ... |
|
Define a character class. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&close Ar streamname |
|
Close an open file. |
|
Ignored because insecure. |
|
.It Ic \&CL Ar color text |
|
Print text in color. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&color Op Cm 1 | 0 |
|
Activate or deactivate colors. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&composite Ar from to |
|
Define a name component for composite glyph names. |
|
This is a groff extension and currently unsupported. |
|
.It Ic \&continue |
|
Immediately start the next iteration of a |
|
.Ic \&while |
|
loop. |
|
Currently unsupported. |
|
.It Ic \&cp Op Cm 1 | 0 |
|
Switch |
|
.Nm |
|
compatibility mode on or off. |
|
Currently ignored. |
|
.It Ic \&cropat Ar left top width height |
|
Set the CropBox page parameter for PDF generation. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&cs Ar font Op Ar width Op Ar emsize |
|
Constant character spacing mode. |
|
Currently ignored. |
|
.It Ic \&cu Op Ar N |
|
Underline next |
|
.Ar N |
|
input lines including whitespace. |
|
Currently ignored. |
|
.It Ic \&da Ar divname |
|
Append to a diversion. |
|
Currently unsupported. |
|
.It Ic \&dch Ar macroname Op Ar dist |
|
Change a trap location in the current diversion. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&de Ar macroname Op Ar endmacro |
Define a |
Define a |
.Nm |
.Nm |
macro. |
macro. |
Its syntax can be either |
Its syntax can be either |
.Bd -literal -offset indent |
.Bd -literal -offset indent |
.Pf . Cm \&de Ar name |
.Pf . Ic \&de Ar macroname |
.Ar macro definition |
.Ar definition |
\&.. |
\&.. |
.Ed |
.Ed |
.Pp |
.Pp |
or |
or |
.Bd -literal -offset indent |
.Bd -literal -offset indent |
.Pf . Cm \&de Ar name Ar end |
.Pf . Ic \&de Ar macroname Ar endmacro |
.Ar macro definition |
.Ar definition |
.Pf . Ar end |
.Pf . Ar endmacro |
.Ed |
.Ed |
.Pp |
.Pp |
Both forms define or redefine the macro |
Both forms define or redefine the macro |
.Ar name |
.Ar macroname |
to represent the |
to represent the |
.Ar macro definition , |
.Ar definition , |
which may consist of one or more input lines, including the newline |
which may consist of one or more input lines, including the newline |
characters terminating each line, optionally containing calls to |
characters terminating each line, optionally containing calls to |
.Nm |
.Nm |
|
|
macros, whichever applies to the document in question. |
macros, whichever applies to the document in question. |
.Pp |
.Pp |
Specifying a custom |
Specifying a custom |
.Ar end |
.Ar endmacro |
macro works in the same way as for |
works in the same way as for |
.Sx \&ig ; |
.Ic \&ig ; |
namely, the call to |
namely, the call to |
.Sq Pf . Ar end |
.Sq Pf . Ar endmacro |
first ends the |
first ends the |
.Ar macro definition , |
.Ar definition , |
and after that, it is also evaluated as a |
and after that, it is also evaluated as a |
.Nm |
.Nm |
request or |
request or |
Line 172 macro, but not as a high-level macro. |
|
Line 660 macro, but not as a high-level macro. |
|
.Pp |
.Pp |
The macro can be invoked later using the syntax |
The macro can be invoked later using the syntax |
.Pp |
.Pp |
.D1 Pf . Ar name Op Ar argument Op Ar argument ... |
.D1 Pf . Ar macroname Op Ar argument Op Ar argument ... |
.Pp |
.Pp |
Arguments are separated by blank characters and can be quoted |
Regarding argument parsing, see |
using double-quotes |
.Sx MACRO SYNTAX |
.Pq Sq \(dq |
above. |
to allow inclusion of blank characters into arguments. |
|
To include the double-quote character into a quoted argument, |
|
escape it from ending the argument by doubling it. |
|
.Pp |
.Pp |
The line invoking the macro will be replaced |
The line invoking the macro will be replaced |
in the input stream by the |
in the input stream by the |
.Ar macro definition , |
.Ar definition , |
replacing all occurrences of |
replacing all occurrences of |
.No \e\e$ Ns Ar N , |
.No \e\e$ Ns Ar N , |
where |
where |
|
|
.D1 \efI\e^XtFree\e^\efP. |
.D1 \efI\e^XtFree\e^\efP. |
.Pp |
.Pp |
in the input stream, and thus in the output: \fI\^XtFree\^\fP. |
in the input stream, and thus in the output: \fI\^XtFree\^\fP. |
|
Each occurrence of \e\e$* is replaced with all the arguments, |
|
joined together with single space characters. |
|
The variant \e\e$@ is similar, except that each argument is |
|
individually quoted. |
.Pp |
.Pp |
Since macros and user-defined strings share a common string table, |
Since macros and user-defined strings share a common string table, |
defining a macro |
defining a macro |
.Ar name |
.Ar macroname |
clobbers the user-defined string |
clobbers the user-defined string |
.Ar name , |
.Ar macroname , |
and the |
and the |
.Ar macro definition |
.Ar definition |
can also be printed using the |
can also be printed using the |
.Sq \e* |
.Sq \e* |
string interpolation syntax described below |
string interpolation syntax described below |
.Sx ds , |
.Ic ds , |
but this is rarely useful because every macro definition contains at least |
but this is rarely useful because every macro definition contains at least |
one explicit newline character. |
one explicit newline character. |
.Pp |
.Pp |
In order to prevent endless recursion, both groff and |
In order to prevent endless recursion, both groff and |
.Xr mandoc 1 |
.Xr mandoc 1 |
limit the stack depth for expanding macros and strings |
limit the stack depth for expanding macros and strings |
to a large, but finite number. |
to a large, but finite number, and |
Do not rely on the exact value of this limit. |
.Xr mandoc 1 |
.Ss \&dei |
also limits the length of the expanded input line. |
|
Do not rely on the exact values of these limits. |
|
.It Ic \&de1 Ar macroname Op Ar endmacro |
Define a |
Define a |
.Nm |
.Nm |
macro, specifying the macro name indirectly. |
macro that will be executed with |
|
.Nm |
|
compatibility mode switched off during macro execution. |
|
This is a groff extension. |
|
Since |
|
.Xr mandoc 1 |
|
does not implement |
|
.Nm |
|
compatibility mode at all, it handles this request as an alias for |
|
.Ic \&de . |
|
.It Ic \&defcolor Ar newname scheme component ... |
|
Define a color name. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&dei Ar macrostring Op Ar endstring |
|
Define a |
|
.Nm |
|
macro, specifying the macro name indirectly (groff extension). |
The syntax of this request is the same as that of |
The syntax of this request is the same as that of |
.Sx \&de . |
.Ic \&de . |
It is currently ignored by |
The effect is the same as: |
.Xr mandoc 1 , |
.Pp |
as are its children. |
.D1 Pf . Cm \&de No \e* Ns Bo Ar macrostring Bc Op \e* Ns Bq Ar endstring |
.Ss \&de1 |
.It Ic \&dei1 Ar macrostring Op Ar endstring |
Define a |
Define a |
.Nm |
.Nm |
macro that will be executed with |
macro that will be executed with |
.Nm |
.Nm |
compatibility mode switched off during macro execution. |
compatibility mode switched off during macro execution, |
This is a GNU extension not available in traditional |
specifying the macro name indirectly (groff extension). |
.Nm |
|
implementations and not even in older versions of groff. |
|
Since |
Since |
.Xr mandoc 1 |
.Xr mandoc 1 |
does not implement |
does not implement |
.Nm |
.Nm |
compatibility mode at all, it handles this request as an alias for |
compatibility mode at all, it handles this request as an alias for |
.Sx \&de . |
.Ic \&dei . |
.Ss \&ds |
.It Ic \&device Ar string ... |
|
.It Ic \&devicem Ar stringname |
|
These two requests only make sense with the groff-specific intermediate |
|
output format and are unsupported. |
|
.It Ic \&di Ar divname |
|
Begin a diversion. |
|
Currently unsupported. |
|
.It Ic \&do Ar command Op Ar argument ... |
|
Execute |
|
.Nm |
|
request or macro line with compatibility mode disabled. |
|
Currently unsupported. |
|
.It Ic \&ds Ar stringname Op Oo \(dq Oc Ns Ar string |
Define a user-defined string. |
Define a user-defined string. |
Its syntax is as follows: |
|
.Pp |
|
.D1 Pf . Cm \&ds Ar name Oo \(dq Oc Ns Ar string |
|
.Pp |
|
The |
The |
.Ar name |
.Ar stringname |
and |
and |
.Ar string |
.Ar string |
arguments are space-separated. |
arguments are space-separated. |
Line 269 including whitespace and double-quote characters, even |
|
Line 782 including whitespace and double-quote characters, even |
|
The |
The |
.Ar string |
.Ar string |
can be interpolated into subsequent text by using |
can be interpolated into subsequent text by using |
.No \e* Ns Bq Ar name |
.No \e* Ns Bq Ar stringname |
for a |
for a |
.Ar name |
.Ar stringname |
of arbitrary length, or \e*(NN or \e*N if the length of |
of arbitrary length, or \e*(NN or \e*N if the length of |
.Ar name |
.Ar stringname |
is two or one characters, respectively. |
is two or one characters, respectively. |
Interpolation can be prevented by escaping the leading backslash; |
Interpolation can be prevented by escaping the leading backslash; |
that is, an asterisk preceded by an even number of backslashes |
that is, an asterisk preceded by an even number of backslashes |
Line 281 does not trigger string interpolation. |
|
Line 794 does not trigger string interpolation. |
|
.Pp |
.Pp |
Since user-defined strings and macros share a common string table, |
Since user-defined strings and macros share a common string table, |
defining a string |
defining a string |
.Ar name |
.Ar stringname |
clobbers the macro |
clobbers the macro |
.Ar name , |
.Ar stringname , |
and the |
and the |
.Ar name |
.Ar stringname |
used for defining a string can also be invoked as a macro, |
used for defining a string can also be invoked as a macro, |
in which case the following input line will be appended to the |
in which case the following input line will be appended to the |
.Ar string , |
.Ar string , |
|
|
.Ed |
.Ed |
.Pp |
.Pp |
invokes the |
invokes the |
.Cm SH |
.Ic SH |
macro when used in a |
macro when used in a |
.Xr man 7 |
.Xr man 7 |
document. |
document. |
Such abuse is of course strongly discouraged. |
Such abuse is of course strongly discouraged. |
.Ss \&el |
.It Ic \&ds1 Ar stringname Op Oo \(dq Oc Ns Ar string |
|
Define a user-defined string that will be expanded with |
|
.Nm |
|
compatibility mode switched off during string expansion. |
|
This is a groff extension. |
|
Since |
|
.Xr mandoc 1 |
|
does not implement |
|
.Nm |
|
compatibility mode at all, it handles this request as an alias for |
|
.Ic \&ds . |
|
.It Ic \&dwh Ar dist macroname |
|
Set a location trap in the current diversion. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&dt Op Ar dist macroname |
|
Set a trap within a diversion. |
|
Currently unsupported. |
|
.It Ic \&ec Op Ar char |
|
Enable the escape mechanism and change the escape character. |
The |
The |
.Qq else |
.Ar char |
|
argument defaults to the backslash |
|
.Pq Sq \e . |
|
.It Ic \&ecr |
|
Restore the escape character. |
|
Currently unsupported. |
|
.It Ic \&ecs |
|
Save the escape character. |
|
Currently unsupported. |
|
.It Ic \&el Ar body |
|
The |
|
.Dq else |
half of an if/else conditional. |
half of an if/else conditional. |
Pops a result off the stack of conditional evaluations pushed by |
Pops a result off the stack of conditional evaluations pushed by |
.Sx \&ie |
.Ic \&ie |
and uses it as its conditional. |
and uses it as its conditional. |
If no stack entries are present (e.g., due to no prior |
If no stack entries are present (e.g., due to no prior |
.Sx \&ie |
.Ic \&ie |
calls) |
calls) |
then false is assumed. |
then false is assumed. |
The syntax of this request is similar to |
The syntax of this request is similar to |
.Sx \&if |
.Ic \&if |
except that the conditional is missing. |
except that the conditional is missing. |
.Ss \&hy |
.It Ic \&em Ar macroname |
|
Set a trap at the end of input. |
|
Currently unsupported. |
|
.It Ic \&EN |
|
End an equation block. |
|
See |
|
.Ic \&EQ . |
|
.It Ic \&eo |
|
Disable the escape mechanism completely. |
|
.It Ic \&EP |
|
End a picture started by |
|
.Ic \&BP . |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&EQ |
|
Begin an equation block. |
|
See |
|
.Xr eqn 7 |
|
for a description of the equation language. |
|
.It Ic \&errprint Ar message |
|
Print a string like an error message. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&ev Op Ar envname |
|
Switch to another environment. |
|
Currently unsupported. |
|
.It Ic \&evc Op Ar envname |
|
Copy an environment into the current environment. |
|
Currently unsupported. |
|
.It Ic \&ex |
|
Abort processing and exit. |
|
Currently unsupported. |
|
.It Ic \&fallback Ar curfont font ... |
|
Select the fallback sequence for a font. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&fam Op Ar familyname |
|
Change the font family. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&fc Op Ar delimchar Op Ar padchar |
|
Define a delimiting and a padding character for fields. |
|
Currently unsupported. |
|
.It Ic \&fchar Ar glyphname Op Ar string |
|
Define a fallback glyph. |
|
Currently unsupported. |
|
.It Ic \&fcolor Ar colorname |
|
Set the fill color for \eD objects. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&fdeferlig Ar font string ... |
|
Defer ligature building. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&feature Cm + Ns | Ns Cm - Ns Ar name |
|
Enable or disable an OpenType feature. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&fi |
|
Break the output line and switch to fill mode, |
|
which is active by default but can be ended with the |
|
.Ic \&nf |
|
request. |
|
In fill mode, input from subsequent input lines is added to |
|
the same output line until the next word no longer fits, |
|
at which point the output line is broken. |
|
This request is implied by the |
|
.Xr mdoc 7 |
|
.Ic \&Sh |
|
macro and by the |
|
.Xr man 7 |
|
.Ic \&SH , |
|
.Ic \&SS , |
|
and |
|
.Ic \&EE |
|
macros. |
|
.It Ic \&fkern Ar font minkern |
|
Control the use of kerning tables for a font. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&fl |
|
Flush output. |
|
Currently ignored. |
|
.It Ic \&flig Ar font string char ... |
|
Define ligatures. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&fp Ar position font Op Ar filename |
|
Assign font position. |
|
Currently ignored. |
|
.It Ic \&fps Ar mapname ... |
|
Mount a font with a special character map. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&fschar Ar font glyphname Op Ar string |
|
Define a font-specific fallback glyph. |
|
This is a groff extension and currently unsupported. |
|
.It Ic \&fspacewidth Ar font Op Ar afmunits |
|
Set a font-specific width for the space character. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&fspecial Ar curfont Op Ar font ... |
|
Conditionally define a special font. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&ft Op Ar font |
|
Change the font; see |
|
.Sx Font Selection . |
|
The |
|
.Ar font |
|
argument defaults to |
|
.Cm P . |
|
.It Ic \&ftr Ar newname Op Ar oldname |
|
Translate font name. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&fzoom Ar font Op Ar permille |
|
Zoom font size. |
|
Currently ignored. |
|
.It Ic \&gcolor Op Ar colorname |
|
Set glyph color. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&hc Op Ar char |
|
Set the hyphenation character. |
|
Currently ignored. |
|
.It Ic \&hcode Ar char code ... |
|
Set hyphenation codes of characters. |
|
Currently ignored. |
|
.It Ic \&hidechar Ar font char ... |
|
Hide characters in a font. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&hla Ar language |
|
Set hyphenation language. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&hlm Op Ar number |
|
Set maximum number of consecutive hyphenated lines. |
|
Currently ignored. |
|
.It Ic \&hpf Ar filename |
|
Load hyphenation pattern file. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&hpfa Ar filename |
|
Load hyphenation pattern file, appending to the current patterns. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&hpfcode Ar code code ... |
|
Define mapping values for character codes in hyphenation patterns. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&hw Ar word ... |
|
Specify hyphenation points in words. |
|
Currently ignored. |
|
.It Ic \&hy Op Ar mode |
Set automatic hyphenation mode. |
Set automatic hyphenation mode. |
This line-scoped request is currently ignored. |
Currently ignored. |
.Ss \&ie |
.It Ic \&hylang Ar language |
|
Set hyphenation language. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&hylen Ar nchar |
|
Minimum word length for hyphenation. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&hym Op Ar length |
|
Set hyphenation margin. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&hypp Ar penalty ... |
|
Define hyphenation penalties. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&hys Op Ar length |
|
Set hyphenation space. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&ie Ar condition body |
The |
The |
.Qq if |
.Dq if |
half of an if/else conditional. |
half of an if/else conditional. |
The result of the conditional is pushed into a stack used by subsequent |
The result of the conditional is pushed into a stack used by subsequent |
invocations of |
invocations of |
.Sx \&el , |
.Ic \&el , |
which may be separated by any intervening input (or not exist at all). |
which may be separated by any intervening input (or not exist at all). |
Its syntax is equivalent to |
Its syntax is equivalent to |
.Sx \&if . |
.Ic \&if . |
.Ss \&if |
.It Ic \&if Ar condition body |
Begins a conditional. |
Begin a conditional. |
Right now, the conditional evaluates to true |
This request can also be written as follows: |
if and only if it starts with the letter |
.Bd -unfilled -offset indent |
.Sy n , |
.Pf . Ic \&if Ar condition No \e{ Ns Ar body |
indicating processing in nroff style as opposed to troff style. |
.Ar body ... Ns \e} |
|
.Ed |
|
.Bd -unfilled -offset indent |
|
.Pf . Ic \&if Ar condition No \e{\e |
|
.Ar body ... |
|
.Pf . No \e} |
|
.Ed |
|
.Pp |
|
The |
|
.Ar condition |
|
is a boolean expression. |
|
Currently, |
|
.Xr mandoc 1 |
|
supports the following subset of roff conditionals: |
|
.Bl -bullet |
|
.It |
|
If |
|
.Sq \&! |
|
is prefixed to |
|
.Ar condition , |
|
it is logically inverted. |
|
.It |
|
If the first character of |
|
.Ar condition |
|
is |
|
.Sq n |
|
.Pq nroff mode |
|
or |
|
.Sq o |
|
.Pq odd page , |
|
it evaluates to true, and the |
|
.Ar body |
|
starts with the next character. |
|
.It |
|
If the first character of |
|
.Ar condition |
|
is |
|
.Sq e |
|
.Pq even page , |
|
.Sq t |
|
.Pq troff mode , |
|
or |
|
.Sq v |
|
.Pq vroff mode , |
|
it evaluates to false, and the |
|
.Ar body |
|
starts with the next character. |
|
.It |
|
If the first character of |
|
.Ar condition |
|
is |
|
.Sq c |
|
.Pq character available , |
|
it evaluates to true if the following character is an ASCII character |
|
or a valid character escape sequence, or to false otherwise. |
|
The |
|
.Ar body |
|
starts with the character following that next character. |
|
.It |
|
If the first character of |
|
.Ar condition |
|
is |
|
.Sq d , |
|
it evaluates to true if the rest of |
|
.Ar condition |
|
is the name of an existing user defined macro or string; |
|
otherwise, it evaluates to false. |
|
.It |
|
If the first character of |
|
.Ar condition |
|
is |
|
.Sq r , |
|
it evaluates to true if the rest of |
|
.Ar condition |
|
is the name of an existing number register; |
|
otherwise, it evaluates to false. |
|
.It |
|
If the |
|
.Ar condition |
|
starts with a parenthesis or with an optionally signed |
|
integer number, it is evaluated according to the rules of |
|
.Sx Numerical expressions |
|
explained below. |
|
It evaluates to true if the result is positive, |
|
or to false if the result is zero or negative. |
|
.It |
|
Otherwise, the first character of |
|
.Ar condition |
|
is regarded as a delimiter and it evaluates to true if the string |
|
extending from its first to its second occurrence is equal to the |
|
string extending from its second to its third occurrence. |
|
.It |
|
If |
|
.Ar condition |
|
cannot be parsed, it evaluates to false. |
|
.El |
|
.Pp |
If a conditional is false, its children are not processed, but are |
If a conditional is false, its children are not processed, but are |
syntactically interpreted to preserve the integrity of the input |
syntactically interpreted to preserve the integrity of the input |
document. |
document. |
Line 355 will continue to syntactically interpret to the block |
|
Line 1144 will continue to syntactically interpret to the block |
|
conditional. |
conditional. |
Sub-conditionals, in this case, obviously inherit the truth value of |
Sub-conditionals, in this case, obviously inherit the truth value of |
the parent. |
the parent. |
This request has the following syntax: |
|
.Bd -literal -offset indent |
|
\&.if COND \e{\e |
|
BODY... |
|
\&.\e} |
|
.Ed |
|
.Bd -literal -offset indent |
|
\&.if COND \e{ BODY |
|
BODY... \e} |
|
.Ed |
|
.Bd -literal -offset indent |
|
\&.if COND \e{ BODY |
|
BODY... |
|
\&.\e} |
|
.Ed |
|
.Bd -literal -offset indent |
|
\&.if COND \e |
|
BODY |
|
.Ed |
|
.Pp |
.Pp |
COND is a conditional statement. |
If the |
roff allows for complicated conditionals; mandoc is much simpler. |
.Ar body |
At this time, mandoc supports only |
section is begun by an escaped brace |
.Sq n , |
|
evaluating to true; |
|
and |
|
.Sq t , |
|
.Sq e , |
|
and |
|
.Sq o , |
|
evaluating to false. |
|
All other invocations are read up to the next end of line or space and |
|
evaluate as false. |
|
.Pp |
|
If the BODY section is begun by an escaped brace |
|
.Sq \e{ , |
.Sq \e{ , |
scope continues until a closing-brace escape sequence |
scope continues until the end of the input line containing the |
.Sq \.\e} . |
matching closing-brace escape sequence |
If the BODY is not enclosed in braces, scope continues until |
.Sq \e} . |
the end of the line. |
If the |
If the COND is followed by a BODY on the same line, whether after a |
.Ar body |
brace or not, then requests and macros |
is not enclosed in braces, scope continues until the end of the line. |
|
If the |
|
.Ar condition |
|
is followed by a |
|
.Ar body |
|
on the same line, whether after a brace or not, then requests and macros |
.Em must |
.Em must |
begin with a control character. |
begin with a control character. |
It is generally more intuitive, in this case, to write |
It is generally more intuitive, in this case, to write |
.Bd -literal -offset indent |
.Bd -unfilled -offset indent |
\&.if COND \e{\e |
.Pf . Ic \&if Ar condition No \e{\e |
\&.foo |
.Pf . Ar request |
bar |
.Pf . No \e} |
\&.\e} |
|
.Ed |
.Ed |
.Pp |
.Pp |
than having the request or macro follow as |
than having the request or macro follow as |
.Pp |
.Pp |
.D1 \&.if COND \e{ .foo |
.D1 Pf . Ic \&if Ar condition Pf \e{. Ar request |
.Pp |
.Pp |
The scope of a conditional is always parsed, but only executed if the |
The scope of a conditional is always parsed, but only executed if the |
conditional evaluates to true. |
conditional evaluates to true. |
.Pp |
.Pp |
Note that text following an |
Note that the |
.Sq \&.\e} |
|
escape sequence is discarded. |
|
Furthermore, if an explicit closing sequence |
|
.Sq \e} |
.Sq \e} |
is specified in a free-form line, the entire line is accepted within the |
is converted into a zero-width escape sequence if not passed as a |
scope of the prior request, not only the text preceding the close, with the |
standalone macro |
|
.Sq \&.\e} . |
|
For example, |
|
.Pp |
|
.D1 \&.Fl a \e} b |
|
.Pp |
|
will result in |
.Sq \e} |
.Sq \e} |
collapsing into a zero-width space. |
being considered an argument of the |
.Ss \&ig |
.Sq \&Fl |
|
macro. |
|
.It Ic \&ig Op Ar endmacro |
Ignore input. |
Ignore input. |
Its syntax can be either |
Its syntax can be either |
.Bd -literal -offset indent |
.Bd -literal -offset indent |
Line 434 Its syntax can be either |
|
Line 1201 Its syntax can be either |
|
.Pp |
.Pp |
or |
or |
.Bd -literal -offset indent |
.Bd -literal -offset indent |
.Pf . Cm \&ig Ar end |
.Pf . Cm \&ig Ar endmacro |
.Ar ignored text |
.Ar ignored text |
.Pf . Ar end |
.Pf . Ar endmacro |
.Ed |
.Ed |
.Pp |
.Pp |
In the first case, input is ignored until a |
In the first case, input is ignored until a |
.Sq \&.. |
.Sq \&.. |
request is encountered on its own line. |
request is encountered on its own line. |
In the second case, input is ignored until the specified |
In the second case, input is ignored until the specified |
.Sq Pf . Ar end |
.Sq Pf . Ar endmacro |
macro is encountered. |
is encountered. |
Do not use the escape character |
Do not use the escape character |
.Sq \e |
.Sq \e |
anywhere in the definition of |
anywhere in the definition of |
.Ar end ; |
.Ar endmacro ; |
it would cause very strange behaviour. |
it would cause very strange behaviour. |
.Pp |
.Pp |
When the |
When the |
.Ar end |
.Ar endmacro |
macro is a roff request or a roff macro, like in |
is a roff request or a roff macro, like in |
.Pp |
.Pp |
.D1 \&.ig if |
.D1 \&.ig if |
.Pp |
.Pp |
the subsequent invocation of |
the subsequent invocation of |
.Sx \&if |
.Ic \&if |
will first terminate the |
will first terminate the |
.Ar ignored text , |
.Ar ignored text , |
then be invoked as usual. |
then be invoked as usual. |
Line 467 Otherwise, it only terminates the |
|
Line 1234 Otherwise, it only terminates the |
|
and arguments following it or the |
and arguments following it or the |
.Sq \&.. |
.Sq \&.. |
request are discarded. |
request are discarded. |
.Ss \&ne |
.It Ic \&in Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width |
|
Change indentation. |
|
See |
|
.Xr man 7 . |
|
Ignored in |
|
.Xr mdoc 7 . |
|
.It Ic \&index Ar register stringname substring |
|
Find a substring in a string. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&it Ar expression macro |
|
Set an input line trap. |
|
The named |
|
.Ar macro |
|
will be invoked after processing the number of input text lines |
|
specified by the numerical |
|
.Ar expression . |
|
While evaluating the |
|
.Ar expression , |
|
the unit suffixes described below |
|
.Sx Scaling Widths |
|
are ignored. |
|
.It Ic \&itc Ar expression macro |
|
Set an input line trap, not counting lines ending with \ec. |
|
Currently unsupported. |
|
.It Ic \&IX Ar class keystring |
|
To support the generation of a table of contents, |
|
.Xr pod2man 1 |
|
emits this user-defined macro, usually without defining it. |
|
To avoid reporting large numbers of spurious errors, |
|
.Xr mandoc 1 |
|
ignores it. |
|
.It Ic \&kern Op Cm 1 | 0 |
|
Switch kerning on or off. |
|
Currently ignored. |
|
.It Ic \&kernafter Ar font char ... afmunits ... |
|
Increase kerning after some characters. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&kernbefore Ar font char ... afmunits ... |
|
Increase kerning before some characters. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&kernpair Ar font char ... font char ... afmunits |
|
Add a kerning pair to the kerning table. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&lc Op Ar glyph |
|
Define a leader repetition character. |
|
Currently unsupported. |
|
.It Ic \&lc_ctype Ar localename |
|
Set the |
|
.Dv LC_CTYPE |
|
locale. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&lds Ar macroname string |
|
Define a local string. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&length Ar register string |
|
Count the number of input characters in a string. |
|
Currently unsupported. |
|
.It Ic \&letadj Ar lspmin lshmin letss lspmax lshmax |
|
Dynamic letter spacing and reshaping. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&lf Ar lineno Op Ar filename |
|
Change the line number for error messages. |
|
Ignored because insecure. |
|
.It Ic \&lg Op Cm 1 | 0 |
|
Switch the ligature mechanism on or off. |
|
Currently ignored. |
|
.It Ic \&lhang Ar font char ... afmunits |
|
Hang characters at left margin. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&linetabs Op Cm 1 | 0 |
|
Enable or disable line-tabs mode. |
|
This is a groff extension and currently unsupported. |
|
.It Ic \&ll Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width |
|
Change the output line length. |
|
If the |
|
.Ar width |
|
argument is omitted, the line length is reset to its previous value. |
|
The default setting for terminal output is 78n. |
|
If a sign is given, the line length is added to or subtracted from; |
|
otherwise, it is set to the provided value. |
|
Using this request in new manuals is discouraged for several reasons, |
|
among others because it overrides the |
|
.Xr mandoc 1 |
|
.Fl O Cm width |
|
command line option. |
|
.It Ic \&lnr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment |
|
Set local number register. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&lnrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar value Op Ar increment |
|
Set local floating-point register. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&lpfx Ar string |
|
Set a line prefix. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&ls Op Ar factor |
|
Set line spacing. |
|
It takes one integer argument specifying the vertical distance of |
|
subsequent output text lines measured in v units. |
|
Currently ignored. |
|
.It Ic \&lsm Ar macroname |
|
Set a leading spaces trap. |
|
This is a groff extension and currently unsupported. |
|
.It Ic \< Op Oo Cm + Ns | Ns Cm - Oc Ns Ar width |
|
Set title line length. |
|
Currently ignored. |
|
.It Ic \&mc Ar glyph Op Ar dist |
|
Print margin character in the right margin. |
|
The |
|
.Ar dist |
|
is currently ignored; instead, 1n is used. |
|
.It Ic \&mediasize Ar media |
|
Set the device media size. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&minss Ar width |
|
Set minimum word space. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&mk Op Ar register |
|
Mark vertical position. |
|
Currently ignored. |
|
.It Ic \&mso Ar filename |
|
Load a macro file using the search path. |
|
Ignored because insecure. |
|
.It Ic \&na |
|
Disable adjusting without changing the adjustment mode. |
|
Currently ignored. |
|
.It Ic \&ne Op Ar height |
Declare the need for the specified minimum vertical space |
Declare the need for the specified minimum vertical space |
before the next trap or the bottom of the page. |
before the next trap or the bottom of the page. |
This line-scoped request is currently ignored. |
Currently ignored. |
.Ss \&nh |
.It Ic \&nf |
|
Break the output line and switch to no-fill mode. |
|
Subsequent input lines are kept together on the same output line |
|
even when exceeding the right margin, |
|
and line breaks in subsequent input cause output line breaks. |
|
This request is implied by the |
|
.Xr mdoc 7 |
|
.Ic \&Bd Fl unfilled |
|
and |
|
.Ic \&Bd Fl literal |
|
macros and by the |
|
.Xr man 7 |
|
.Ic \&EX |
|
macro. |
|
The |
|
.Ic \&fi |
|
request switches back to the default fill mode. |
|
.It Ic \&nh |
Turn off automatic hyphenation mode. |
Turn off automatic hyphenation mode. |
This line-scoped request is currently ignored. |
Currently ignored. |
.Ss \&rm |
.It Ic \&nhychar Ar char ... |
Remove a request, macro or string. |
Define hyphenation-inhibiting characters. |
This request is intended to have one argument, |
This is a Heirloom extension and currently ignored. |
the name of the request, macro or string to be undefined. |
.It Ic \&nm Op Ar start Op Ar inc Op Ar space Op Ar indent |
Currently, it is ignored including its arguments, |
Print line numbers. |
and the number of arguments is not checked. |
Currently unsupported. |
.Ss \&nr |
.It Ic \&nn Op Ar number |
Define a register. |
Temporarily turn off line numbering. |
|
Currently unsupported. |
|
.It Ic \&nop Ar body |
|
Execute the rest of the input line as a request, macro, or text line, |
|
skipping the |
|
.Ic \&nop |
|
request and any space characters immediately following it. |
|
This is mostly used to indent text lines inside macro definitions. |
|
.It Ic \&nr Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression Op Ar stepsize |
|
Define or change a register. |
A register is an arbitrary string value that defines some sort of state, |
A register is an arbitrary string value that defines some sort of state, |
which influences parsing and/or formatting. |
which influences parsing and/or formatting. |
Its syntax is as follows: |
For the syntax of |
|
.Ar expression , |
|
see |
|
.Sx Numerical expressions |
|
below. |
|
If it is prefixed by a sign, the register will be |
|
incremented or decremented instead of assigned to. |
.Pp |
.Pp |
.D1 Pf \. Cm \&nr Ar name Ar value |
|
.Pp |
|
The |
The |
.Ar value |
.Ar stepsize |
may, at the moment, only be an integer. |
is used by the |
So far, only the following register |
.Ic \en+ |
.Ar name |
auto-increment feature. |
is recognised: |
It remains unchanged when omitted while changing an existing register, |
|
and it defaults to 0 when defining a new register. |
|
.Pp |
|
The following |
|
.Ar register |
|
is handled specially: |
.Bl -tag -width Ds |
.Bl -tag -width Ds |
.It Cm nS |
.It Cm nS |
If set to a positive integer value, certain |
If set to a positive integer value, certain |
|
Line 1436 section itself. |
|
Note that starting a new |
Note that starting a new |
.Xr mdoc 7 |
.Xr mdoc 7 |
section with the |
section with the |
.Cm \&Sh |
.Ic \&Sh |
macro will reset this register. |
macro will reset this register. |
.El |
.El |
.Ss \&so |
.It Xo |
|
.Ic \&nrf Ar register Oo Cm + Ns | Ns Cm - Oc Ns Ar expression |
|
.Op Ar increment |
|
.Xc |
|
Define or change a floating-point register. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&nroff |
|
Force nroff mode. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&ns |
|
Turn on no-space mode. |
|
Currently ignored. |
|
.It Ic \&nx Op Ar filename |
|
Abort processing of the current input file and process another one. |
|
Ignored because insecure. |
|
.It Ic \&open Ar stream file |
|
Open a file for writing. |
|
Ignored because insecure. |
|
.It Ic \&opena Ar stream file |
|
Open a file for appending. |
|
Ignored because insecure. |
|
.It Ic \&os |
|
Output saved vertical space. |
|
Currently ignored. |
|
.It Ic \&output Ar string |
|
Output directly to intermediate output. |
|
Not supported. |
|
.It Ic \&padj Op Cm 1 | 0 |
|
Globally control paragraph-at-once adjustment. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&papersize Ar media |
|
Set the paper size. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&pc Op Ar char |
|
Change the page number character. |
|
Currently ignored. |
|
.It Ic \&pev |
|
Print environments. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&pi Ar command |
|
Pipe output to a shell command. |
|
Ignored because insecure. |
|
.It Ic \&PI |
|
Low-level request used by |
|
.Ic \&BP . |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&pl Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height |
|
Change page length. |
|
Currently ignored. |
|
.It Ic \&pm |
|
Print names and sizes of macros, strings, and diversions |
|
to standard error output. |
|
Currently ignored. |
|
.It Ic \&pn Oo Cm + Ns | Ns Cm - Oc Ns Ar number |
|
Change the page number of the next page. |
|
Currently ignored. |
|
.It Ic \&pnr |
|
Print all number registers on standard error output. |
|
Currently ignored. |
|
.It Ic \&po Op Oo Cm + Ns | Ns Cm - Oc Ns Ar offset |
|
Set a horizontal page offset. |
|
If no argument is specified, the page offset is reverted to its |
|
previous value. |
|
If a sign is specified, the new page offset is calculated relative |
|
to the current one; otherwise, it is absolute. |
|
The argument follows the syntax of |
|
.Sx Scaling Widths |
|
and the default scaling unit is |
|
.Cm m . |
|
.It Ic \&ps Op Oo Cm + Ns | Ns Cm - Oc Ns size |
|
Change point size. |
|
Currently ignored. |
|
.It Ic \&psbb Ar filename |
|
Retrieve the bounding box of a PostScript file. |
|
Currently unsupported. |
|
.It Ic \&pshape Ar indent length ... |
|
Set a special shape for the current paragraph. |
|
This is a Heirloom extension and currently unsupported. |
|
.It Ic \&pso Ar command |
|
Include output of a shell command. |
|
Ignored because insecure. |
|
.It Ic \&ptr |
|
Print the names and positions of all traps on standard error output. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&pvs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height |
|
Change post-vertical spacing. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&rchar Ar glyph ... |
|
Remove glyph definitions. |
|
Currently unsupported. |
|
.It Ic \&rd Op Ar prompt Op Ar argument ... |
|
Read from standard input. |
|
Currently ignored. |
|
.It Ic \&recursionlimit Ar maxrec maxtail |
|
Set the maximum stack depth for recursive macros. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&return Op Ar twice |
|
Exit the presently executed macro and return to the caller. |
|
The argument is currently ignored. |
|
.It Ic \&rfschar Ar font glyph ... |
|
Remove font-specific fallback glyph definitions. |
|
Currently unsupported. |
|
.It Ic \&rhang Ar font char ... afmunits |
|
Hang characters at right margin. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&rj Op Ar N |
|
Justify the next |
|
.Ar N |
|
input lines to the right margin without filling. |
|
.Ar N |
|
defaults to 1. |
|
An argument of 0 or less ends right adjustment. |
|
.It Ic \&rm Ar macroname |
|
Remove a request, macro or string. |
|
.It Ic \&rn Ar oldname newname |
|
Rename a request, macro, diversion, or string. |
|
In |
|
.Xr mandoc 1 , |
|
user-defined macros, |
|
.Xr mdoc 7 |
|
and |
|
.Xr man 7 |
|
macros, and user-defined strings can be renamed, but renaming of |
|
predefined strings and of |
|
.Nm |
|
requests is not supported, and diversions are not implemented at all. |
|
.It Ic \&rnn Ar oldname newname |
|
Rename a number register. |
|
Currently unsupported. |
|
.It Ic \&rr Ar register |
|
Remove a register. |
|
.It Ic \&rs |
|
End no-space mode. |
|
Currently ignored. |
|
.It Ic \&rt Op Ar dist |
|
Return to marked vertical position. |
|
Currently ignored. |
|
.It Ic \&schar Ar glyph Op Ar string |
|
Define global fallback glyph. |
|
This is a groff extension and currently unsupported. |
|
.It Ic \&sentchar Ar char ... |
|
Define sentence-ending characters. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&shc Op Ar glyph |
|
Change the soft hyphen character. |
|
Currently ignored. |
|
.It Ic \&shift Op Ar number |
|
Shift macro arguments |
|
.Ar number |
|
times, by default once: \e\e$i becomes what \e\e$i+number was. |
|
Also decrement \en(.$ by |
|
.Ar number . |
|
.It Ic \&sizes Ar size ... |
|
Define permissible point sizes. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&so Ar filename |
Include a source file. |
Include a source file. |
Its syntax is as follows: |
The file is read and its contents processed as input in place of the |
.Pp |
.Ic \&so |
.D1 Pf \. Cm \&so Ar file |
|
.Pp |
|
The |
|
.Ar file |
|
will be read and its contents processed as input in place of the |
|
.Sq \&.so |
|
request line. |
request line. |
To avoid inadvertant inclusion of unrelated files, |
To avoid inadvertent inclusion of unrelated files, |
.Xr mandoc 1 |
.Xr mandoc 1 |
only accepts relative paths not containing the strings |
only accepts relative paths not containing the strings |
.Qq ../ |
.Qq ../ |
and |
and |
.Qq /.. . |
.Qq /.. . |
.Ss \&tr |
.Pp |
Output character translation. |
This request requires |
This request is intended to have one argument, |
.Xr man 1 |
consisting of an even number of characters. |
to change to the right directory before calling |
Currently, it is ignored including its arguments, |
.Xr mandoc 1 , |
and the number of arguments is not checked. |
per convention to the root of the manual tree. |
.Ss \&T& |
Typical usage looks like: |
|
.Pp |
|
.Dl \&.so man3/Xcursor.3 |
|
.Pp |
|
As the whole concept is rather fragile, the use of |
|
.Ic \&so |
|
is discouraged. |
|
Use |
|
.Xr ln 1 |
|
instead. |
|
.It Ic \&sp Op Ar height |
|
Break the output line and emit vertical space. |
|
The argument follows the syntax of |
|
.Sx Scaling Widths |
|
and defaults to one blank line |
|
.Pq Li 1v . |
|
.It Ic \&spacewidth Op Cm 1 | 0 |
|
Set the space width from the font metrics file. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&special Op Ar font ... |
|
Define a special font. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&spreadwarn Op Ar width |
|
Warn about wide spacing between words. |
|
Currently ignored. |
|
.It Ic \&ss Ar wordspace Op Ar sentencespace |
|
Set space character size. |
|
Currently ignored. |
|
.It Ic \&sty Ar position style |
|
Associate style with a font position. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&substring Ar stringname startpos Op Ar endpos |
|
Replace a user-defined string with a substring. |
|
Currently unsupported. |
|
.It Ic \&sv Op Ar height |
|
Save vertical space. |
|
Currently ignored. |
|
.It Ic \&sy Ar command |
|
Execute shell command. |
|
Ignored because insecure. |
|
.It Ic \&T& |
Re-start a table layout, retaining the options of the prior table |
Re-start a table layout, retaining the options of the prior table |
invocation. |
invocation. |
See |
See |
.Sx \&TS . |
.Ic \&TS . |
.Ss \&TE |
.It Ic \&ta Op Ar width ... Op Cm T Ar width ... |
|
Set tab stops. |
|
Each |
|
.Ar width |
|
argument follows the syntax of |
|
.Sx Scaling Widths . |
|
If prefixed by a plus sign, it is relative to the previous tab stop. |
|
The arguments after the |
|
.Cm T |
|
marker are used repeatedly as often as needed; for each reuse, |
|
they are taken relative to the last previously established tab stop. |
|
When |
|
.Ic \&ta |
|
is called without arguments, all tab stops are cleared. |
|
.It Ic \&tc Op Ar glyph |
|
Change tab repetition character. |
|
Currently unsupported. |
|
.It Ic \&TE |
End a table context. |
End a table context. |
See |
See |
.Sx \&TS . |
.Ic \&TS . |
.Ss \&TS |
.It Ic \&ti Oo Cm + Ns | Ns Cm - Oc Ns Ar width |
|
Break the output line and indent the next output line by |
|
.Ar width . |
|
If a sign is specified, the temporary indentation is calculated |
|
relative to the current indentation; otherwise, it is absolute. |
|
The argument follows the syntax of |
|
.Sx Scaling Widths |
|
and the default scaling unit is |
|
.Cm m . |
|
.It Ic \&tkf Ar font minps width1 maxps width2 |
|
Enable track kerning for a font. |
|
Currently ignored. |
|
.It Ic \&tl No \& Ap Ar left Ap Ar center Ap Ar right Ap |
|
Print a title line. |
|
Currently unsupported. |
|
.It Ic \&tm Ar string |
|
Print to standard error output. |
|
Currently ignored. |
|
.It Ic \&tm1 Ar string |
|
Print to standard error output, allowing leading blanks. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&tmc Ar string |
|
Print to standard error output without a trailing newline. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&tr Ar glyph glyph ... |
|
Output character translation. |
|
The first glyph in each pair is replaced by the second one. |
|
Character escapes can be used; for example, |
|
.Pp |
|
.Dl tr \e(xx\e(yy |
|
.Pp |
|
replaces all invocations of \e(xx with \e(yy. |
|
.It Ic \&track Ar font minps width1 maxps width2 |
|
Static letter space tracking. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&transchar Ar char ... |
|
Define transparent characters for sentence-ending. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&trf Ar filename |
|
Output the contents of a file, disallowing invalid characters. |
|
This is a groff extension and ignored because insecure. |
|
.It Ic \&trimat Ar left top width height |
|
Set the TrimBox page parameter for PDF generation. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&trin Ar glyph glyph ... |
|
Output character translation, ignored by |
|
.Ic \&asciify . |
|
Currently unsupported. |
|
.It Ic \&trnt Ar glyph glyph ... |
|
Output character translation, ignored by \e!. |
|
Currently unsupported. |
|
.It Ic \&troff |
|
Force troff mode. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&TS |
Begin a table, which formats input in aligned rows and columns. |
Begin a table, which formats input in aligned rows and columns. |
A table consists of an optional single line of table options terminated |
See |
by a semicolon, followed by one or more lines of layout specification |
.Xr tbl 7 |
terminated by a period, then table data. |
for a description of the tbl language. |
A table block may also include |
.It Ic \&uf Ar font |
.Nm , |
Globally set the underline font. |
.Xr mdoc 7 , |
Currently ignored. |
|
.It Ic \&ul Op Ar N |
|
Underline next |
|
.Ar N |
|
input lines. |
|
Currently ignored. |
|
.It Ic \&unformat Ar divname |
|
Unformat spaces and tabs in a diversion. |
|
Currently unsupported. |
|
.It Ic \&unwatch Ar macroname |
|
Disable notification for string or macro. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&unwatchn Ar register |
|
Disable notification for register. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&vpt Op Cm 1 | 0 |
|
Enable or disable vertical position traps. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&vs Op Oo Cm + Ns | Ns Cm - Oc Ns Ar height |
|
Change vertical spacing. |
|
Currently ignored. |
|
.It Ic \&warn Ar flags |
|
Set warning level. |
|
Currently ignored. |
|
.It Ic \&warnscale Ar si |
|
Set the scaling indicator used in warnings. |
|
This is a groff extension and currently ignored. |
|
.It Ic \&watch Ar macroname |
|
Notify on change of string or macro. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&watchlength Ar maxlength |
|
On change, report the contents of macros and strings |
|
up to the specified length. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&watchn Ar register |
|
Notify on change of register. |
|
This is a Heirloom extension and currently ignored. |
|
.It Ic \&wh Ar dist Op Ar macroname |
|
Set a page location trap. |
|
Currently unsupported. |
|
.It Ic \&while Ar condition body |
|
Repeated execution while a |
|
.Ar condition |
|
is true, with syntax similar to |
|
.Ic \&if . |
|
Currently implemented with two restrictions: cannot nest, |
|
and each loop must start and end in the same scope. |
|
.It Ic \&write Oo \(dq Oc Ns Ar string |
|
Write to an open file. |
|
Ignored because insecure. |
|
.It Ic \&writec Oo \(dq Oc Ns Ar string |
|
Write to an open file without appending a newline. |
|
Ignored because insecure. |
|
.It Ic \&writem Ar macroname |
|
Write macro or string to an open file. |
|
Ignored because insecure. |
|
.It Ic \&xflag Ar level |
|
Set the extension level. |
|
This is a Heirloom extension and currently ignored. |
|
.El |
|
.Ss Numerical expressions |
|
The |
|
.Ic \&nr , |
|
.Ic \&if , |
|
and |
|
.Ic \&ie |
|
requests accept integer numerical expressions as arguments. |
|
These are always evaluated using the C |
|
.Vt int |
|
type; integer overflow works the same way as in the C language. |
|
Numbers consist of an arbitrary number of digits |
|
.Sq 0 |
|
to |
|
.Sq 9 |
|
prefixed by an optional sign |
|
.Sq + |
or |
or |
.Xr man 7 |
.Sq - . |
macros. |
Each number may be followed by one optional scaling unit described below |
Example: |
.Sx Scaling Widths . |
|
The following equations hold: |
.Bd -literal -offset indent |
.Bd -literal -offset indent |
\&.TS |
1i = 6v = 6P = 10m = 10n = 72p = 1000M = 240u = 240 |
box tab(:); \e" Table-wide options. |
254c = 100i = 24000u = 24000 |
c | c \e" Layout for first line. |
1f = 65536u = 65536 |
| c | c. \e" Layout for all subsequent lines. |
|
1:2 \e" Data... |
|
3:4 |
|
\&.TE |
|
.Ed |
.Ed |
.Pp |
.Pp |
Table data is |
The following binary operators are implemented. |
.Em pre-processed , |
Unless otherwise stated, they behave as in the C language: |
that is, data rows are parsed then inserted into the underlying stream |
|
of input data. |
|
This allows data rows to be interspersed by arbitrary macros, such as |
|
.Bd -literal -offset indent |
|
\&.TS |
|
tab(:); |
|
c c c. |
|
1:2:3 |
|
\&.Ao |
|
3:2:1 |
|
\&.Ac |
|
\&.TE |
|
.Ed |
|
.Pp |
.Pp |
in the case of |
.Bl -tag -width 2n -compact |
|
.It Ic + |
|
addition |
|
.It Ic - |
|
subtraction |
|
.It Ic * |
|
multiplication |
|
.It Ic / |
|
division |
|
.It Ic % |
|
remainder of division |
|
.It Ic < |
|
less than |
|
.It Ic > |
|
greater than |
|
.It Ic == |
|
equal to |
|
.It Ic = |
|
equal to, same effect as |
|
.Ic == |
|
(this differs from C) |
|
.It Ic <= |
|
less than or equal to |
|
.It Ic >= |
|
greater than or equal to |
|
.It Ic <> |
|
not equal to (corresponds to C |
|
.Ic != ; |
|
this one is of limited portability, it is supported by Heirloom roff, |
|
but not by groff) |
|
.It Ic & |
|
logical and (corresponds to C |
|
.Ic && ) |
|
.It Ic \&: |
|
logical or (corresponds to C |
|
.Ic || ) |
|
.It Ic <? |
|
minimum (not available in C) |
|
.It Ic >? |
|
maximum (not available in C) |
|
.El |
|
.Pp |
|
There is no concept of precedence; evaluation proceeds from left to right, |
|
except when subexpressions are enclosed in parentheses. |
|
Inside parentheses, whitespace is ignored. |
|
.Sh ESCAPE SEQUENCE REFERENCE |
|
The |
|
.Xr mandoc 1 |
|
.Nm |
|
parser recognises the following escape sequences. |
|
In |
.Xr mdoc 7 |
.Xr mdoc 7 |
or |
and |
.Bd -literal -offset indent |
.Xr man 7 |
\&.TS |
documents, using escape sequences is discouraged except for those |
tab(:); |
described in the |
c c c. |
.Sx LANGUAGE SYNTAX |
\&.ds ab 2 |
section above. |
1:\e*(ab:3 |
|
\&.I |
|
3:2:1 |
|
\&.TE |
|
.Ed |
|
.Pp |
.Pp |
in the case of |
A backslash followed by any character not listed here |
.Xr man 7 . |
simply prints that character itself. |
.Pp |
|
The first line of a table consists of its options, which consists of |
|
space-separated keys and modifiers terminated by a semicolon. |
|
If the first line does not have a terminating semicolon, it is assumed |
|
that no options are specified and instead a layout is processed. |
|
Some options accept arguments enclosed by paranthesis. |
|
The following case-insensitive options are available: |
|
.Bl -tag -width Ds |
.Bl -tag -width Ds |
.It Cm center |
.It Ic \e<newline> |
This option is not supported by |
A backslash at the end of an input line can be used to continue the |
|
logical input line on the next physical input line, joining the text |
|
on both lines together as if it were on a single input line. |
|
.It Ic \e<space> |
|
The escape sequence backslash-space |
|
.Pq Sq \e\ \& |
|
is an unpaddable space-sized non-breaking space character; see |
|
.Sx Whitespace |
|
and |
|
.Xr mandoc_char 7 . |
|
.It Ic \e! |
|
Embed text up to and including the end of the input line into the |
|
current diversion or into intermediate output without interpreting |
|
requests, macros, and escapes. |
|
Currently unsupported. |
|
.It Ic \e\(dq |
|
The rest of the input line is treated as |
|
.Sx Comments . |
|
.It Ic \e# |
|
Line continuation with comment. |
|
Discard the rest of the physical input line and continue the logical |
|
input line on the next physical input line, joining the text on |
|
both lines together as if it were on a single input line. |
|
This is a groff extension. |
|
.It Ic \e$ Ns Ar arg |
|
Macro argument expansion, see |
|
.Ic \&de . |
|
.It Ic \e% |
|
Hyphenation allowed at this point of the word; ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
This may also be invoked with |
.It Ic \e& |
.Cm centre . |
Non-printing zero-width character, |
.It Cm delim |
often used for various kinds of escaping; see |
Accepts a two-character argument. |
.Sx Whitespace , |
This option is not supported by |
.Xr mandoc_char 7 , |
|
and the |
|
.Dq MACRO SYNTAX |
|
and |
|
.Dq Delimiters |
|
sections in |
|
.Xr mdoc 7 . |
|
.It Ic \e\(aq |
|
Acute accent special character; use |
|
.Ic \e(aa |
|
instead. |
|
.It Ic \e( Ns Ar cc |
|
.Sx Special Characters |
|
with two-letter names, see |
|
.Xr mandoc_char 7 . |
|
.It Ic \e) |
|
Zero-width space transparent to end-of-sentence detection; |
|
ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm expand |
.It Ic \e*[ Ns Ar name Ns Ic \&] |
This option is not supported by |
Interpolate the string with the |
|
.Ar name . |
|
For short names, there are variants |
|
.Ic \e* Ns Ar c |
|
and |
|
.Ic \e*( Ns Ar cc . |
|
.Pp |
|
One string is predefined on the |
|
.Nm |
|
language level: |
|
.Ic \e*(.T |
|
expands to the name of the output device, |
|
for example ascii, utf8, ps, pdf, html, or markdown. |
|
.Pp |
|
Macro sets traditionally predefine additional strings which are not |
|
portable and differ across implementations. |
|
Those supported by |
|
.Xr mandoc 1 |
|
are listed in |
|
.Xr mandoc_char 7 . |
|
.Pp |
|
Strings can be defined, changed, and deleted with the |
|
.Ic \&ds , |
|
.Ic \&as , |
|
and |
|
.Ic \&rm |
|
requests. |
|
.It Ic \e, |
|
Left italic correction (groff extension); ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm box |
.It Ic \e- |
Draw a single-line box around the table. |
Special character |
This may also be invoked with |
.Dq mathematical minus sign ; |
.Cm frame . |
see |
.It Cm doublebox |
.Xr mandoc_char 7 |
Draw a double-line box around the table. |
for details. |
This may also be invoked with |
.It Ic \e/ |
.Cm doubleframe . |
Right italic correction (groff extension); ignored by |
.It Cm allbox |
|
This option is not supported by |
|
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm tab |
.It Ic \e: |
Accepts a single-character argument. |
Breaking the line is allowed at this point of the word |
This character is used a delimiter between data cells, which otherwise |
without inserting a hyphen. |
defaults to the tab character. |
.It Ic \e? |
.It Cm linesize |
Embed the text up to the next |
Accepts a natural number (all digits). |
.Ic \e? |
This option is not supported by |
into the current diversion without interpreting requests, macros, |
|
and escapes. |
|
This is a groff extension and currently unsupported. |
|
.It Ic \e[ Ns Ar name Ns Ic \&] |
|
.Sx Special Characters |
|
with names of arbitrary length, see |
|
.Xr mandoc_char 7 . |
|
.It Ic \e^ |
|
One-twelfth em half-narrow space character, effectively zero-width in |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm nokeep |
.It Ic \e_ |
This option is not supported by |
Underline special character; use |
|
.Ic \e(ul |
|
instead. |
|
.It Ic \e` |
|
Grave accent special character; use |
|
.Ic \e(ga |
|
instead. |
|
.It Ic \e{ |
|
Begin conditional input; see |
|
.Ic \&if . |
|
.It Ic \e\(ba |
|
One-sixth em narrow space character, effectively zero-width in |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm decimalpoint |
.It Ic \e} |
Accepts a single-character argument. |
End conditional input; see |
This character will be used as the decimal point with the |
.Ic \&if . |
.Cm n |
.It Ic \e~ |
layout key. |
Paddable non-breaking space character. |
This option is not supported by |
.It Ic \e0 |
|
Digit width space character. |
|
.It Ic \eA\(aq Ns Ar string Ns Ic \(aq |
|
Anchor definition; ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm nospaces |
.It Ic \ea |
This option is not supported by |
Leader character; ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.El |
.It Ic \eB\(aq Ns Ar string Ns Ic \(aq |
.Pp |
Interpolate |
The table layout follows table options, except in the case of |
.Sq 1 |
.Sx \&T& , |
if |
where it immediately procedes invocation. |
.Ar string |
Layout specifies how data rows are displayed on output. |
conforms to the syntax of |
Each layout line corresponds to a line of data; the last layout line |
.Sx Numerical expressions |
applies to all remaining data lines. |
explained above or |
Layout lines may also be separated by a comma. |
.Sq 0 |
Each layout cell consists of one of the following case-insensitive keys: |
otherwise. |
.Bl -tag -width Ds |
.It Ic \eb\(aq Ns Ar string Ns Ic \(aq |
.It Cm c |
Bracket building function; ignored by |
Centre a literal string within its column. |
|
.It Cm r |
|
Right-justify a literal string within its column. |
|
.It Cm l |
|
Left-justify a literal string within its column. |
|
.It Cm n |
|
Justify a number around its decimal point. |
|
If the decimal point is not found on the number, it's assumed to trail |
|
the number. |
|
.It Cm s |
|
This option is not supported by |
|
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm a |
.It Ic \eC\(aq Ns Ar name Ns Ic \(aq |
This option is not supported by |
.Sx Special Characters |
|
with names of arbitrary length. |
|
.It Ic \ec |
|
When encountered at the end of an input text line, |
|
the next input text line is considered to continue that line, |
|
even if there are request or macro lines in between. |
|
No whitespace is inserted. |
|
.It Ic \eD\(aq Ns Ar string Ns Ic \(aq |
|
Draw graphics function; ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm ^ |
.It Ic \ed |
This option is not supported by |
Move down by half a line; ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.It Cm \- |
.It Ic \eE |
Replace the data cell (its contents will be lost) with a single |
Escape character intended to not be interpreted in copy mode. |
horizontal line. |
In |
This may also be invoked with |
.Xr mandoc 1 , |
.Cm _ . |
it currently does the same as |
.It Cm = |
.Ic \e |
Replace the data cell (its contents will be lost) with a double |
itself. |
horizontal line. |
.It Ic \ee |
.It Cm \(ba |
Backslash special character. |
Emit a vertical bar instead of data. |
.It Ic \eF[ Ns Ar name Ns Ic \&] |
.It Cm \(ba\(ba |
Switch font family (groff extension); ignored by |
Emit a double-vertical bar instead of data. |
.Xr mandoc 1 . |
.El |
For short names, there are variants |
.Pp |
.Ic \eF Ns Ar c |
For example, following layout specifies a centre-justified column of |
|
minimum width 10, followed by vertical bar, followed by a left-justified |
|
column of minimum width 10, another vertical bar, then a column |
|
justified about the decimal point in numbers: |
|
.Pp |
|
.Dl c10 | l10 | n |
|
.Pp |
|
Keys may be followed by a set of modifiers. |
|
A modifier is either a modifier key or a natural number for specifying |
|
spacing. |
|
The following case-insensitive modifier keys are available: |
|
.Cm z , |
|
.Cm u , |
|
.Cm e , |
|
.Cm t , |
|
.Cm d , |
|
.Cm f , |
|
.Cm b , |
|
.Cm i , |
|
.Cm b , |
|
and |
and |
.Cm i . |
.Ic \eF( Ns Ar cc . |
All of these are ignored by |
.It Ic \ef[ Ns Ar name Ns Ic \&] |
|
Switch to the font |
|
.Ar name , |
|
see |
|
.Sx Font Selection . |
|
For short names, there are variants |
|
.Ic \ef Ns Ar c |
|
and |
|
.Ic \ef( Ns Ar cc . |
|
An empty name |
|
.Ic \ef[] |
|
defaults to |
|
.Ic \efP . |
|
.It Ic \eg[ Ns Ar name Ns Ic \&] |
|
Interpolate the format of a number register; ignored by |
.Xr mandoc 1 . |
.Xr mandoc 1 . |
.Pp |
For short names, there are variants |
The data section follows the last layout row. |
.Ic \eg Ns Ar c |
By default, cells in a data section are delimited by a tab. |
and |
This behaviour may be changed with the |
.Ic \eg( Ns Ar cc . |
.Cm tab |
.It Ic \eH\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq |
option. |
Set the height of the current font; ignored by |
If |
.Xr mandoc 1 . |
.Cm _ |
.It Ic \eh\(aq Ns Oo Cm \&| Oc Ns Ar width Ns Ic \(aq |
|
Horizontal motion. |
|
If the vertical bar is given, the motion is relative to the current |
|
indentation. |
|
Otherwise, it is relative to the current position. |
|
The default scaling unit is |
|
.Cm m . |
|
.It Ic \ek[ Ns Ar name Ns Ic \&] |
|
Mark horizontal input place in register; ignored by |
|
.Xr mandoc 1 . |
|
For short names, there are variants |
|
.Ic \ek Ns Ar c |
|
and |
|
.Ic \ek( Ns Ar cc . |
|
.It Ic \eL\(aq Ns Ar number Ns Oo Ar c Oc Ns Ic \(aq |
|
Vertical line drawing function; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \el\(aq Ns Ar width Ns Oo Ar c Oc Ns Ic \(aq |
|
Draw a horizontal line of |
|
.Ar width |
|
using the glyph |
|
.Ar c . |
|
.It Ic \eM[ Ns Ar name Ns Ic \&] |
|
Set fill (background) color (groff extension); ignored by |
|
.Xr mandoc 1 . |
|
For short names, there are variants |
|
.Ic \eM Ns Ar c |
|
and |
|
.Ic \eM( Ns Ar cc . |
|
.It Ic \em[ Ns Ar name Ns Ic \&] |
|
Set glyph drawing color (groff extension); ignored by |
|
.Xr mandoc 1 . |
|
For short names, there are variants |
|
.Ic \em Ns Ar c |
|
and |
|
.Ic \em( Ns Ar cc . |
|
.It Ic \eN\(aq Ns Ar number Ns Ic \(aq |
|
Character |
|
.Ar number |
|
on the current font. |
|
.It Ic \en Ns Oo +|- Oc Ns Ic \&[ Ns Ar name Ns Ic \&] |
|
Interpolate the number register |
|
.Ar name . |
|
For short names, there are variants |
|
.Ic \en Ns Ar c |
|
and |
|
.Ic \en( Ns Ar cc . |
|
If the optional sign is specified, |
|
the register is first incremented or decremented by the |
|
.Ar stepsize |
|
that was specified in the relevant |
|
.Ic \&nr |
|
request, and the changed value is interpolated. |
|
.It Ic \eO Ns Ar digit , Ic \eO[5 Ns arguments Ns Ic \&] |
|
Suppress output. |
|
This is a groff extension and currently unsupported. |
|
With an argument of |
|
.Ic 1 , 2 , 3 , |
or |
or |
.Cm = |
.Ic 4 , |
is specified, a single or double line, respectively, is drawn across the |
it is ignored. |
data field. |
.It Ic \eo\(aq Ns Ar string Ns Ic \(aq |
If |
Overstrike, writing all the characters contained in the |
.Cm \e- |
.Ar string |
or |
to the same output position. |
.Cm \e= |
In terminal and HTML output modes, |
is specified, a line is drawn within the data field (i.e., terminating |
only the last one of the characters is visible. |
within the cell and not draw to the border). |
.It Ic \ep |
If the last cell of a line is |
Break the output line at the end of the current word. |
.Cm T{ , |
.It Ic \eR\(aq Ns Ar name Oo +|- Oc Ns Ar number Ns Ic \(aq |
all subsequent lines are included as part of the cell until |
Set number register; ignored by |
.Cm T} |
.Xr mandoc 1 . |
is specified on its own line. |
.It Ic \er |
|
Move up by one line; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \eS\(aq Ns Ar number Ns Ic \(aq |
|
Slant output; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \es\(aq Ns Oo +|- Oc Ns Ar number Ns Ic \(aq |
|
Change point size; ignored by |
|
.Xr mandoc 1 . |
|
Alternative forms |
|
.Ic \es Ns Oo +|- Oc Ns Ar n , |
|
.Ic \es Ns Oo +|- Oc Ns Ic \(aq Ns Ar number Ns Ic \(aq , |
|
.Ic \es[ Ns Oo +|- Oc Ns Ar number Ns Ic \&] , |
|
and |
|
.Ic \es Ns Oo +|- Oc Ns Ic \&[ Ns Ar number Ns Ic \&] |
|
are also parsed and ignored. |
|
.It Ic \et |
|
Horizontal tab; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \eu |
|
Move up by half a line; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \eV[ Ns Ar name Ns Ic \&] |
|
Interpolate an environment variable; ignored by |
|
.Xr mandoc 1 . |
|
For short names, there are variants |
|
.Ic \eV Ns Ar c |
|
and |
|
.Ic \eV( Ns Ar cc . |
|
.It Ic \ev\(aq Ns Ar number Ns Ic \(aq |
|
Vertical motion; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \ew\(aq Ns Ar string Ns Ic \(aq |
|
Interpolate the width of the |
|
.Ar string . |
|
The |
|
.Xr mandoc 1 |
|
implementation assumes that after expansion of user-defined strings, the |
|
.Ar string |
|
only contains normal characters, no escape sequences, and that each |
|
character has a width of 24 basic units. |
|
.It Ic \eX\(aq Ns Ar string Ns Ic \(aq |
|
Output |
|
.Ar string |
|
as device control function; ignored in nroff mode and by |
|
.Xr mandoc 1 . |
|
.It Ic \ex\(aq Ns Ar number Ns Ic \(aq |
|
Extra line space function; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \eY[ Ns Ar name Ns Ic \&] |
|
Output a string as a device control function; ignored in nroff mode and by |
|
.Xr mandoc 1 . |
|
For short names, there are variants |
|
.Ic \eY Ns Ar c |
|
and |
|
.Ic \eY( Ns Ar cc . |
|
.It Ic \eZ\(aq Ns Ar string Ns Ic \(aq |
|
Print |
|
.Ar string |
|
with zero width and height; ignored by |
|
.Xr mandoc 1 . |
|
.It Ic \ez |
|
Output the next character without advancing the cursor position. |
|
.El |
.Sh COMPATIBILITY |
.Sh COMPATIBILITY |
This section documents compatibility between mandoc and other other |
The |
|
.Xr mandoc 1 |
|
implementation of the |
.Nm |
.Nm |
implementations, at this time limited to GNU troff |
language is incomplete. |
.Pq Qq groff . |
Major unimplemented features include: |
The term |
|
.Qq historic groff |
|
refers to groff version 1.15. |
|
.Pp |
.Pp |
.Bl -dash -compact |
.Bl -dash -compact |
.It |
.It |
|
For security reasons, |
|
.Xr mandoc 1 |
|
never reads or writes external files except via |
|
.Ic \&so |
|
requests with safe relative paths. |
|
.It |
|
There is no automatic hyphenation, no adjustment to the right margin, |
|
and very limited support for centering; the output is always set flush-left. |
|
.It |
|
Support for setting tabulator and leader characters is missing, |
|
and support for manually changing indentation is limited. |
|
.It |
The |
The |
.Cm nS |
.Sq u |
register is only compatible with OpenBSD's groff-1.15. |
scaling unit is the default terminal unit. |
|
In traditional troff systems, this unit changes depending on the |
|
output media. |
.It |
.It |
Historic groff did not accept white-space before a custom |
Width measurements are implemented in a crude way |
.Ar end |
and often yield wrong results. |
macro for the |
Support for explicit movement requests and escapes is limited. |
.Sx \&ig |
|
request. |
|
.It |
.It |
|
There is no concept of output pages, no support for floats, |
|
graphics drawing, and picture inclusion; |
|
terminal output is always continuous. |
|
.It |
|
Requests regarding color, font families, font sizes, |
|
and glyph manipulation are ignored. |
|
Font support is very limited. |
|
Kerning is not implemented, and no ligatures are produced. |
|
.It |
The |
The |
.Sx \&if |
.Qq \(aq |
and family would print funny white-spaces with historic groff when |
macro control character does not suppress output line breaks. |
using the next-line syntax. |
.It |
|
Diversions and environments are not implemented, |
|
and support for traps is very incomplete. |
|
.It |
|
Use of macros is not supported inside |
|
.Xr tbl 7 |
|
code. |
.El |
.El |
|
.Pp |
|
The special semantics of the |
|
.Cm nS |
|
number register is an idiosyncrasy of |
|
.Ox |
|
manuals and not supported by other |
|
.Xr mdoc 7 |
|
implementations. |
.Sh SEE ALSO |
.Sh SEE ALSO |
.Xr mandoc 1 , |
.Xr mandoc 1 , |
|
.Xr eqn 7 , |
.Xr man 7 , |
.Xr man 7 , |
.Xr mandoc_char 7 , |
.Xr mandoc_char 7 , |
.Xr mdoc 7 |
.Xr mdoc 7 , |
|
.Xr tbl 7 |
.Rs |
.Rs |
.%A M. E. Lesk |
|
.%T Tbl\(emA Program to Format Tables |
|
.%D June 11, 1976 |
|
.%U http://www.kohala.com/start/troff/v7/man/tbl/tbl.ps |
|
.Re |
|
.Rs |
|
.%A Joseph F. Ossanna |
.%A Joseph F. Ossanna |
.%A Brian W. Kernighan |
.%A Brian W. Kernighan |
.%I AT&T Bell Laboratories |
.%I AT&T Bell Laboratories |
Line 798 using the next-line syntax. |
|
Line 2316 using the next-line syntax. |
|
.%U http://heirloom.sourceforge.net/doctools/troff.pdf |
.%U http://heirloom.sourceforge.net/doctools/troff.pdf |
.Re |
.Re |
.Sh HISTORY |
.Sh HISTORY |
The RUNOFF typesetting system was written in PL/1 for the CTSS |
The RUNOFF typesetting system, whose input forms the basis for |
operating system by Jerome ("Jerry") E. Saltzer in 1961. |
|
It was first used as the main documentation tool by Multics since 1963. |
|
Robert ("Bob") H. Morris ported it to the GE-635 and called it |
|
.Nm , |
.Nm , |
Doug McIlroy rewrote it in BCPL in 1969, |
was written in MAD and FAP for the CTSS operating system by Jerome E. |
Joseph F. Ossanna rewrote it in PDP-11 assembly in 1973, |
Saltzer in 1964. |
and Brian W. Kernighan rewrote it in C in 1975. |
Doug McIlroy rewrote it in BCPL in 1969, renaming it |
|
.Nm . |
|
Dennis M. Ritchie rewrote McIlroy's |
|
.Nm |
|
in PDP-11 assembly for |
|
.At v1 , |
|
Joseph F. Ossanna improved roff and renamed it nroff |
|
for |
|
.At v2 , |
|
then ported nroff to C as troff, which Brian W. Kernighan released with |
|
.At v7 . |
|
In 1989, James Clarke re-implemented troff in C++, naming it groff. |
.Sh AUTHORS |
.Sh AUTHORS |
.An -nosplit |
.An -nosplit |
This partial |
This |
.Nm |
.Nm |
reference was written by |
reference was written by |
.An Kristaps Dzonsons Aq kristaps@bsd.lv |
.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv |
and |
and |
.An Ingo Schwarze Aq schwarze@openbsd.org . |
.An Ingo Schwarze Aq Mt schwarze@openbsd.org . |