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