xref: /openbsd-src/share/man/man7/man.7 (revision ced94a4967c2c220a5eafb49066f2f80287c91cd)
1.\"	$OpenBSD: man.7,v 1.29 2012/06/20 21:37:32 schwarze Exp $
2.\"
3.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4.\" Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
5.\"
6.\" Permission to use, copy, modify, and distribute this software for any
7.\" purpose with or without fee is hereby granted, provided that the above
8.\" copyright notice and this permission notice appear in all copies.
9.\"
10.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17.\"
18.Dd $Mdocdate: June 20 2012 $
19.Dt MAN 7
20.Os
21.Sh NAME
22.Nm man
23.Nd legacy formatting language for manual pages
24.Sh DESCRIPTION
25Traditionally, the
26.Nm man
27language has been used to write
28.Ux
29manuals for the
30.Xr man 1
31utility.
32It supports limited control of presentational details like fonts,
33indentation and spacing.
34This reference document describes the structure of manual pages
35and the syntax and usage of the man language.
36.Pp
37.Bf -emphasis
38Do not use
39.Nm
40to write your manuals:
41.Ef
42It lacks support for semantic markup.
43Use the
44.Xr mdoc 7
45language, instead.
46.Pp
47In a
48.Nm
49document, lines beginning with the control character
50.Sq \&.
51are called
52.Dq macro lines .
53The first word is the macro name.
54It usually consists of two capital letters.
55For a list of available macros, see
56.Sx MACRO OVERVIEW .
57The words following the macro name are arguments to the macro.
58.Pp
59Lines not beginning with the control character are called
60.Dq text lines .
61They provide free-form text to be printed; the formatting of the text
62depends on the respective processing context:
63.Bd -literal -offset indent
64\&.SH Macro lines change control state.
65Text lines are interpreted within the current state.
66.Ed
67.Pp
68Many aspects of the basic syntax of the
69.Nm
70language are based on the
71.Xr roff 7
72language; see the
73.Em LANGUAGE SYNTAX
74and
75.Em MACRO SYNTAX
76sections in the
77.Xr roff 7
78manual for details, in particular regarding
79comments, escape sequences, whitespace, and quoting.
80.Sh MANUAL STRUCTURE
81Each
82.Nm
83document must contain the
84.Sx \&TH
85macro describing the document's section and title.
86It may occur anywhere in the document, although conventionally it
87appears as the first macro.
88.Pp
89Beyond
90.Sx \&TH ,
91at least one macro or text line must appear in the document.
92.Pp
93The following is a well-formed skeleton
94.Nm
95file for a utility
96.Qq progname :
97.Bd -literal -offset indent
98\&.TH PROGNAME 1 2009-10-10
99\&.SH NAME
100\efBprogname\efR \e(en a description goes here
101\&.\e\(dq .SH LIBRARY
102\&.\e\(dq For sections 2 & 3 only.
103\&.\e\(dq Not used in OpenBSD.
104\&.SH SYNOPSIS
105\efBprogname\efR [\efB\e-options\efR] arguments...
106\&.SH DESCRIPTION
107The \efBfoo\efR utility processes files...
108\&.\e\(dq .SH IMPLEMENTATION NOTES
109\&.\e\(dq Not used in OpenBSD.
110\&.\e\(dq .SH RETURN VALUES
111\&.\e\(dq For sections 2, 3, & 9 only.
112\&.\e\(dq .SH ENVIRONMENT
113\&.\e\(dq For sections 1, 6, 7, & 8 only.
114\&.\e\(dq .SH FILES
115\&.\e\(dq .SH EXIT STATUS
116\&.\e\(dq For sections 1, 6, & 8 only.
117\&.\e\(dq .SH EXAMPLES
118\&.\e\(dq .SH DIAGNOSTICS
119\&.\e\(dq For sections 1, 4, 6, 7, & 8 only.
120\&.\e\(dq .SH ERRORS
121\&.\e\(dq For sections 2, 3, & 9 only.
122\&.\e\(dq .SH SEE ALSO
123\&.\e\(dq .BR foo ( 1 )
124\&.\e\(dq .SH STANDARDS
125\&.\e\(dq .SH HISTORY
126\&.\e\(dq .SH AUTHORS
127\&.\e\(dq .SH CAVEATS
128\&.\e\(dq .SH BUGS
129\&.\e\(dq .SH SECURITY CONSIDERATIONS
130\&.\e\(dq Not used in OpenBSD.
131.Ed
132.Pp
133The sections in a
134.Nm
135document are conventionally ordered as they appear above.
136Sections should be composed as follows:
137.Bl -ohang -offset indent
138.It Em NAME
139The name(s) and a short description of the documented material.
140The syntax for this is generally as follows:
141.Pp
142.D1 \efBname\efR \e(en description
143.It Em LIBRARY
144The name of the library containing the documented material, which is
145assumed to be a function in a section 2 or 3 manual.
146For functions in the C library, this may be as follows:
147.Pp
148.D1 Standard C Library (libc, -lc)
149.It Em SYNOPSIS
150Documents the utility invocation syntax, function call syntax, or device
151configuration.
152.Pp
153For the first, utilities (sections 1, 6, and 8), this is
154generally structured as follows:
155.Pp
156.D1 \efBname\efR [-\efBab\efR] [-\efBc\efR\efIarg\efR] \efBpath\efR...
157.Pp
158For the second, function calls (sections 2, 3, 9):
159.Pp
160.D1 \&.B char *name(char *\efIarg\efR);
161.Pp
162And for the third, configurations (section 4):
163.Pp
164.D1 \&.B name* at cardbus ? function ?
165.Pp
166Manuals not in these sections generally don't need a
167.Em SYNOPSIS .
168.It Em DESCRIPTION
169This expands upon the brief, one-line description in
170.Em NAME .
171It usually contains a break-down of the options (if documenting a
172command).
173.It Em IMPLEMENTATION NOTES
174Implementation-specific notes should be kept here.
175This is useful when implementing standard functions that may have side
176effects or notable algorithmic implications.
177.It Em RETURN VALUES
178This section documents the return values of functions in sections 2, 3, and 9.
179.It Em ENVIRONMENT
180Documents any usages of environment variables, e.g.,
181.Xr environ 7 .
182.It Em FILES
183Documents files used.
184It's helpful to document both the file name and a short description of how
185the file is used (created, modified, etc.).
186.It Em EXIT STATUS
187This section documents the command exit status for
188section 1, 6, and 8 utilities.
189Historically, this information was described in
190.Em DIAGNOSTICS ,
191a practise that is now discouraged.
192.It Em EXAMPLES
193Example usages.
194This often contains snippets of well-formed,
195well-tested invocations.
196Make sure that examples work properly!
197.It Em DIAGNOSTICS
198Documents error conditions.
199This is most useful in section 4 manuals.
200Historically, this section was used in place of
201.Em EXIT STATUS
202for manuals in sections 1, 6, and 8; however, this practise is
203discouraged.
204.It Em ERRORS
205Documents error handling in sections 2, 3, and 9.
206.It Em SEE ALSO
207References other manuals with related topics.
208This section should exist for most manuals.
209.Pp
210.D1 \&.BR bar \&( 1 \&),
211.Pp
212Cross-references should conventionally be ordered
213first by section, then alphabetically.
214.It Em STANDARDS
215References any standards implemented or used, such as
216.Pp
217.D1 IEEE Std 1003.2 (\e(lqPOSIX.2\e(rq)
218.Pp
219If not adhering to any standards, the
220.Em HISTORY
221section should be used.
222.It Em HISTORY
223A brief history of the subject, including where support first appeared.
224.It Em AUTHORS
225Credits to the person or persons who wrote the code and/or documentation.
226Authors should generally be noted by both name and email address.
227.It Em CAVEATS
228Common misuses and misunderstandings should be explained
229in this section.
230.It Em BUGS
231Known bugs, limitations, and work-arounds should be described
232in this section.
233.It Em SECURITY CONSIDERATIONS
234Documents any security precautions that operators should consider.
235.El
236.Sh MACRO OVERVIEW
237This overview is sorted such that macros of similar purpose are listed
238together, to help find the best macro for any given purpose.
239Deprecated macros are not included in the overview, but can be found
240in the alphabetical reference below.
241.Ss Page header and footer meta-data
242.Bl -column "PP, LP, P" description
243.It Sx TH Ta set the title: Ar title section date Op Ar source Op Ar volume
244.It Sx AT Ta display AT&T UNIX version in the page footer (<= 1 argument)
245.It Sx UC Ta display BSD version in the page footer (<= 1 argument)
246.El
247.Ss Sections and paragraphs
248.Bl -column "PP, LP, P" description
249.It Sx SH Ta section header (one line)
250.It Sx SS Ta subsection header (one line)
251.It Sx PP , LP , P Ta start an undecorated paragraph (no arguments)
252.It Sx RS , RE Ta reset the left margin: Op Ar width
253.It Sx IP Ta indented paragraph: Op Ar head Op Ar width
254.It Sx TP Ta tagged paragraph: Op Ar width
255.It Sx HP Ta hanged paragraph: Op Ar width
256.It Sx \&br Ta force output line break in text mode (no arguments)
257.It Sx \&sp Ta force vertical space: Op Ar height
258.It Sx fi , nf Ta fill mode and no-fill mode (no arguments)
259.It Sx in Ta additional indent: Op Ar width
260.El
261.Ss Physical markup
262.Bl -column "PP, LP, P" description
263.It Sx B Ta boldface font
264.It Sx I Ta italic font
265.It Sx R Ta roman (default) font
266.It Sx SB Ta small boldface font
267.It Sx SM Ta small roman font
268.It Sx BI Ta alternate between boldface and italic fonts
269.It Sx BR Ta alternate between boldface and roman fonts
270.It Sx IB Ta alternate between italic and boldface fonts
271.It Sx IR Ta alternate between italic and roman fonts
272.It Sx RB Ta alternate between roman and boldface fonts
273.It Sx RI Ta alternate between roman and italic fonts
274.El
275.Sh MACRO REFERENCE
276This section is a canonical reference to all macros, arranged
277alphabetically.
278For the scoping of individual macros, see
279.Sx MACRO SYNTAX .
280.Ss \&AT
281Sets the volume for the footer for compatibility with man pages from
282.Tn AT&T UNIX
283releases.
284The optional arguments specify which release it is from.
285.Ss \&B
286Text is rendered in bold face.
287.Pp
288See also
289.Sx \&I
290and
291.Sx \&R .
292.Ss \&BI
293Text is rendered alternately in bold face and italic.
294Thus,
295.Sq .BI this word and that
296causes
297.Sq this
298and
299.Sq and
300to render in bold face, while
301.Sq word
302and
303.Sq that
304render in italics.
305Whitespace between arguments is omitted in output.
306.Pp
307Examples:
308.Pp
309.Dl \&.BI bold italic bold italic
310.Pp
311The output of this example will be emboldened
312.Dq bold
313and italicised
314.Dq italic ,
315with spaces stripped between arguments.
316.Pp
317See also
318.Sx \&IB ,
319.Sx \&BR ,
320.Sx \&RB ,
321.Sx \&RI ,
322and
323.Sx \&IR .
324.Ss \&BR
325Text is rendered alternately in bold face and roman (the default font).
326Whitespace between arguments is omitted in output.
327.Pp
328See
329.Sx \&BI
330for an equivalent example.
331.Pp
332See also
333.Sx \&BI ,
334.Sx \&IB ,
335.Sx \&RB ,
336.Sx \&RI ,
337and
338.Sx \&IR .
339.Ss \&DT
340Has no effect.
341Included for compatibility.
342.Ss \&EE
343This is a non-standard GNU extension, included only for compatibility.
344In
345.Xr mandoc 1 ,
346it does the same as
347.Sx \&fi .
348.Ss \&EX
349This is a non-standard GNU extension, included only for compatibility.
350In
351.Xr mandoc 1 ,
352it does the same as
353.Sx \&nf .
354.Ss \&HP
355Begin a paragraph whose initial output line is left-justified, but
356subsequent output lines are indented, with the following syntax:
357.Bd -filled -offset indent
358.Pf \. Sx \&HP
359.Op Cm width
360.Ed
361.Pp
362The
363.Cm width
364argument is a
365.Xr roff 7
366scaling width.
367If specified, it's saved for later paragraph left-margins; if unspecified, the
368saved or default width is used.
369.Pp
370See also
371.Sx \&IP ,
372.Sx \&LP ,
373.Sx \&P ,
374.Sx \&PP ,
375and
376.Sx \&TP .
377.Ss \&I
378Text is rendered in italics.
379.Pp
380See also
381.Sx \&B
382and
383.Sx \&R .
384.Ss \&IB
385Text is rendered alternately in italics and bold face.
386Whitespace between arguments is omitted in output.
387.Pp
388See
389.Sx \&BI
390for an equivalent example.
391.Pp
392See also
393.Sx \&BI ,
394.Sx \&BR ,
395.Sx \&RB ,
396.Sx \&RI ,
397and
398.Sx \&IR .
399.Ss \&IP
400Begin an indented paragraph with the following syntax:
401.Bd -filled -offset indent
402.Pf \. Sx \&IP
403.Op Cm head Op Cm width
404.Ed
405.Pp
406The
407.Cm width
408argument is a
409.Xr roff 7
410scaling width defining the left margin.
411It's saved for later paragraph left-margins; if unspecified, the saved or
412default width is used.
413.Pp
414The
415.Cm head
416argument is used as a leading term, flushed to the left margin.
417This is useful for bulleted paragraphs and so on.
418.Pp
419See also
420.Sx \&HP ,
421.Sx \&LP ,
422.Sx \&P ,
423.Sx \&PP ,
424and
425.Sx \&TP .
426.Ss \&IR
427Text is rendered alternately in italics and roman (the default font).
428Whitespace between arguments is omitted in output.
429.Pp
430See
431.Sx \&BI
432for an equivalent example.
433.Pp
434See also
435.Sx \&BI ,
436.Sx \&IB ,
437.Sx \&BR ,
438.Sx \&RB ,
439and
440.Sx \&RI .
441.Ss \&LP
442Begin an undecorated paragraph.
443The scope of a paragraph is closed by a subsequent paragraph,
444sub-section, section, or end of file.
445The saved paragraph left-margin width is reset to the default.
446.Pp
447See also
448.Sx \&HP ,
449.Sx \&IP ,
450.Sx \&P ,
451.Sx \&PP ,
452and
453.Sx \&TP .
454.Ss \&OP
455Optional command-line argument.
456This is a non-standard GNU extension, included only for compatibility.
457It has the following syntax:
458.Bd -filled -offset indent
459.Pf \. Sx \&OP
460.Cm key Op Cm value
461.Ed
462.Pp
463The
464.Cm key
465is usually a command-line flag and
466.Cm value
467its argument.
468.Ss \&P
469Synonym for
470.Sx \&LP .
471.Pp
472See also
473.Sx \&HP ,
474.Sx \&IP ,
475.Sx \&LP ,
476.Sx \&PP ,
477and
478.Sx \&TP .
479.Ss \&PP
480Synonym for
481.Sx \&LP .
482.Pp
483See also
484.Sx \&HP ,
485.Sx \&IP ,
486.Sx \&LP ,
487.Sx \&P ,
488and
489.Sx \&TP .
490.Ss \&R
491Text is rendered in roman (the default font).
492.Pp
493See also
494.Sx \&I
495and
496.Sx \&B .
497.Ss \&RB
498Text is rendered alternately in roman (the default font) and bold face.
499Whitespace between arguments is omitted in output.
500.Pp
501See
502.Sx \&BI
503for an equivalent example.
504.Pp
505See also
506.Sx \&BI ,
507.Sx \&IB ,
508.Sx \&BR ,
509.Sx \&RI ,
510and
511.Sx \&IR .
512.Ss \&RE
513Explicitly close out the scope of a prior
514.Sx \&RS .
515The default left margin is restored to the state of the original
516.Sx \&RS
517invocation.
518.Ss \&RI
519Text is rendered alternately in roman (the default font) and italics.
520Whitespace between arguments is omitted in output.
521.Pp
522See
523.Sx \&BI
524for an equivalent example.
525.Pp
526See also
527.Sx \&BI ,
528.Sx \&IB ,
529.Sx \&BR ,
530.Sx \&RB ,
531and
532.Sx \&IR .
533.Ss \&RS
534Temporarily reset the default left margin.
535This has the following syntax:
536.Bd -filled -offset indent
537.Pf \. Sx \&RS
538.Op Cm width
539.Ed
540.Pp
541The
542.Cm width
543argument is a
544.Xr roff 7
545scaling width.
546If not specified, the saved or default width is used.
547.Pp
548See also
549.Sx \&RE .
550.Ss \&SB
551Text is rendered in small size (one point smaller than the default font)
552bold face.
553.Ss \&SH
554Begin a section.
555The scope of a section is only closed by another section or the end of
556file.
557The paragraph left-margin width is reset to the default.
558.Ss \&SM
559Text is rendered in small size (one point smaller than the default
560font).
561.Ss \&SS
562Begin a sub-section.
563The scope of a sub-section is closed by a subsequent sub-section,
564section, or end of file.
565The paragraph left-margin width is reset to the default.
566.Ss \&TH
567Sets the title of the manual page with the following syntax:
568.Bd -filled -offset indent
569.Pf \. Sx \&TH
570.Ar title section date
571.Op Ar source Op Ar volume
572.Ed
573.Pp
574Conventionally, the document
575.Ar title
576is given in all caps.
577The recommended
578.Ar date
579format is
580.Sy YYYY-MM-DD
581as specified in the ISO-8601 standard;
582if the argument does not conform, it is printed verbatim.
583If the
584.Ar date
585is empty or not specified, the current date is used.
586The optional
587.Ar source
588string specifies the organisation providing the utility.
589The
590.Ar volume
591string replaces the default rendered volume, which is dictated by the
592manual section.
593.Pp
594Examples:
595.Pp
596.Dl \&.TH CVS 5 "1992-02-12" GNU
597.Ss \&TP
598Begin a paragraph where the head, if exceeding the indentation width, is
599followed by a newline; if not, the body follows on the same line after a
600buffer to the indentation width.
601Subsequent output lines are indented.
602The syntax is as follows:
603.Bd -filled -offset indent
604.Pf \. Sx \&TP
605.Op Cm width
606.Ed
607.Pp
608The
609.Cm width
610argument is a
611.Xr roff 7
612scaling width.
613If specified, it's saved for later paragraph left-margins; if
614unspecified, the saved or default width is used.
615.Pp
616See also
617.Sx \&HP ,
618.Sx \&IP ,
619.Sx \&LP ,
620.Sx \&P ,
621and
622.Sx \&PP .
623.Ss \&UC
624Sets the volume for the footer for compatibility with man pages from
625BSD releases.
626The optional first argument specifies which release it is from.
627.Ss \&br
628Breaks the current line.
629Consecutive invocations have no further effect.
630.Pp
631See also
632.Sx \&sp .
633.Ss \&fi
634End literal mode begun by
635.Sx \&nf .
636.Ss \&in
637Indent relative to the current indentation:
638.Pp
639.D1 Pf \. Sx \&in Op Cm width
640.Pp
641If
642.Cm width
643is signed, the new offset is relative.
644Otherwise, it is absolute.
645This value is reset upon the next paragraph, section, or sub-section.
646.Ss \&na
647Don't align to the right margin.
648.Ss \&nf
649Begin literal mode: all subsequent free-form lines have their end of
650line boundaries preserved.
651May be ended by
652.Sx \&fi .
653Literal mode is implicitly ended by
654.Sx \&SH
655or
656.Sx \&SS .
657.Ss \&sp
658Insert vertical spaces into output with the following syntax:
659.Bd -filled -offset indent
660.Pf \. Sx \&sp
661.Op Cm height
662.Ed
663.Pp
664The
665.Cm height
666argument is a scaling width as described in
667.Xr roff 7 .
668If 0, this is equivalent to the
669.Sx \&br
670macro.
671Defaults to 1, if unspecified.
672.Pp
673See also
674.Sx \&br .
675.Sh MACRO SYNTAX
676The
677.Nm
678macros are classified by scope: line scope or block scope.
679Line macros are only scoped to the current line (and, in some
680situations, the subsequent line).
681Block macros are scoped to the current line and subsequent lines until
682closed by another block macro.
683.Ss Line Macros
684Line macros are generally scoped to the current line, with the body
685consisting of zero or more arguments.
686If a macro is scoped to the next line and the line arguments are empty,
687the next line, which must be text, is used instead.
688Thus:
689.Bd -literal -offset indent
690\&.I
691foo
692.Ed
693.Pp
694is equivalent to
695.Sq \&.I foo .
696If next-line macros are invoked consecutively, only the last is used.
697If a next-line macro is followed by a non-next-line macro, an error is
698raised, except for
699.Sx \&br ,
700.Sx \&sp ,
701and
702.Sx \&na .
703.Pp
704The syntax is as follows:
705.Bd -literal -offset indent
706\&.YO \(lBbody...\(rB
707\(lBbody...\(rB
708.Ed
709.Bl -column "MacroX" "ArgumentsX" "ScopeXXXXX" "CompatX" -offset indent
710.It Em Macro Ta Em Arguments Ta Em Scope     Ta Em Notes
711.It Sx \&AT  Ta    <=1       Ta    current   Ta    \&
712.It Sx \&B   Ta    n         Ta    next-line Ta    \&
713.It Sx \&BI  Ta    n         Ta    current   Ta    \&
714.It Sx \&BR  Ta    n         Ta    current   Ta    \&
715.It Sx \&DT  Ta    0         Ta    current   Ta    \&
716.It Sx \&I   Ta    n         Ta    next-line Ta    \&
717.It Sx \&IB  Ta    n         Ta    current   Ta    \&
718.It Sx \&IR  Ta    n         Ta    current   Ta    \&
719.It Sx \&OP  Ta    0, 1      Ta    current   Ta    compat
720.It Sx \&R   Ta    n         Ta    next-line Ta    \&
721.It Sx \&RB  Ta    n         Ta    current   Ta    \&
722.It Sx \&RI  Ta    n         Ta    current   Ta    \&
723.It Sx \&SB  Ta    n         Ta    next-line Ta    \&
724.It Sx \&SM  Ta    n         Ta    next-line Ta    \&
725.It Sx \&TH  Ta    >1, <6    Ta    current   Ta    \&
726.It Sx \&UC  Ta    <=1       Ta    current   Ta    \&
727.It Sx \&br  Ta    0         Ta    current   Ta    compat
728.It Sx \&fi  Ta    0         Ta    current   Ta    compat
729.It Sx \&in  Ta    1         Ta    current   Ta    compat
730.It Sx \&na  Ta    0         Ta    current   Ta    compat
731.It Sx \&nf  Ta    0         Ta    current   Ta    compat
732.It Sx \&sp  Ta    1         Ta    current   Ta    compat
733.El
734.Pp
735Macros marked as
736.Qq compat
737are included for compatibility with the significant corpus of existing
738manuals that mix dialects of roff.
739These macros should not be used for portable
740.Nm
741manuals.
742.Ss Block Macros
743Block macros comprise a head and body.
744As with in-line macros, the head is scoped to the current line and, in
745one circumstance, the next line (the next-line stipulations as in
746.Sx Line Macros
747apply here as well).
748.Pp
749The syntax is as follows:
750.Bd -literal -offset indent
751\&.YO \(lBhead...\(rB
752\(lBhead...\(rB
753\(lBbody...\(rB
754.Ed
755.Pp
756The closure of body scope may be to the section, where a macro is closed
757by
758.Sx \&SH ;
759sub-section, closed by a section or
760.Sx \&SS ;
761part, closed by a section, sub-section, or
762.Sx \&RE ;
763or paragraph, closed by a section, sub-section, part,
764.Sx \&HP ,
765.Sx \&IP ,
766.Sx \&LP ,
767.Sx \&P ,
768.Sx \&PP ,
769or
770.Sx \&TP .
771No closure refers to an explicit block closing macro.
772.Pp
773As a rule, block macros may not be nested; thus, calling a block macro
774while another block macro scope is open, and the open scope is not
775implicitly closed, is syntactically incorrect.
776.Bl -column "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" "compatX" -offset indent
777.It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope  Ta Em Notes
778.It Sx \&HP  Ta    <2        Ta    current    Ta    paragraph   Ta    \&
779.It Sx \&IP  Ta    <3        Ta    current    Ta    paragraph   Ta    \&
780.It Sx \&LP  Ta    0         Ta    current    Ta    paragraph   Ta    \&
781.It Sx \&P   Ta    0         Ta    current    Ta    paragraph   Ta    \&
782.It Sx \&PP  Ta    0         Ta    current    Ta    paragraph   Ta    \&
783.It Sx \&RE  Ta    0         Ta    current    Ta    none        Ta    compat
784.It Sx \&RS  Ta    1         Ta    current    Ta    part        Ta    compat
785.It Sx \&SH  Ta    >0        Ta    next-line  Ta    section     Ta    \&
786.It Sx \&SS  Ta    >0        Ta    next-line  Ta    sub-section Ta    \&
787.It Sx \&TP  Ta    n         Ta    next-line  Ta    paragraph   Ta    \&
788.El
789.Pp
790Macros marked
791.Qq compat
792are as mentioned in
793.Sx Line Macros .
794.Pp
795If a block macro is next-line scoped, it may only be followed by in-line
796macros for decorating text.
797.Ss Font handling
798In
799.Nm
800documents, both
801.Sx Physical markup
802macros and
803.Xr roff 7
804.Ql \ef
805font escape sequences can be used to choose fonts.
806In text lines, the effect of manual font selection by escape sequences
807only lasts until the next macro invocation; in macro lines, it only lasts
808until the end of the macro scope.
809Note that macros like
810.Sx \&BR
811open and close a font scope for each argument.
812.Sh COMPATIBILITY
813This section documents areas of questionable portability between
814implementations of the
815.Nm
816language.
817.Pp
818.Bl -dash -compact
819.It
820Do not depend on
821.Sx \&SH
822or
823.Sx \&SS
824to close out a literal context opened with
825.Sx \&nf .
826This behaviour may not be portable.
827.It
828In quoted literals, GNU troff allowed pair-wise double-quotes to produce
829a standalone double-quote in formatted output.
830It is not known whether this behaviour is exhibited by other formatters.
831.It
832troff suppresses a newline before
833.Sq \(aq
834macro output; in mandoc, it is an alias for the standard
835.Sq \&.
836control character.
837.It
838The
839.Sq \eh
840.Pq horizontal position ,
841.Sq \ev
842.Pq vertical position ,
843.Sq \em
844.Pq text colour ,
845.Sq \eM
846.Pq text filling colour ,
847.Sq \ez
848.Pq zero-length character ,
849.Sq \ew
850.Pq string length ,
851.Sq \ek
852.Pq horizontal position marker ,
853.Sq \eo
854.Pq text overstrike ,
855and
856.Sq \es
857.Pq text size
858escape sequences are all discarded in mandoc.
859.It
860The
861.Sq \ef
862scaling unit is accepted by mandoc, but rendered as the default unit.
863.It
864The
865.Sx \&sp
866macro does not accept negative values in mandoc.
867In GNU troff, this would result in strange behaviour.
868.It
869In page header lines, GNU troff versions up to and including 1.21
870only print
871.Ar volume
872names explicitly specified in the
873.Sx \&TH
874macro; mandoc and newer groff print the default volume name
875corresponding to the
876.Ar section
877number when no
878.Ar volume
879is given, like in
880.Xr mdoc 7 .
881.El
882.Pp
883The
884.Sx OP
885macro is part of the extended
886.Nm
887macro set, and may not be portable to non-GNU troff implementations.
888.Sh SEE ALSO
889.Xr man 1 ,
890.Xr mandoc 1 ,
891.Xr eqn 7 ,
892.Xr mandoc_char 7 ,
893.Xr mdoc 7 ,
894.Xr roff 7 ,
895.Xr tbl 7
896.Sh HISTORY
897The
898.Nm
899language first appeared as a macro package for the roff typesetting
900system in
901.At v7 .
902It was later rewritten by James Clark as a macro package for groff.
903Eric S. Raymond wrote the extended
904.Nm
905macros for groff in 2007.
906The stand-alone implementation that is part of the
907.Xr mandoc 1
908utility written by Kristaps Dzonsons appeared in
909.Ox 4.6 .
910.Sh AUTHORS
911This
912.Nm
913reference was written by
914.An Kristaps Dzonsons ,
915.Mt kristaps@bsd.lv .
916.Sh CAVEATS
917Do not use this language.
918Use
919.Xr mdoc 7 ,
920instead.
921