1 .\" $Id: man.7,v 1.99 2011/03/07 01:35:51 schwarze Exp $
3 .\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
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.
17 .Dd $Mdocdate: March 7 2011 $
22 .Nd man language reference
26 language was historically used to format
29 This reference document describes its syntax, structure, and usage.
34 to write your manuals.
42 document follows simple rules: lines beginning with the control
45 are parsed for macros.
46 Other lines are interpreted within the scope of
48 .Bd -literal -offset indent
49 \&.SH Macro lines change control state.
50 Other lines are interpreted within the current state.
54 documents may contain only graphable 7-bit ASCII characters, the
55 space character, and the tab character.
57 Blank lines are acceptable; where found, the output will assert a
60 If the first character of a line is a space, that line is printed
61 with a leading newline.
65 whether in a macro or free-form text line, is ignored to the end of
67 A macro line with only a control character and comment escape,
70 Macro lines with only a control character and optionally whitespace are
72 .Ss Special Characters
73 Special characters may occur in both macro and free-form lines.
74 Sequences begin with the escape character
76 followed by either an open-parenthesis
78 for two-character sequences; an open-bracket
80 for n-character sequences (terminated at a close-bracket
82 or a single one-character sequence.
93 Terms may be text-decorated using the
95 escape followed by an indicator: B (bold), I (italic), R (Roman), or P
96 (revert to previous mode):
98 .D1 \efBbold\efR \efIitalic\efP
100 A numerical representation 3, 2, or 1 (bold, italic, and Roman,
101 respectively) may be used instead.
102 A text decoration is only valid, if specified in free-form text, until
103 the next macro invocation; if specified within a macro, it's only valid
104 until the macro closes scope.
105 Note that macros like
107 open and close a font scope with each argument.
111 attribute is forgotten when entering or exiting a macro block.
113 Whitespace consists of the space character.
114 In free-form lines, whitespace is preserved within a line; unescaped
115 trailing spaces are stripped from input (unless in a literal context).
116 Blank free-form lines, which may include spaces, are permitted and
117 rendered as an empty line.
119 In macro lines, whitespace delimits arguments and is discarded.
120 If arguments are quoted, whitespace within the quotes is retained.
122 Many macros support scaled widths for their arguments, such as
123 stipulating a two-inch paragraph indentation with the following:
124 .Bd -literal -offset indent
128 The syntax for scaled widths is
129 .Sq Li [+-]?[0-9]*.[0-9]*[:unit:]? ,
130 where a decimal must be preceded or proceeded by at least one digit.
131 Negative numbers, while accepted, are truncated to zero.
132 The following scaling units are accepted:
134 .Bl -tag -width Ds -offset indent -compact
147 default vertical span
159 default horizontal span
164 Using anything other than
170 is necessarily non-portable across output media.
172 If a scaling unit is not provided, the numerical value is interpreted
173 under the default rules of
175 for vertical spaces and
181 which, if a unit is not provided, will instead interpret the string as
184 When composing a manual, make sure that sentences end at the end of
186 By doing so, front-ends will be able to apply the proper amount of
187 spacing after the end of sentence (unescaped) period, exclamation mark,
188 or question mark followed by zero or more non-sentence closing
199 document must contain the
201 macro describing the document's section and title.
202 It may occur anywhere in the document, although conventionally it
203 appears as the first macro.
207 at least one macro or text node must appear in the document.
208 Documents are generally structured as follows:
209 .Bd -literal -offset indent
210 \&.TH FOO 1 2009-10-10
212 \efBfoo\efR \e(en a description goes here
214 \&.\e\*q For sections 2 & 3 only.
215 \&.\e\*q Not used in OpenBSD.
217 \efBfoo\efR [\efB\e-options\efR] arguments...
219 The \efBfoo\efR utility processes files...
220 \&.\e\*q .SH IMPLEMENTATION NOTES
221 \&.\e\*q Not used in OpenBSD.
222 \&.\e\*q .SH RETURN VALUES
223 \&.\e\*q For sections 2, 3, & 9 only.
224 \&.\e\*q .SH ENVIRONMENT
225 \&.\e\*q For sections 1, 6, 7, & 8 only.
227 \&.\e\*q .SH EXIT STATUS
228 \&.\e\*q For sections 1, 6, & 8 only.
229 \&.\e\*q .SH EXAMPLES
230 \&.\e\*q .SH DIAGNOSTICS
231 \&.\e\*q For sections 1, 4, 6, 7, & 8 only.
233 \&.\e\*q For sections 2, 3, & 9 only.
234 \&.\e\*q .SH SEE ALSO
235 \&.\e\*q .BR foo ( 1 )
236 \&.\e\*q .SH STANDARDS
241 \&.\e\*q .SH SECURITY CONSIDERATIONS
242 \&.\e\*q Not used in OpenBSD.
247 document are conventionally ordered as they appear above.
248 Sections should be composed as follows:
249 .Bl -ohang -offset indent
251 The name(s) and a short description of the documented material.
252 The syntax for this is generally as follows:
254 .D1 \efBname\efR \e(en description
256 The name of the library containing the documented material, which is
257 assumed to be a function in a section 2 or 3 manual.
258 For functions in the C library, this may be as follows:
260 .D1 Standard C Library (libc, -lc)
262 Documents the utility invocation syntax, function call syntax, or device
265 For the first, utilities (sections 1, 6, and 8), this is
266 generally structured as follows:
268 .D1 \efBname\efR [-\efBab\efR] [-\efBc\efR\efIarg\efR] \efBpath\efR...
270 For the second, function calls (sections 2, 3, 9):
272 .D1 \&.B char *name(char *\efIarg\efR);
274 And for the third, configurations (section 4):
276 .D1 \&.B name* at cardbus ? function ?
278 Manuals not in these sections generally don't need a
281 This expands upon the brief, one-line description in
283 It usually contains a break-down of the options (if documenting a
285 .It Em IMPLEMENTATION NOTES
286 Implementation-specific notes should be kept here.
287 This is useful when implementing standard functions that may have side
288 effects or notable algorithmic implications.
290 This section documents the return values of functions in sections 2, 3, and 9.
292 Documents any usages of environment variables, e.g.,
295 Documents files used.
296 It's helpful to document both the file name and a short description of how
297 the file is used (created, modified, etc.).
299 This section documents the command exit status for
300 section 1, 6, and 8 utilities.
301 Historically, this information was described in
303 a practise that is now discouraged.
306 This often contains snippets of well-formed,
307 well-tested invocations.
308 Make sure that examples work properly!
310 Documents error conditions.
311 This is most useful in section 4 manuals.
312 Historically, this section was used in place of
314 for manuals in sections 1, 6, and 8; however, this practise is
317 Documents error handling in sections 2, 3, and 9.
319 References other manuals with related topics.
320 This section should exist for most manuals.
322 .D1 \&.BR bar \&( 1 \&),
324 Cross-references should conventionally be ordered
325 first by section, then alphabetically.
327 References any standards implemented or used, such as
329 .D1 IEEE Std 1003.2 (\e(lqPOSIX.2\e(rq)
331 If not adhering to any standards, the
333 section should be used.
335 A brief history of the subject, including where support first appeared.
337 Credits to the person or persons who wrote the code and/or documentation.
338 Authors should generally be noted by both name and email address.
340 Common misuses and misunderstandings should be explained
343 Known bugs, limitations, and work-arounds should be described
345 .It Em SECURITY CONSIDERATIONS
346 Documents any security precautions that operators should consider.
349 Macros are one to three characters in length and begin with a
352 at the beginning of the line.
355 macro control character is also accepted.
356 An arbitrary amount of whitespace (spaces or tabs) may sit between the
357 control character and the macro name.
358 Thus, the following are equivalent:
359 .Bd -literal -offset indent
364 To include space characters in macro arguments, arguments may be quoted;
373 macros are classified by scope: line scope or block scope.
374 Line macros are only scoped to the current line (and, in some
375 situations, the subsequent line).
376 Block macros are scoped to the current line and subsequent lines until
377 closed by another block macro.
379 Line macros are generally scoped to the current line, with the body
380 consisting of zero or more arguments.
381 If a macro is scoped to the next line and the line arguments are empty,
382 the next line, which must be text, is used instead.
384 .Bd -literal -offset indent
391 If next-line macros are invoked consecutively, only the last is used.
392 If a next-line macro is followed by a non-next-line macro, an error is
399 The syntax is as follows:
400 .Bd -literal -offset indent
401 \&.YO \(lBbody...\(rB
405 .Bl -column -compact -offset indent "MacroX" "ArgumentsX" "ScopeXXXXX" "CompatX"
406 .It Em Macro Ta Em Arguments Ta Em Scope Ta Em Notes
407 .It Sx \&AT Ta <=1 Ta current Ta \&
408 .It Sx \&B Ta n Ta next-line Ta \&
409 .It Sx \&BI Ta n Ta current Ta \&
410 .It Sx \&BR Ta n Ta current Ta \&
411 .It Sx \&DT Ta 0 Ta current Ta \&
412 .It Sx \&I Ta n Ta next-line Ta \&
413 .It Sx \&IB Ta n Ta current Ta \&
414 .It Sx \&IR Ta n Ta current Ta \&
415 .It Sx \&R Ta n Ta next-line Ta \&
416 .It Sx \&RB Ta n Ta current Ta \&
417 .It Sx \&RI Ta n Ta current Ta \&
418 .It Sx \&SB Ta n Ta next-line Ta \&
419 .It Sx \&SM Ta n Ta next-line Ta \&
420 .It Sx \&TH Ta >1, <6 Ta current Ta \&
421 .It Sx \&UC Ta <=1 Ta current Ta \&
422 .It Sx \&br Ta 0 Ta current Ta compat
423 .It Sx \&fi Ta 0 Ta current Ta compat
424 .It Sx \&ft Ta 1 Ta current Ta compat
425 .It Sx \&in Ta 1 Ta current Ta compat
426 .It Sx \&na Ta 0 Ta current Ta compat
427 .It Sx \&nf Ta 0 Ta current Ta compat
428 .It Sx \&sp Ta 1 Ta current Ta compat
433 are included for compatibility with the significant corpus of existing
434 manuals that mix dialects of roff.
435 These macros should not be used for portable
439 Block macros comprise a head and body.
440 As with in-line macros, the head is scoped to the current line and, in
441 one circumstance, the next line (the next-line stipulations as in
445 The syntax is as follows:
446 .Bd -literal -offset indent
447 \&.YO \(lBhead...\(rB
452 The closure of body scope may be to the section, where a macro is closed
455 sub-section, closed by a section or
457 part, closed by a section, sub-section, or
459 or paragraph, closed by a section, sub-section, part,
467 No closure refers to an explicit block closing macro.
469 As a rule, block macros may not be nested; thus, calling a block macro
470 while another block macro scope is open, and the open scope is not
471 implicitly closed, is syntactically incorrect.
473 .Bl -column -compact -offset indent "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" "compatX"
474 .It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope Ta Em Notes
475 .It Sx \&HP Ta <2 Ta current Ta paragraph Ta \&
476 .It Sx \&IP Ta <3 Ta current Ta paragraph Ta \&
477 .It Sx \&LP Ta 0 Ta current Ta paragraph Ta \&
478 .It Sx \&P Ta 0 Ta current Ta paragraph Ta \&
479 .It Sx \&PP Ta 0 Ta current Ta paragraph Ta \&
480 .It Sx \&RE Ta 0 Ta current Ta none Ta compat
481 .It Sx \&RS Ta 1 Ta current Ta part Ta compat
482 .It Sx \&SH Ta >0 Ta next-line Ta section Ta \&
483 .It Sx \&SS Ta >0 Ta next-line Ta sub-section Ta \&
484 .It Sx \&TP Ta n Ta next-line Ta paragraph Ta \&
492 If a block macro is next-line scoped, it may only be followed by in-line
493 macros for decorating text.
495 This section is a canonical reference to all macros, arranged
497 For the scoping of individual macros, see
500 Sets the volume for the footer for compatibility with man pages from
503 The optional arguments specify which release it is from.
505 Text is rendered in bold face.
512 Text is rendered alternately in bold face and italic.
514 .Sq .BI this word and that
519 to render in bold face, while
524 Whitespace between arguments is omitted in output.
528 .Dl \&.BI bold italic bold italic
530 The output of this example will be emboldened
534 with spaces stripped between arguments.
544 Text is rendered alternately in bold face and roman (the default font).
545 Whitespace between arguments is omitted in output.
549 for an equivalent example.
560 Included for compatibility.
562 Begin a paragraph whose initial output line is left-justified, but
563 subsequent output lines are indented, with the following syntax:
564 .Bd -filled -offset indent
571 argument must conform to
573 If specified, it's saved for later paragraph left-margins; if unspecified, the
574 saved or default width is used.
584 Text is rendered in italics.
591 Text is rendered alternately in italics and bold face.
592 Whitespace between arguments is omitted in output.
596 for an equivalent example.
606 Begin an indented paragraph with the following syntax:
607 .Bd -filled -offset indent
609 .Op Cm head Op Cm width
614 argument defines the width of the left margin and is defined by
616 It's saved for later paragraph left-margins; if unspecified, the saved or
617 default width is used.
621 argument is used as a leading term, flushed to the left margin.
622 This is useful for bulleted paragraphs and so on.
632 Text is rendered alternately in italics and roman (the default font).
633 Whitespace between arguments is omitted in output.
637 for an equivalent example.
647 Begin an undecorated paragraph.
648 The scope of a paragraph is closed by a subsequent paragraph,
649 sub-section, section, or end of file.
650 The saved paragraph left-margin width is reset to the default.
682 Text is rendered in roman (the default font).
689 Text is rendered alternately in roman (the default font) and bold face.
690 Whitespace between arguments is omitted in output.
694 for an equivalent example.
704 Explicitly close out the scope of a prior
707 Text is rendered alternately in roman (the default font) and italics.
708 Whitespace between arguments is omitted in output.
712 for an equivalent example.
722 Begin a part setting the left margin.
723 The left margin controls the offset, following an initial indentation,
724 to un-indented text such as that of
726 This has the following syntax:
727 .Bd -filled -offset indent
734 argument must conform to
736 If not specified, the saved or default width is used.
738 Text is rendered in small size (one point smaller than the default font)
742 The scope of a section is only closed by another section or the end of
744 The paragraph left-margin width is reset to the default.
746 Text is rendered in small size (one point smaller than the default
750 The scope of a sub-section is closed by a subsequent sub-section,
751 section, or end of file.
752 The paragraph left-margin width is reset to the default.
754 Sets the title of the manual page with the following syntax:
755 .Bd -filled -offset indent
757 .Ar title section date
758 .Op Ar source Op Ar volume
761 Conventionally, the document
763 is given in all caps.
768 as specified in the ISO-8601 standard;
769 if the argument does not conform, it is printed verbatim.
772 is empty or not specified, the current date is used.
775 string specifies the organisation providing the utility.
778 string replaces the default rendered volume, which is dictated by the
783 .Dl \&.TH CVS 5 "1992-02-12" GNU
785 Begin a paragraph where the head, if exceeding the indentation width, is
786 followed by a newline; if not, the body follows on the same line after a
787 buffer to the indentation width.
788 Subsequent output lines are indented.
789 The syntax is as follows:
790 .Bd -filled -offset indent
797 argument must conform to
799 If specified, it's saved for later paragraph left-margins; if
800 unspecified, the saved or default width is used.
810 Sets the volume for the footer for compatibility with man pages from
812 The optional first argument specifies which release it is from.
814 Breaks the current line.
815 Consecutive invocations have no further effect.
820 End literal mode begun by
823 Change the current font mode.
826 for a listing of available font modes.
828 Indent relative to the current indentation:
830 .D1 Pf \. Sx \&in Op Cm width
834 is signed, the new offset is relative.
835 Otherwise, it is absolute.
836 This value is reset upon the next paragraph, section, or sub-section.
838 Don't align to the right margin.
840 Begin literal mode: all subsequent free-form lines have their end of
841 line boundaries preserved.
845 Insert vertical spaces into output with the following syntax:
846 .Bd -filled -offset indent
853 spaces, which must conform to
855 If 0, this is equivalent to the
858 Defaults to 1, if unspecified.
863 This section documents areas of questionable portability between
864 implementations of the
870 In quoted literals, GNU troff allowed pair-wise double-quotes to produce
871 a standalone double-quote in formatted output.
872 It is not known whether this behaviour is exhibited by other formatters.
874 troff suppresses a newline before
876 macro output; in mandoc, it is an alias for the standard
882 .Pq horizontal position ,
884 .Pq vertical position ,
888 .Pq text filling colour ,
890 .Pq zero-length character ,
894 .Pq horizontal position marker ,
896 .Pq text overstrike ,
900 escape sequences are all discarded in mandoc.
904 scaling unit is accepted by mandoc, but rendered as the default unit.
908 macro does not accept negative values in mandoc.
909 In GNU troff, this would result in strange behaviour.
922 language first appeared as a macro package for the roff typesetting
925 It was later rewritten by James Clark as a macro package for groff.
926 The stand-alone implementation that is part of the
928 utility written by Kristaps Dzonsons appeared in
933 reference was written by
934 .An Kristaps Dzonsons Aq kristaps@bsd.lv .
936 Do not use this language.