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