]> git.cameronkatri.com Git - mandoc.git/blob - man.7
Rename mandoc_getarg() to roff_getarg() and pass it the roff parser
[mandoc.git] / man.7
1 .\" $Id: man.7,v 1.141 2018/12/16 02:21:00 schwarze Exp $
2 .\"
3 .\" Copyright (c) 2009, 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4 .\" Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>
5 .\" Copyright (c) 2017 Anthony Bentley <bentley@openbsd.org>
6 .\" Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org>
7 .\"
8 .\" Permission to use, copy, modify, and distribute this software for any
9 .\" purpose with or without fee is hereby granted, provided that the above
10 .\" copyright notice and this permission notice appear in all copies.
11 .\"
12 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 .\"
20 .Dd $Mdocdate: December 16 2018 $
21 .Dt MAN 7
22 .Os
23 .Sh NAME
24 .Nm man
25 .Nd legacy formatting language for manual pages
26 .Sh DESCRIPTION
27 The
28 .Nm man
29 language was the standard formatting language for
30 .At
31 manual pages from 1979 to 1989.
32 Do not use it to write new manual pages: it is a purely presentational
33 language and lacks support for semantic markup.
34 Use the
35 .Xr mdoc 7
36 language, instead.
37 .Pp
38 In a
39 .Nm
40 document, lines beginning with the control character
41 .Sq \&.
42 are called
43 .Dq macro lines .
44 The first word is the macro name.
45 It usually consists of two capital letters.
46 For a list of portable macros, see
47 .Sx MACRO OVERVIEW .
48 The words following the macro name are arguments to the macro.
49 .Pp
50 Lines not beginning with the control character are called
51 .Dq text lines .
52 They provide free-form text to be printed; the formatting of the text
53 depends on the respective processing context:
54 .Bd -literal -offset indent
55 \&.SH Macro lines change control state.
56 Text lines are interpreted within the current state.
57 .Ed
58 .Pp
59 Many aspects of the basic syntax of the
60 .Nm
61 language are based on the
62 .Xr roff 7
63 language; see the
64 .Em LANGUAGE SYNTAX
65 and
66 .Em MACRO SYNTAX
67 sections in the
68 .Xr roff 7
69 manual for details, in particular regarding
70 comments, escape sequences, whitespace, and quoting.
71 .Pp
72 Each
73 .Nm
74 document starts with the
75 .Sx \&TH
76 macro specifying the document's name and section, followed by the
77 .Sx NAME
78 section formatted as follows:
79 .Bd -literal -offset indent
80 \&.TH PROGNAME 1 1979-01-10
81 \&.SH NAME
82 \efBprogname\efR \e(en one line about what it does
83 .Ed
84 .Sh MACRO OVERVIEW
85 This overview is sorted such that macros of similar purpose are listed
86 together.
87 Deprecated and non-portable macros are not included in the overview,
88 but can be found in the alphabetical reference below.
89 .Ss Page header and footer meta-data
90 .Bl -column "RS, RE" description
91 .It Sx TH Ta set the title: Ar name section date Op Ar source Op Ar volume
92 .It Sx AT Ta display AT&T UNIX version in the page footer (<= 1 argument)
93 .It Sx UC Ta display BSD version in the page footer (<= 1 argument)
94 .El
95 .Ss Sections and paragraphs
96 .Bl -column "RS, RE" description
97 .It Sx SH Ta section header (one line)
98 .It Sx SS Ta subsection header (one line)
99 .It Sx PP Ta start an undecorated paragraph (no arguments)
100 .It Sx RS , RE Ta reset the left margin: Op Ar width
101 .It Sx IP Ta indented paragraph: Op Ar head Op Ar width
102 .It Sx TP Ta tagged paragraph: Op Ar width
103 .It Sx PD Ta set vertical paragraph distance: Op Ar height
104 .It Sx fi , nf Ta fill mode and no-fill mode (no arguments)
105 .It Sx in Ta additional indent: Op Ar width
106 .El
107 .Ss Physical markup
108 .Bl -column "RS, RE" description
109 .It Sx B Ta boldface font
110 .It Sx I Ta italic font
111 .It Sx SB Ta small boldface font
112 .It Sx SM Ta small roman font
113 .It Sx BI Ta alternate between boldface and italic fonts
114 .It Sx BR Ta alternate between boldface and roman fonts
115 .It Sx IB Ta alternate between italic and boldface fonts
116 .It Sx IR Ta alternate between italic and roman fonts
117 .It Sx RB Ta alternate between roman and boldface fonts
118 .It Sx RI Ta alternate between roman and italic fonts
119 .El
120 .Sh MACRO REFERENCE
121 This section is a canonical reference to all macros, arranged
122 alphabetically.
123 For the scoping of individual macros, see
124 .Sx MACRO SYNTAX .
125 .Ss \&AT
126 Sets the volume for the footer for compatibility with man pages from
127 .At
128 releases.
129 The optional arguments specify which release it is from.
130 .Ss \&B
131 Text is rendered in bold face.
132 .Ss \&BI
133 Text is rendered alternately in bold face and italic.
134 Thus,
135 .Sq .BI this word and that
136 causes
137 .Sq this
138 and
139 .Sq and
140 to render in bold face, while
141 .Sq word
142 and
143 .Sq that
144 render in italics.
145 Whitespace between arguments is omitted in output.
146 .Pp
147 Example:
148 .Pp
149 .Dl \&.BI bold italic bold italic
150 .Ss \&BR
151 Text is rendered alternately in bold face and roman (the default font).
152 Whitespace between arguments is omitted in output.
153 See also
154 .Sx \&BI .
155 .Ss \&DT
156 Restore the default tabulator positions.
157 They are at intervals of 0.5 inches.
158 This has no effect unless the tabulator positions were changed with the
159 .Xr roff 7
160 .Ic \&ta
161 request.
162 .Ss \&EE
163 This is a non-standard GNU extension.
164 In
165 .Xr mandoc 1 ,
166 it does the same as
167 .Sx \&fi .
168 .Ss \&EX
169 This is a non-standard GNU extension.
170 In
171 .Xr mandoc 1 ,
172 it does the same as
173 .Sx \&nf .
174 .Ss \&HP
175 Begin a paragraph whose initial output line is left-justified, but
176 subsequent output lines are indented, with the following syntax:
177 .Bd -filled -offset indent
178 .Pf \. Sx \&HP
179 .Op Ar width
180 .Ed
181 .Pp
182 The
183 .Ar width
184 argument is a
185 .Xr roff 7
186 scaling width.
187 If specified, it's saved for later paragraph left margins;
188 if unspecified, the saved or default width is used.
189 .Pp
190 This macro is portable, but deprecated
191 because it has no good representation in HTML output,
192 usually ending up indistinguishable from
193 .Sx \&PP .
194 .Ss \&I
195 Text is rendered in italics.
196 .Ss \&IB
197 Text is rendered alternately in italics and bold face.
198 Whitespace between arguments is omitted in output.
199 See also
200 .Sx \&BI .
201 .Ss \&IP
202 Begin an indented paragraph with the following syntax:
203 .Bd -filled -offset indent
204 .Pf \. Sx \&IP
205 .Op Ar head Op Ar width
206 .Ed
207 .Pp
208 The
209 .Ar width
210 argument is a
211 .Xr roff 7
212 scaling width defining the left margin.
213 It's saved for later paragraph left-margins; if unspecified, the saved or
214 default width is used.
215 .Pp
216 The
217 .Ar head
218 argument is used as a leading term, flushed to the left margin.
219 This is useful for bulleted paragraphs and so on.
220 .Ss \&IR
221 Text is rendered alternately in italics and roman (the default font).
222 Whitespace between arguments is omitted in output.
223 See also
224 .Sx \&BI .
225 .Ss \&LP
226 A synonym for
227 .Sx \&PP .
228 .Ss \&ME
229 End a mailto block started with
230 .Sx \&MT .
231 This is a non-standard GNU extension.
232 .Ss \&MT
233 Begin a mailto block.
234 This is a non-standard GNU extension.
235 It has the following syntax:
236 .Bd -literal -offset indent
237 .Pf \. Sx \&MT Ar address
238 link description to be shown
239 .Pf \. Sx ME
240 .Ed
241 .Ss \&OP
242 Optional command-line argument.
243 This is a non-standard GNU extension.
244 It has the following syntax:
245 .Bd -filled -offset indent
246 .Pf \. Sx \&OP
247 .Ar key Op Ar value
248 .Ed
249 .Pp
250 The
251 .Ar key
252 is usually a command-line flag and
253 .Ar value
254 its argument.
255 .Ss \&P
256 A synonym for
257 .Sx \&PP .
258 .Ss \&PD
259 Specify the vertical space to be inserted before each new paragraph.
260 .br
261 The syntax is as follows:
262 .Bd -filled -offset indent
263 .Pf \. Sx \&PD
264 .Op Ar height
265 .Ed
266 .Pp
267 The
268 .Ar height
269 argument is a
270 .Xr roff 7
271 scaling width.
272 It defaults to
273 .Cm 1v .
274 If the unit is omitted,
275 .Cm v
276 is assumed.
277 .Pp
278 This macro affects the spacing before any subsequent instances of
279 .Sx \&HP ,
280 .Sx \&IP ,
281 .Sx \&LP ,
282 .Sx \&P ,
283 .Sx \&PP ,
284 .Sx \&SH ,
285 .Sx \&SS ,
286 .Sx \&SY ,
287 and
288 .Sx \&TP .
289 .Ss \&PP
290 Begin an undecorated paragraph.
291 The scope of a paragraph is closed by a subsequent paragraph,
292 sub-section, section, or end of file.
293 The saved paragraph left-margin width is reset to the default.
294 .Ss \&RB
295 Text is rendered alternately in roman (the default font) and bold face.
296 Whitespace between arguments is omitted in output.
297 See also
298 .Sx \&BI .
299 .Ss \&RE
300 Explicitly close out the scope of a prior
301 .Sx \&RS .
302 The default left margin is restored to the state before that
303 .Sx \&RS
304 invocation.
305 .Pp
306 The syntax is as follows:
307 .Bd -filled -offset indent
308 .Pf \. Sx \&RE
309 .Op Ar level
310 .Ed
311 .Pp
312 Without an argument, the most recent
313 .Sx \&RS
314 block is closed out.
315 If
316 .Ar level
317 is 1, all open
318 .Sx \&RS
319 blocks are closed out.
320 Otherwise,
321 .Ar level No \(mi 1
322 nested
323 .Sx \&RS
324 blocks remain open.
325 .Ss \&RI
326 Text is rendered alternately in roman (the default font) and italics.
327 Whitespace between arguments is omitted in output.
328 See also
329 .Sx \&BI .
330 .Ss \&RS
331 Temporarily reset the default left margin.
332 This has the following syntax:
333 .Bd -filled -offset indent
334 .Pf \. Sx \&RS
335 .Op Ar width
336 .Ed
337 .Pp
338 The
339 .Ar width
340 argument is a
341 .Xr roff 7
342 scaling width.
343 If not specified, the saved or default width is used.
344 .Pp
345 See also
346 .Sx \&RE .
347 .Ss \&SB
348 Text is rendered in small size (one point smaller than the default font)
349 bold face.
350 .Ss \&SH
351 Begin a section.
352 The scope of a section is only closed by another section or the end of
353 file.
354 The paragraph left-margin width is reset to the default.
355 .Ss \&SM
356 Text is rendered in small size (one point smaller than the default
357 font).
358 .Ss \&SS
359 Begin a sub-section.
360 The scope of a sub-section is closed by a subsequent sub-section,
361 section, or end of file.
362 The paragraph left-margin width is reset to the default.
363 .Ss \&SY
364 Begin a synopsis block with the following syntax:
365 .Bd -unfilled -offset indent
366 .Pf \. Sx \&SY Ar command
367 .Ar arguments
368 .Pf \. Sx \&YS
369 .Ed
370 .Pp
371 This is a non-standard GNU extension
372 and very rarely used even in GNU manual pages.
373 Formatting is similar to
374 .Sx \&IP .
375 .Ss \&TH
376 Set the name of the manual page for use in the page header
377 and footer with the following syntax:
378 .Bd -filled -offset indent
379 .Pf \. Sx \&TH
380 .Ar name section date
381 .Op Ar source Op Ar volume
382 .Ed
383 .Pp
384 Conventionally, the document
385 .Ar name
386 is given in all caps.
387 The
388 .Ar section
389 is usually a single digit, in a few cases followed by a letter.
390 The recommended
391 .Ar date
392 format is
393 .Sy YYYY-MM-DD
394 as specified in the ISO-8601 standard;
395 if the argument does not conform, it is printed verbatim.
396 If the
397 .Ar date
398 is empty or not specified, the current date is used.
399 The optional
400 .Ar source
401 string specifies the organisation providing the utility.
402 When unspecified,
403 .Xr mandoc 1
404 uses its
405 .Fl Ios
406 argument.
407 The
408 .Ar volume
409 string replaces the default volume title of the
410 .Ar section .
411 .Pp
412 Examples:
413 .Pp
414 .Dl \&.TH CVS 5 "1992-02-12" GNU
415 .Ss \&TP
416 Begin a paragraph where the head, if exceeding the indentation width, is
417 followed by a newline; if not, the body follows on the same line after
418 advancing to the indentation width.
419 Subsequent output lines are indented.
420 The syntax is as follows:
421 .Bd -unfilled -offset indent
422 .Pf \. Sx \&TP Op Ar width
423 .Ar head No \e" one line
424 .Ar body
425 .Ed
426 .Pp
427 The
428 .Ar width
429 argument is a
430 .Xr roff 7
431 scaling width.
432 If specified, it's saved for later paragraph left-margins; if
433 unspecified, the saved or default width is used.
434 .Ss \&TQ
435 Like
436 .Sx \&TP ,
437 except that no vertical spacing is inserted before the paragraph.
438 This is a non-standard GNU extension
439 and very rarely used even in GNU manual pages.
440 .Ss \&UC
441 Sets the volume for the footer for compatibility with man pages from
442 .Bx
443 releases.
444 The optional first argument specifies which release it is from.
445 .Ss \&UE
446 End a uniform resource identifier block started with
447 .Sx \&UR .
448 This is a non-standard GNU extension.
449 .Ss \&UR
450 Begin a uniform resource identifier block.
451 This is a non-standard GNU extension.
452 It has the following syntax:
453 .Bd -literal -offset indent
454 .Pf \. Sx \&UR Ar uri
455 link description to be shown
456 .Pf \. Sx UE
457 .Ed
458 .Ss \&YS
459 End a synopsis block started with
460 .Sx \&SY .
461 This is a non-standard GNU extension.
462 .Ss \&fi
463 End literal mode started with
464 .Sx \&nf .
465 .Ss \&in
466 Indent relative to the current indentation:
467 .Pp
468 .D1 Pf \. Sx \&in Op Ar width
469 .Pp
470 If
471 .Ar width
472 is signed, the new offset is relative.
473 Otherwise, it is absolute.
474 This value is reset upon the next paragraph, section, or sub-section.
475 .Ss \&nf
476 Begin literal mode: all subsequent free-form lines have their end of
477 line boundaries preserved.
478 May be ended by
479 .Sx \&fi .
480 Literal mode is implicitly ended by
481 .Sx \&SH
482 or
483 .Sx \&SS .
484 .Sh MACRO SYNTAX
485 The
486 .Nm
487 macros are classified by scope: line scope or block scope.
488 Line macros are only scoped to the current line (and, in some
489 situations, the subsequent line).
490 Block macros are scoped to the current line and subsequent lines until
491 closed by another block macro.
492 .Ss Line Macros
493 Line macros are generally scoped to the current line, with the body
494 consisting of zero or more arguments.
495 If a macro is scoped to the next line and the line arguments are empty,
496 the next line, which must be text, is used instead.
497 Thus:
498 .Bd -literal -offset indent
499 \&.I
500 foo
501 .Ed
502 .Pp
503 is equivalent to
504 .Sq \&.I foo .
505 If next-line macros are invoked consecutively, only the last is used.
506 If a next-line macro is followed by a non-next-line macro, an error is
507 raised.
508 .Pp
509 The syntax is as follows:
510 .Bd -literal -offset indent
511 \&.YO \(lBbody...\(rB
512 \(lBbody...\(rB
513 .Ed
514 .Bl -column "MacroX" "ArgumentsX" "ScopeXXXXX" "CompatX" -offset indent
515 .It Em Macro Ta Em Arguments Ta Em Scope Ta Em Notes
516 .It Sx \&AT Ta <=1 Ta current Ta \&
517 .It Sx \&B Ta n Ta next-line Ta \&
518 .It Sx \&BI Ta n Ta current Ta \&
519 .It Sx \&BR Ta n Ta current Ta \&
520 .It Sx \&DT Ta 0 Ta current Ta \&
521 .It Sx \&EE Ta 0 Ta current Ta GNU
522 .It Sx \&EX Ta 0 Ta current Ta GNU
523 .It Sx \&I Ta n Ta next-line Ta \&
524 .It Sx \&IB Ta n Ta current Ta \&
525 .It Sx \&IR Ta n Ta current Ta \&
526 .It Sx \&OP Ta >=1 Ta current Ta GNU
527 .It Sx \&PD Ta 1 Ta current Ta \&
528 .It Sx \&RB Ta n Ta current Ta \&
529 .It Sx \&RI Ta n Ta current Ta \&
530 .It Sx \&SB Ta n Ta next-line Ta \&
531 .It Sx \&SM Ta n Ta next-line Ta \&
532 .It Sx \&TH Ta >1, <6 Ta current Ta \&
533 .It Sx \&UC Ta <=1 Ta current Ta \&
534 .It Sx \&fi Ta 0 Ta current Ta Xr roff 7
535 .It Sx \&in Ta 1 Ta current Ta Xr roff 7
536 .It Sx \&nf Ta 0 Ta current Ta Xr roff 7
537 .El
538 .Ss Block Macros
539 Block macros comprise a head and body.
540 As with in-line macros, the head is scoped to the current line and, in
541 one circumstance, the next line (the next-line stipulations as in
542 .Sx Line Macros
543 apply here as well).
544 .Pp
545 The syntax is as follows:
546 .Bd -literal -offset indent
547 \&.YO \(lBhead...\(rB
548 \(lBhead...\(rB
549 \(lBbody...\(rB
550 .Ed
551 .Pp
552 The closure of body scope may be to the section, where a macro is closed
553 by
554 .Sx \&SH ;
555 sub-section, closed by a section or
556 .Sx \&SS ;
557 or paragraph, closed by a section, sub-section,
558 .Sx \&HP ,
559 .Sx \&IP ,
560 .Sx \&LP ,
561 .Sx \&P ,
562 .Sx \&PP ,
563 .Sx \&RE ,
564 .Sx \&SY ,
565 or
566 .Sx \&TP .
567 No closure refers to an explicit block closing macro.
568 .Pp
569 As a rule, block macros may not be nested; thus, calling a block macro
570 while another block macro scope is open, and the open scope is not
571 implicitly closed, is syntactically incorrect.
572 .Bl -column "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" "compatX" -offset indent
573 .It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope Ta Em Notes
574 .It Sx \&HP Ta <2 Ta current Ta paragraph Ta \&
575 .It Sx \&IP Ta <3 Ta current Ta paragraph Ta \&
576 .It Sx \&LP Ta 0 Ta current Ta paragraph Ta \&
577 .It Sx \&ME Ta 0 Ta none Ta none Ta GNU
578 .It Sx \&MT Ta 1 Ta current Ta to \&ME Ta GNU
579 .It Sx \&P Ta 0 Ta current Ta paragraph Ta \&
580 .It Sx \&PP Ta 0 Ta current Ta paragraph Ta \&
581 .It Sx \&RE Ta <=1 Ta current Ta none Ta \&
582 .It Sx \&RS Ta 1 Ta current Ta to \&RE Ta \&
583 .It Sx \&SH Ta >0 Ta next-line Ta section Ta \&
584 .It Sx \&SS Ta >0 Ta next-line Ta sub-section Ta \&
585 .It Sx \&SY Ta 1 Ta current Ta to \&YS Ta GNU
586 .It Sx \&TP Ta n Ta next-line Ta paragraph Ta \&
587 .It Sx \&TQ Ta n Ta next-line Ta paragraph Ta GNU
588 .It Sx \&UE Ta 0 Ta current Ta none Ta GNU
589 .It Sx \&UR Ta 1 Ta current Ta part Ta GNU
590 .It Sx \&YS Ta 0 Ta none Ta none Ta GNU
591 .El
592 .Pp
593 If a block macro is next-line scoped, it may only be followed by in-line
594 macros for decorating text.
595 .Ss Font handling
596 In
597 .Nm
598 documents, both
599 .Sx Physical markup
600 macros and
601 .Xr roff 7
602 .Ql \ef
603 font escape sequences can be used to choose fonts.
604 In text lines, the effect of manual font selection by escape sequences
605 only lasts until the next macro invocation; in macro lines, it only lasts
606 until the end of the macro scope.
607 Note that macros like
608 .Sx \&BR
609 open and close a font scope for each argument.
610 .Sh SEE ALSO
611 .Xr man 1 ,
612 .Xr mandoc 1 ,
613 .Xr eqn 7 ,
614 .Xr mandoc_char 7 ,
615 .Xr mdoc 7 ,
616 .Xr roff 7 ,
617 .Xr tbl 7
618 .Sh HISTORY
619 The
620 .Nm
621 language first appeared as a macro package for the roff typesetting
622 system in
623 .At v7 .
624 It was later rewritten by James Clark as a macro package for groff.
625 Eric S. Raymond wrote the extended
626 .Nm
627 macros for groff in 2007.
628 The stand-alone implementation that is part of the
629 .Xr mandoc 1
630 utility written by Kristaps Dzonsons appeared in
631 .Ox 4.6 .
632 .Sh AUTHORS
633 This
634 .Nm
635 reference was written by
636 .An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .