Annotation of mandoc/man.7, Revision 1.26
1.26 ! kristaps 1: .\" $Id: man.7,v 1.25 2009/08/13 12:54:52 kristaps Exp $
1.1 kristaps 2: .\"
1.11 kristaps 3: .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
1.1 kristaps 4: .\"
5: .\" Permission to use, copy, modify, and distribute this software for any
1.10 kristaps 6: .\" purpose with or without fee is hereby granted, provided that the above
7: .\" copyright notice and this permission notice appear in all copies.
8: .\"
9: .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15: .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1 kristaps 16: .\"
17: .Dd $Mdocdate$
1.9 kristaps 18: .Dt MAN 7
1.1 kristaps 19: .Os
20: .\" SECTION
21: .Sh NAME
22: .Nm man
23: .Nd man language reference
24: .\" SECTION
25: .Sh DESCRIPTION
26: The
27: .Nm man
1.20 kristaps 28: language was historically used to format
1.1 kristaps 29: .Ux
1.19 kristaps 30: manuals. This reference document describes its syntax, structure, and
31: usage.
1.1 kristaps 32: .Pp
1.20 kristaps 33: .Bf -emphasis
34: Do not use
1.1 kristaps 35: .Nm
1.20 kristaps 36: to write your manuals.
1.19 kristaps 37: .Ef
38: Use the
1.1 kristaps 39: .Xr mdoc 7
40: language, instead.
41: .\" PARAGRAPH
42: .Pp
43: An
44: .Nm
45: document follows simple rules: lines beginning with the control
1.20 kristaps 46: character
1.2 kristaps 47: .Sq \&.
1.1 kristaps 48: are parsed for macros. Other lines are interpreted within the scope of
49: prior macros:
1.4 kristaps 50: .Bd -literal -offset indent
1.1 kristaps 51: \&.SH Macro lines change control state.
52: Other lines are interpreted within the current state.
53: .Ed
54: .\" SECTION
55: .Sh INPUT ENCODING
56: .Nm
1.14 kristaps 57: documents may contain only graphable 7-bit ASCII characters, the
1.19 kristaps 58: space character, and the tabs character. All manuals must have
1.5 kristaps 59: .Ux
1.20 kristaps 60: line termination.
1.1 kristaps 61: .Pp
1.5 kristaps 62: Blank lines are acceptable; where found, the output will assert a
1.1 kristaps 63: vertical space.
1.4 kristaps 64: .Pp
65: The
66: .Sq \ec
67: escape is common in historical
68: .Nm
69: documents; if encountered at the end of a word, it ensures that the
70: subsequent word isn't off-set by whitespace.
1.1 kristaps 71: .\" SUB-SECTION
1.13 kristaps 72: .Ss Comments
1.21 kristaps 73: Text following a
1.22 kristaps 74: .Sq \e\*" ,
1.21 kristaps 75: whether in a macro or free-form text line, is ignored to the end of
76: line. A macro line with only a control character and comment escape,
77: .Sq \&.\e" ,
1.22 kristaps 78: is also ignored. Macro lines with only a control charater and
79: optionally whitespace are stripped from input.
1.13 kristaps 80: .\" SUB-SECTION
1.1 kristaps 81: .Ss Special Characters
1.21 kristaps 82: Special characters may occur in both macro and free-form lines.
83: Sequences begin with the escape character
1.2 kristaps 84: .Sq \e
1.20 kristaps 85: followed by either an open-parenthesis
1.1 kristaps 86: .Sq \&(
87: for two-character sequences; an open-bracket
88: .Sq \&[
89: for n-character sequences (terminated at a close-bracket
90: .Sq \&] ) ;
1.21 kristaps 91: or a single one-character sequence. See
92: .Xr mandoc_char 7
93: for a complete list. Examples include
94: .Sq \e(em
95: .Pq em-dash
96: and
97: .Sq \ee
98: .Pq back-slash .
99: .\" SUB-SECTION----------------------
100: .Ss Text Decoration
101: Terms may be text-decorated using the
1.18 kristaps 102: .Sq \ef
1.21 kristaps 103: escape followed by an indicator: B (bold), I, (italic), or P and R
104: (Roman, or reset).
105: .\" SUB-SECTION----------------------
1.17 kristaps 106: .Ss Whitespace
107: Unless specifically escaped, consecutive blocks of whitespace are pruned
108: from input. These are later re-added, if applicable, by a front-end
109: utility such as
110: .Xr mandoc 1 .
1.1 kristaps 111: .\" SECTION
1.22 kristaps 112: .Sh MANUAL STRUCTURE
1.16 kristaps 113: Each
114: .Nm
115: document must contain contains at least the
1.22 kristaps 116: .Sq \&TH
1.16 kristaps 117: macro describing the document's section and title. It may occur
118: anywhere in the document, although conventionally, it appears as the
119: first macro.
120: .Pp
1.22 kristaps 121: Beyond
122: .Sq \&TH ,
123: at least one macro or text node must appear in the document. Documents
124: are generally structured as follows:
125: .Bd -literal -offset indent
126: \&.TH FOO 1 "13 Aug 2009"
127: \&.
128: \&.SH NAME
129: foo \e- a description goes here
130: \&.
131: \&.SH SYNOPSIS
132: \efBfoo\efR [\efB\e-options\efR] arguments...
133: \&.
134: \&.SH DESCRIPTION
135: The \efBfoo\efR utility does...
136: \&.
137: \&.\e\*q .SH RETURN VALUES
138: \&.\e\*q .SH ENVIRONMENT
139: \&.\e\*q .SH FILES
140: \&.\e\*q .SH EXAMPLES
141: \&.\e\*q .SH DIAGNOSTICS
142: \&.\e\*q .SH ERRORS
143: \&.\e\*q .SH SEE ALSO
144: \&.\e\*q \efBbar\efR(1)
145: \&.\e\*q .SH STANDARDS
146: \&.\e\*q .SH HISTORY
147: \&.\e\*q .SH AUTHORS
148: \&.\e\*q .SH CAVEATS
149: \&.\e\*q .SH BUGS
150: .Ed
1.16 kristaps 151: .\" SECTION
1.22 kristaps 152: .Sh MACRO SYNTAX
1.2 kristaps 153: Macros are one to three three characters in length and begin with a
1.4 kristaps 154: control character ,
155: .Sq \&. ,
1.2 kristaps 156: at the beginning of the line. An arbitrary amount of whitespace may
157: sit between the control character and the macro name. Thus,
1.4 kristaps 158: .Sq \&.PP
1.2 kristaps 159: and
160: .Sq \&.\ \ \ \&PP
161: are equivalent.
162: .Pp
1.1 kristaps 163: The
1.4 kristaps 164: .Nm
1.22 kristaps 165: macros are classified by scope: line scope or block scope. Line-scoped
166: macros are only scoped to the current line (and, in some situations,
167: the subsequent line). Block macros are scoped to the current line and
168: subsequent lines until closed by another block macro.
169: .\" SUBSECTION
170: .Ss Line Macros
171: Line-macros are scoped to the current line, with the body consisting of
172: zero or more arguments. If a macro is next-line scoped and the line
173: arguments are empty, the next line is used instead. Thus:
1.20 kristaps 174: .Bd -literal -offset indent
175: \&.RI
1.4 kristaps 176: foo
177: .Ed
1.22 kristaps 178: .\" PARAGRAPH
1.4 kristaps 179: .Pp
1.20 kristaps 180: is equivalent to
1.8 kristaps 181: .Sq \&.RI foo .
1.22 kristaps 182: .\" PARAGRAPH
183: Consecutive next-line invocations are disallowed.
1.20 kristaps 184: .Bd -literal -offset indent
1.22 kristaps 185: \&.YO \(lBbody...\(rB
186: \(lBbody...\(rB
1.4 kristaps 187: .Ed
1.22 kristaps 188: .\" PARAGRAPH
1.4 kristaps 189: .Pp
1.22 kristaps 190: .Bl -column -compact -offset indent "MacroX" "ArgumentsX" "ScopeXXXXX"
191: .It Em Macro Ta Em Arguments Ta Em Scope
192: .It \&B Ta n Ta next-line
193: .It \&BI Ta n Ta current
194: .It \&BR Ta n Ta current
195: .It \&I Ta n Ta next-line
196: .It \&IB Ta n Ta current
197: .It \&IR Ta n Ta current
198: .It \&R Ta n Ta next-line
199: .It \&RB Ta n Ta current
200: .It \&RI Ta n Ta current
201: .It \&SB Ta n Ta next-line
202: .It \&SM Ta n Ta next-line
203: .It \&TH Ta >1, <6 Ta current
204: .It \&br Ta 0 Ta current
205: .It \&fi Ta 0 Ta current
206: .It \&i Ta n Ta current
207: .It \&na Ta 0 Ta current
208: .It \&nf Ta 0 Ta current
209: .It \&r Ta 0 Ta current
210: .It \&sp Ta 1 Ta current
1.1 kristaps 211: .El
1.22 kristaps 212: .\" PARAGRAPH
1.7 kristaps 213: .Pp
1.22 kristaps 214: The lower-case
215: .Sq \&br ,
216: .Sq \&fi ,
217: .Sq \&i ,
218: .Sq \&na ,
219: .Sq \&nf ,
220: .Sq \&r ,
221: and
222: .Sq \&sp
223: macros aren't historically part of
1.7 kristaps 224: .Nm
1.22 kristaps 225: and should not be used. They're included for compatibility.
226: .\" SUBSECTION
227: .Ss Block Macros
228: Block macros are comprised of a head and body. The head is scoped to
229: the current line and, in one circumstance, the next line; the body is
230: scoped to subsequent lines and is closed out by a subsequent block macro
231: invocation.
232: .Bd -literal -offset indent
233: \&.YO \(lBhead...\(rB
234: \(lBhead...\(rB
235: \(lBbody...\(rB
236: .Ed
237: .\" PARAGRAPH
238: .Pp
239: If a block macro is next-line scoped, it may only be followed by in-line
240: macros (excluding
241: .Sq na ,
242: .Sq sp ,
243: .Sq nf ,
244: .Sq fi ,
245: and
246: .Sq TH ) .
247: .\" PARAGRAPH
1.7 kristaps 248: .Pp
1.22 kristaps 249: .Bl -column "MacroX" "Arguments" "ScopeXXXX" -compact -offset indent
250: .It Em Macro Ta Em Arguments Ta Em Scope
251: .It \&HP Ta <2 Ta current
252: .It \&IP Ta <3 Ta current
253: .It \&LP Ta 0 Ta current
254: .It \&P Ta 0 Ta current
255: .It \&PP Ta 0 Ta current
256: .It \&SH Ta >0 Ta current
257: .It \&SS Ta >0 Ta current
258: .It \&TP Ta n Ta next-line
1.7 kristaps 259: .El
1.22 kristaps 260: .\" SECTION
261: .Sh REFERENCE
262: This section is a canonical reference to all macros, arranged
263: alphabetically. For the scoping of individual macros, see
264: .Sx MACRO SYNTAX .
1.26 ! kristaps 265: .\" SUBSECTION
! 266: .Ss Terms
! 267: In this reference, a numerical width may be either a standalone natural
! 268: number (such as 3, 4, 10, etc.) or a natural number followed by a width
! 269: multiplier
! 270: .Qq n ,
! 271: corresponding to the width of the formatted letter n, or
! 272: .Qq m ,
! 273: corresponding to the width of the formatted letter m. The latter is the
! 274: default, if unspecified.
! 275: .\" SUBSECTION
! 276: .Ss Macro Reference
1.23 kristaps 277: .Bl -tag -width Ds
1.22 kristaps 278: .It \&B
279: Text is rendered in bold face.
280: .It \&BI
281: Text is rendered alternately in bold face and italic. Thus,
282: .Sq \&.BI this word and that
283: causes
284: .Sq this
285: and
286: .Sq and
287: to render in bold face, while
288: .Sq word
289: and
290: .Sq that
291: render in italics. Whitespace between arguments is omitted in output.
292: .It \&BR
293: Text is rendered alternately in bold face and roman (the default font).
294: Whitespace between arguments is omitted in output.
295: .It \&HP
1.23 kristaps 296: Begin a paragraph whose initial output line is left-justified, but
297: subsequent output lines are indented.
1.22 kristaps 298: .It \&I
299: Text is rendered in italics.
300: .It \&IB
301: Text is rendered alternately in italics and bold face. Whitespace
302: between arguments is omitted in output.
303: .It \&IP
1.25 kristaps 304: Begin a paragraph with the following syntax:
305: .Bd -literal -offset indent
306: \&.IP [head [width]]
307: .Ed
308: .Pp
309: This follows the behaviour of the
310: .Sq \&TP
1.26 ! kristaps 311: except for the macro syntax (all arguments on the line, instead of
! 312: having next-line scope).
1.22 kristaps 313: .It \&IR
314: Text is rendered alternately in italics and roman (the default font).
315: Whitespace between arguments is omitted in output.
316: .It \&LP, \&P, \&PP
317: Begin an undecorated paragraph. The scope of a paragraph is closed by a
318: subsequent paragraph, sub-section, section, or end of file.
319: .It \&R
320: Text is rendered in roman (the default font).
321: .It \&RB
322: Text is rendered alternately in roman (the default font) and bold face.
323: Whitespace between arguments is omitted in output.
324: .It \&RI
325: Text is rendered alternately in roman (the default font) and italics.
326: Whitespace between arguments is omitted in output.
327: .It \&SB
328: Text is rendered in small size (one point smaller than the default font)
329: bold face.
330: .It \&SH
331: Begin a section. The scope of a section is only closed by another
332: section or the end of file.
333: .It \&SM
334: Text is rendered in small size (one point smaller than the default
335: font).
336: .It \&SS
337: Begin a sub-section. The scope of a sub-section is closed by a
338: subsequent sub-section, section, or end of file.
339: .It \&TH
340: Sets the title of the manual page with the following syntax:
341: .Bd -literal -offset indent
342: \&.TH title section date source volume
343: .Ed
1.8 kristaps 344: .Pp
1.22 kristaps 345: At least the
346: .Va title
347: and
348: .Va section
349: arguments must be provided. The
350: .Va date
351: argument should be formatted as
352: .Qq %b [%d] %Y
353: format, described in
354: .Xr strptime 3 .
355: The
356: .Va source
357: string specifies the organisation providing the utility. The
358: .Va volume
359: replaces the default rendered volume as dictated by the manual section.
360: .It \&TP
1.25 kristaps 361: Begin a paragraph where the head, if exceeding the indentation width, is
1.24 kristaps 362: followed by a newline; if not, the body follows on the same line after a
1.25 kristaps 363: buffer to the indentation width. Subsequent output lines are indented.
1.26 ! kristaps 364: .Pp
! 365: The indentation width may be set as follows:
! 366: .Bd -literal -offset indent
! 367: \&.TP [width]
! 368: .Ed
! 369: .Pp
! 370: Where
! 371: .Va width
! 372: must be a properly-formed numeric width. If unspecified or improperly
! 373: formed, the default indentation width is used.
1.22 kristaps 374: .It \&br
375: Breaks the current line. Consecutive invocations have no further effect.
376: .It \&fi
377: End literal mode begun by
378: .Sq \&nf .
379: .It \&i
380: Italicise arguments. If no arguments are specified, all subsequent text
381: is italicised.
382: .It \&na
383: No alignment to the right margin.
384: .It \&nf
385: Begin literal mode: all subsequent free-form lines have their end of
386: line boundaries preserved. May be ended by
387: .Sq \&fi .
388: .It \&r
389: Fonts and styles (bold face, italics) reset to roman (default font).
390: .It \&sp
391: Insert n spaces, where n is the macro's positive numeric argument. If
392: 0, this is equivalent to the
393: .Sq br
394: macro.
395: .El
1.1 kristaps 396: .\" SECTION
1.18 kristaps 397: .Sh COMPATIBILITY
1.23 kristaps 398: This section documents compatibility with other roff implementations, at
399: this time limited to
400: .Xr groff 1 .
401: .Bl -hyphen
402: .It
403: In quoted literals, groff allowed pair-wise double-quotes to produce a
404: standalone double-quote in formatted output. This idiosyncratic
405: behaviour is no longer applicable.
406: .It
407: The
408: .Sq \&sp
409: macro does not accept negative numbers.
410: .It
411: Blocks of whitespace are stripped from both macro and free-form text
412: lines (except when in literal mode), while groff would retain whitespace
413: in free-form text lines.
414: .El
1.18 kristaps 415: .\" SECTION
1.1 kristaps 416: .Sh SEE ALSO
1.6 kristaps 417: .Xr mandoc 1 ,
418: .Xr mandoc_char 7
1.1 kristaps 419: .\" SECTION
420: .Sh AUTHORS
421: The
422: .Nm
1.23 kristaps 423: reference was written by
1.12 kristaps 424: .An Kristaps Dzonsons Aq kristaps@kth.se .
1.1 kristaps 425: .\" SECTION
426: .Sh CAVEATS
427: Do not use this language. Use
428: .Xr mdoc 7 ,
429: instead.
CVSweb