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