|
Name | Synopsis | Description | Options | Files | Notes | Authors | See also | COLOPHON |
|
|
|
groff_man_style(7) Miscellaneous Information Manual groff_man_style(7)
groff_man_style - GNU roff man page tutorial and style guide
groff -man [option ...] [file ...]
groff -m man [option ...] [file ...]
The GNU implementation of the man macro package is part of the
groff document formatting system. It is used to produce manual
pages (“man pages”) like the one you are reading.
This document presents the macros thematically; for those needing
only a quick reference, the following table lists them
alphabetically, with cross references to appropriate subsections
below.
Macro Meaning Subsection
───────────────────────────────────────────────────────────────
.B Bold Font style macros
.BI Bold, italic alternating Font style macros
.BR Bold, roman alternating Font style macros
.EE Example end Document structure macros
.EX Example begin Document structure macros
.I Italic Font style macros
.IB Italic, bold alternating Font style macros
.IP Indented paragraph Paragraphing macros
.IR Italic, roman alternating Font style macros
.LP Begin paragraph Paragraphing macros
.ME Mail-to end Hyperlink macros
.MR Man page cross reference Hyperlink macros
.MT Mail-to start Hyperlink macros
.P Begin paragraph Paragraphing macros
.PP Begin paragraph Paragraphing macros
.RB Roman, bold alternating Font style macros
.RE Relative inset end Document structure macros
.RI Roman, italic alternating Font style macros
.RS Relative inset start Document structure macros
.SB Small bold Font style macros
.SH Section heading Document structure macros
.SM Small Font style macros
.SS Subsection heading Document structure macros
.SY Synopsis start Command synopsis macros
.TH Title heading Document structure macros
.TP Tagged paragraph Paragraphing macros
.TQ Supplemental paragraph tag Paragraphing macros
.UE URI end Hyperlink macros
.UR URI start Hyperlink macros
.YS Synopsis end Command synopsis macros
Macros whose use we discourage (.AT, .DT, .HP, .OP, .PD, and .UC)
are described in subsection “Deprecated features” below.
Throughout Unix documentation, a manual entry is referred simply
to as a “man page”, regardless of its length, without gendered
implication, and irrespective of the macro package selected for
its composition.
Man pages should be encoded using Unicode basic Latin code points
exclusively, and employ the Unix line-ending convention (U+000A
only).
Macro reference preliminaries
Each macro is described in a tagged paragraph. Closely related
macros, such as .EX and .EE, are grouped together.
A macro call appears on a line starting with a dot (“.”),
followed by zero or more spaces and then the macro name. Some
macros accept arguments; each such argument is separated from the
macro name and any subsequent arguments by one or more spaces. A
newline, unless escaped (see subsection “Portability” below),
terminates the macro call.
Optional macro arguments are indicated by surrounding them with
square brackets. If a macro accepts multiple arguments, those
containing space characters must be double-quoted to be
interpreted correctly. An empty macro argument can be specified
with a pair of double-quotes (“""”), but the man package is
designed such that this should seldom be necessary. See section
“Notes” below for examples of cases where better alternatives to
empty arguments in macro calls are available. Most macro
arguments wll be formatted as text in the output; exceptions are
noted.
Bear in mind that groff is fundamentally a programming system for
typesetting. Consequently, the verb “to set” is frequently used
below in the sense “to typeset”.
We describe below several man macros that plant one-line input
traps: the next input line that directly produces formatted
output is treated specially. For man documents written in the
language subset described in section “Portability” below, this
means that control lines using the empty request and uncommented
input lines ending with an escaped newline or the \c escape
sequence do not spring the trap; anything else does.
Document structure macros
The highest level of organization of a man page is determined by
this group of macros. .TH (title heading) identifies the
document as a man page and defines information enabling or a
similar tool to index it. Section headings (.SH), one of which
is mandatory and many of which are standardized, facilitate quick
location of relevant material by the reader and aid the man page
writer to discuss all essential aspects of the topic. Subsection
headings (.SS) are optional and permit sections that grow long to
develop in a controlled way. Many technical discussions benefit
from examples; lengthy ones, especially those reflecting multiple
lines of input to or output from the system, are usefully
bracketed by .EX and .EE. When none of the foregoing meets a
structural demand, a region within a (sub)section can be manually
inset within .RS and .RE macros.
.TH topic section [footer-middle] [footer-inside] [header-middle]
Determine the contents of the page header and footer.
roff systems refer to these collectively as “titles”. The
subject of the man page is topic and the section of the
manual to which it belongs is section. This use of
“section” has nothing to do with the section headings
otherwise discussed in this page; it arises from the
organizational scheme of printed and bound Unix manuals.
See for details on the section numbers and suffixes
applicable to your system. topic and section are
positioned together at the left and right in the header
(with section in parentheses immediately appended to
topic). footer-middle is centered in the footer. The
arrangement of the rest of the footer depends on whether
double-sided layout is enabled with the option -rD1. When
disabled (the default), footer-inside is positioned at the
bottom left. Otherwise, footer-inside appears at the
bottom left on recto (odd-numbered) pages, and at the
bottom right on verso (even-numbered) pages. The outside
footer is the page number, except in the continuous-
rendering mode enabled by the option -rcR=1, in which case
it is the topic and section, as in the header. header-
middle is centered in the header. If section is a simple
integer between 1 and 9 (inclusive), there is no need to
specify header-middle; an.tmac will supply text for it.
The macro package may also abbreviate topic and footer-
inside with ellipses (...) if they overrun the space
available in the header and footer, respectively. For
HTML output, headers and footers are suppressed.
Additionally, this macro starts a new page; the page
number is reset to 1 (unless the -rC1 option is given).
This feature is intended only for formatting multiple man
pages.
A man page should contain exactly one .TH call at or near
the beginning of the file, prior to any other macro calls.
By convention, footer-middle is the most recent
modification date of the man page source document, and
footer-inside is the name and version or release of the
project providing it.
.SH [heading-text]
Set heading-text as a section heading. If no argument is
given, a one-line input trap is planted; text on the next
line becomes heading-text. This text is set at the left
margin, in bold (or the font specified by the string HF)
and, on typesetter devices, slightly larger than the base
type size. If the heading font \*[HF] is bold, use of an
italic style in heading-text is mapped to the bold-italic
style if available in the font family. The inset level is
reset to 1 and paragraph indentation to the default. Text
after heading-text is set as an ordinary paragraph (.P).
The content of heading-text and ordering of sections has
been standardized by common practice, as has much of the
layout of material within sections. For example, a
section called “Name” or “NAME” must exist, must be the
first section after the .TH call, and must contain only a
line of the form
topic[, another-topic]... \- summary-description
for a man page to be properly indexed. See for the
conventions prevailing on your system.
.SS [subheading-text]
Set subheading-text as a subsection heading indented
between a section heading and an ordinary paragraph (.P).
See subsection “Horizontal and vertical spacing” below for
the indentation amount. If no argument is given, a one-
line input trap is planted; text on the next line becomes
subheading-text. This text is set in bold (or the font
specified by the string HF). If the heading font \*[HF]
is bold, use of an italic style in subheading-text is
mapped to the bold-italic style if available in the font
family. The inset level is reset to 1 and paragraph
indentation to the default. Text after subheading-text is
set as an ordinary paragraph (.P).
.EX
.EE Begin and end example. After .EX, filling is disabled and
a constant-width (monospaced) font is selected. Calling
.EE enables filling and restores the previous font.
Example regions are useful for formatting code, shell
sessions, and text file contents. An example region is
not a “literal mode” of any sort: special character escape
sequences must still be used to produce correct glyphs for
', -, \, ^, `, and ~, and sentence endings are still
detected and additional inter-sentence space applied. If
the amount of additional inter-sentence spacing is
altered, the rendering of, for instance, regular
expressions using . or ? followed by multiple spaces can
change. Use the non-printing input break escape sequence
\& before the spaces.
These macros are extensions, introduced in Ninth Edition
Research Unix, to the original man package. Many systems
running AT&T, Heirloom Doctools, or Plan 9 troff support
them. To be certain your page will be portable to systems
that do not, copy their definitions from the an-ext.tmac
file of a groff installation.
.RS [indentation]
Start a new relative inset level, moving the left margin
right by indentation, if specified, and by a default
amount otherwise; see subsection “Horizontal and vertical
spacing” below. Calls to .RS can be nested; each call
increments by 1 the inset level used by .RE. The inset
level prior to any .RS calls is 1.
.RE [level]
End a relative inset; move the left margin back to that
corresponding to inset level level. If no argument is
given, move the left margin one level back.
Paragraphing macros
An ordinary paragraph (.P) like this one is set without a first-
line indentation at the current left margin. In man pages and
other technical literature, definition lists are frequently
encountered; these can be set as “tagged paragraphs”, which have
one (.TP) or more (.TQ) leading tags followed by a paragraph that
has an additional indentation. The indented paragraph (.IP)
macro is useful to continue the indented content of a narrative
started with .TP, or to present an itemized or ordered list. All
paragraph macros break the output line at the current position.
If another paragraph macro has occurred since the previous .SH or
.SS, they (except for .TQ) follow the break with a default amount
of vertical space, which can be changed by the deprecated .PD
macro; see subsection “Horizontal and vertical spacing” below.
They also reset the type size and font style to defaults (.TQ
again excepted); see subsection “Font style macros” below.
.P
.LP
.PP Begin a new paragraph; these macros are synonymous. The
indentation is reset to the default value; the left
margin, as affected by .RS and .RE, is not.
.TP [indentation]
Set a paragraph with a leading tag, and the remainder of
the paragraph indented. A one-line input trap is planted;
text on the next line, which can be formatted with a
macro, becomes the tag, which is placed at the current
left margin. Subsequent text is indented by indentation,
if specified, and by a default amount otherwise; see
subsection “Horizontal and vertical spacing” below. If
the tag is not as wide as the indentation, the paragraph
starts on the same line as the tag, at the applicable
indentation, and continues on the following lines.
Otherwise, the descriptive part of the paragraph begins on
the line following the tag.
The line containing the tag can include a macro call, for
instance to set the tag in bold with .B. .TP was used to
write the first paragraph of this description of .TP, and
.IP the subsequent ones.
.TQ Set an additional tag for a paragraph tagged with .TP.
The pending output line is broken. A one-line input trap
is planted as with .TP.
This macro is a GNU extension not defined on systems
running AT&T, Plan 9, or Solaris troff; see an-ext.tmac in
section “Files” below.
The descriptions of .P, .LP, and .PP above were written
using .TP and .TQ.
.IP [tag] [indentation]
Set an indented paragraph with an optional tag. The tag
and indentation arguments, if present, are handled as with
.TP, with the exception that the tag argument to .IP
cannot include a macro call.
Two convenient uses for .IP are
(1) to start a new paragraph with the same indentation
as an immediately preceding .IP or .TP paragraph,
if no indentation argument is given; and
(2) to set a paragraph with a short tag that is not
semantically important, such as a bullet
(•)—obtained with the \(bu special character
escape sequence—or list enumerator, as seen in
this very paragraph.
Command synopsis macros
Command synopses are a staple of section 1 and 8 man pages.
These macros aid you to construct one that has the classical Unix
appearance. A command synopsis is wrapped in .SY/.YS calls.
These macros are GNU extensions not defined on systems running
AT&T, Plan 9, or Solaris troff; see an-ext.tmac in section
“Files” below.
.SY command
Begin synopsis. A new paragraph begins at the left margin
(as with .P) unless .SY has already been called without a
corresponding .YS, in which case only a break is
performed. Automatic hyphenation is disabled. command is
set in bold. If a break is required, lines after the
first are indented by the width of command plus a space.
.YS End synopsis. The previous indentation amount and initial
hyphenation mode are restored.
Multiple .SY/.YS blocks can be specified, for instance to
distinguish differing modes of operation of a complex command
like each will be vertically separated as paragraphs are.
.SY can also be repeated multiple times before a closing .YS,
which is useful to indicate synonymous ways of invoking a
particular mode of operation.
groff's own command-line interface serves to illustrate most of
the specimens of synopsis syntax one is likely to encounter.
.SY groff
.RB [ \-abcCeEgGijklNpRsStUVXzZ ]
.RB [ \-d\~\c
.IR cs ]
.RB [ \-d\~\c
.IB name =\c
.IR string ]
.RB [ \-D\~\c
.IR enc ]
(and so on similarly)
.RI [ file\~ .\|.\|.]
.YS
.
.
.SY groff
.B \-h
.
.SY groff
.B \-\-help
.YS
.
.
.SY groff
.B \-v
.RI [ option\~ .\|.\|.\&]
.RI [ file\~ .\|.\|.]
.
.SY groff
.B \-\-version
.RI [ option\~ .\|.\|.\&]
.RI [ file\~ .\|.\|.]
.YS
produces the following output.
groff [-abcCeEgGijklNpRsStUVXzZ] [-d cs] [-d name=string]
[-D enc] [-f fam] [-F dir] [-I dir] [-K enc]
[-L arg] [-m name] [-M dir] [-n num] [-o list]
[-P arg] [-r cn] [-r reg=expr] [-T dev] [-w name]
[-W name] [file ...]
groff -h
groff --help
groff -v [option ...] [file ...]
groff --version [option ...] [file ...]
Several features of the above example are of note.
• The empty request (.), which does nothing, is used to
vertically space the input file for readability by the document
maintainer. Do not put blank (empty) lines in a man page
source document.
• Command and option names are presented in bold to cue the user
that they should be input literally.
• Option dashes are specified with the \- escape sequence; this
is an important practice to make them clearly visible and to
facilitate copy-and-paste from the rendered man page to a shell
prompt or text file.
• Option arguments and command operands are presented in italics
(but see subsection “Font style macros” below regarding
terminals) to cue the user that they must be replaced with
appropriate text.
• Symbols that are neither to be typed literally nor replaced at
the user's discretion appear in the roman style; brackets
surround optional arguments, and an ellipsis indicates that the
previous syntactical element may be repeated arbitrarily.
• The non-breaking adjustable space escape sequence \~ is used to
prevent the output line from being broken within the option
brackets.
• The output line continuation escape sequence \c is used with
font style alternation macros to allow all three font styles to
be set without (breakable) space among them; see subsection
“Portability” below.
• The non-printing input break escape sequence \& follows the
ellipsis when further text will follow after space on the
output line, keeping its last period from being interpreted as
the end of a sentence and causing additional inter-sentence
space to be placed after it. See subsection “Portability”
below.
Hyperlink macros
Man page cross references like are best presented with .MR.
Email addresses are bracketed with .MT/.ME and other forms of
hyperlink with .UR/.UE. Hyperlinked text is supported on HTML
and terminal output devices; terminals and pager programs must
support ECMA-48 OSC 8 escape sequences (see When device support
is unavailable or disabled with the U register (see section
“Options” below), .MT and .UR URIs are rendered between angle
brackets after the linked text.
.MT, .ME, .UR, and .UE are GNU extensions not defined on systems
running AT&T, Plan 9, or Solaris troff; see an-ext.tmac in
section “Files” below. Plan 9 from User Space's troff implements
.MR.
The arguments to .MR, .MT, and .UR should be prepared for
typesetting since they can appear in the output. Use special
character escape sequences to encode Unicode basic Latin
characters where necessary, particularly the hyphen-minus. (See
section “Portability” below.) URIs can be lengthy; rendering
them can result in jarring adjustment or variations in line
length, or troff warnings when a hyperlink is longer than an
output line. The application of non-printing break point escape
sequences \: after each slash (or series thereof), and before
each dot (or series thereof) is recommended as a rule of thumb.
The former practice avoids forcing a trailing slash in a URI onto
a separate output line, and the latter helps the reader to avoid
mistakenly interpreting a dot at the end of a line as a period
(or multiple dots as an ellipsis). Thus,
.UR http://\:example\:.com/\:fb8afcfbaebc74e\:.cc
has several potential break points in the URI shown. Consider
adding break points before or after at signs in email addresses,
and question marks, ampersands, and number signs in HTTP(S) URIs.
\: escape sequences are ignored when supplied to device control
commands for hyperlink-aware output drivers.
.MR topic manual-section [trailing-text]
(since groff 1.23) Set a man page cross reference as
“topic(manual-section)”. If trailing-text (typically
punctuation) is specified, it follows the closing
parenthesis without intervening space. Hyphenation is
disabled while the cross reference is set. topic is set
in the font specified by the MF string. The cross
reference hyperlinks to a URI of the form
“man:topic(manual-section)”.
The output driver
.MR grops 1
produces PostScript from
.I troff
output.
.
The Ghostscript program (\c
.MR gs 1 )
interprets PostScript and PDF.
.MT address
.ME [trailing-text]
Identify address as an RFC 6068 addr-spec for a “mailto:”
URI with the text between the two macro calls as the link
text. An argument to .ME is placed after the link text
without intervening space. address may not be visible in
the rendered document if hyperlinks are enabled and
supported by the output driver. If they are not, address
is set in angle brackets after the link text and before
trailing-text. If hyperlinking is enabled but there is no
link text, address is formatted and hyperlinked without
angle brackets.
When rendered by groff to a PostScript device,
Contact
.MT fred\:.foonly@\:fubar\:.net
Fred Foonly
.ME
for more information.
displays as “Contact Fred Foonly ⟨fred.foonly@fubar.net⟩
for more information.”.
.UR uri
.UE [trailing-text]
Identify uri as an RFC 3986 URI hyperlink with the text
between the two macro calls as the link text. An argument
to .UE is placed after the link text without intervening
space. uri may not be visible in the rendered document if
hyperlinks are enabled and supported by the output driver.
If they are not, uri is set in angle brackets after the
link text and before trailing-text. If hyperlinking is
enabled but there is no link text, uri is formatted and
hyperlinked without angle brackets.
When rendered by groff to a PostScript device,
The GNU Project of the Free Software Foundation
hosts the
.UR https://\:www\:.gnu\:.org/\:software/\:groff/
.I groff
home page
.UE .
displays as “The GNU Project of the Free Software
Foundation hosts the groff home page
⟨https://www.gnu.org/software/groff/⟩.”.
The hyperlinking of .TP paragraph tags with .UR/.UE and .MT/.ME
is not yet supported; if attempted, the hyperlink will be typeset
at the beginning of the indented paragraph even on hyperlink-
supporting devices.
Font style macros
The man macro package is limited in its font styling options,
offering only bold (.B), italic (.I), and roman. Italic text is
usually set underscored instead on terminal devices. The .SM and
.SB macros set text in roman or bold, respectively, at a smaller
type size; these differ visually from regular-sized roman or bold
text only on typesetter devices. It is often necessary to set
text in different styles without intervening space. The macros
.BI, .BR, .IB, .IR, .RB, and .RI, where “B”, “I”, and “R”
indicate bold, italic, and roman, respectively, set their odd-
and even-numbered arguments in alternating styles, with no space
separating them.
Because font styles are presentational rather than semantic,
conflicting traditions have arisen regarding which font styles
should be used to mark file or path names, environment variables,
and inlined literals.
The default type size and family for typesetter devices is
10-point Times, except on the X75-12 and X100-12 devices where
the type size is 12 points. The default style is roman.
.B [text]
Set text in bold. If no argument is given, a one-line
input trap is planted; text on the next line, which can be
further formatted with a macro, is set in bold.
Use bold for literal portions of syntax synopses, for
command-line options in running text, and for literals
that are major topics of the subject under discussion; for
example, this page uses bold for macro, string, and
register names. In an .EX/.EE example of interactive I/O
(such as a shell session), set only user input in bold.
.I [text]
Set text in an italic or oblique face. If no argument is
given, a one-line input trap is planted; text on the next
line, which can be further formatted with a macro, is set
in an italic or oblique face.
Use italics for file and path names, for environment
variables, for C data types, for enumeration or
preprocessor constants in C, for variable (user-
determined) portions of syntax synopses, for the first
occurrence (only) of a technical concept being introduced,
for names of journals and of literary works longer than an
article, and anywhere a parameter requiring replacement by
the user is encountered. An exception involves variable
text in a context that is already marked up in italics,
such as file or path names with variable components; in
such cases, follow the convention of mathematical
typography: set the file or path name in italics as usual
but use roman for the variable part (see .IR and .RI
below), and italics again in running roman text when
referring to the variable material.
.SM [text]
Set text one point smaller than the default type size on
typesetter devices. If no argument is given, a one-line
input trap is planted; text on the next line, which can be
further formatted with a macro, is set smaller.
Note: terminals will render text at normal size instead.
Do not rely upon .SM to communicate semantic information
distinct from using roman style at normal size; it will be
hidden from readers using such devices.
.SB [text]
Set text in bold and (on typesetter devices) one point
smaller than the default type size. If no argument is
given, a one-line input trap is planted; text on the next
line, which can be further formatted with a macro, is set
smaller and in bold.
Note: terminals will render text in bold at the normal
size instead. Do not rely upon .SB to communicate
semantic information distinct from using bold style at
normal size; it will be hidden from readers using such
devices.
Observe what is not prescribed for setting in bold or italics
above: elements of “synopsis language” such as ellipses and
brackets around options; proper names and adjectives; titles of
anything other than major works of literature; identifiers for
standards documents or technical reports such as CSTR #54,
RFC 1918, Unicode 13.0, or POSIX.1-2017; acronyms; and
occurrences after the first of a technical term or piece of
jargon.
Be frugal with italics for emphasis, and particularly with bold.
Article titles and brief runs of literal text, such as references
to individual characters or short strings, including section and
subsection headings of man pages, are suitable objects for
quotation; see the \(lq, \(rq, \(oq, and \(cq escape sequences in
subsection “Portability” below.
Unlike the above font style macros, the font style alternation
macros below set no input traps; they must be given arguments to
have effect. Italic corrections are applied as appropriate. If
a space is required within an argument, first consider whether
the same result could be achieved with as much clarity by using
single-style macros on separate input lines. When it cannot,
double-quote an argument containing embedded space characters.
Setting all three different styles within a word presents
challenges; it is possible with the \c and/or \f escape
sequences, but see subsection “Portability” below for approaches.
.BI bold-text italic-text ...
Set each argument in bold and italics, alternately.
.BI \-r\~ reg = n
.BR bold-text roman-text ...
Set each argument in bold and roman, alternately.
After invocation of
.BR .NH ,
the assigned number is made available in the strings
.IB italic-text bold-text ...
Set each argument in italics and bold, alternately.
.I groff
copes with this situation by searching for both
.IB anything .tmac
and
.BI tmac. anything
.IR italic-text roman-text ...
Set each argument in italics and roman, alternately.
The
.I groff
font file is written to
.I font.
.RB roman-text bold-text ...
Set each argument in roman and bold, alternately.
and do not handle the
.RB \(lq "delim on" \(rq
statement specially.
.RI roman-text italic-text ...
Set each argument in roman and italics, alternately.
.RI [ file\~ .\|.\|.]
Horizontal and vertical spacing
The indentation argument accepted by .RS, .IP, .TP, and the
deprecated .HP is a number plus an optional scaling unit. If no
scaling unit is given, the man package assumes “n”; that is, the
width of a letter “n” in the font current when the macro is
called (see section “Numerical Expressions” in An indentation
specified in a call to .IP, .TP, or the deprecated .HP persists
until (1) another of these macros is called with an explicit
indentation argument, or (2) .SH, .SS, or .P or its synonyms is
called; these clear the indentation entirely. Relative insets
created by .RS move the left margin and persist until .RS, .RE,
.SH, or .SS is called.
The indentation amount exhibited by ordinary paragraphs set with
.P (and its synonyms) not within an .RS/.RE relative inset, and
the default used when .IP, .RS, .TP, and the deprecated .HP are
not given an indentation argument, is 7.2n for typesetter devices
and 7n for terminal devices (but see the -rIN option). Headers,
footers (both set with .TH), and section headings (.SH) are set
at the left margin, and subsection headings (.SS) indented from
it by 3n (but see the -rSN option). HTML output devices ignore
indentation.
It may be helpful to think of the left margin and indentation as
related but distinct concepts; groff's implementation of the man
macro package tracks them separately. The left margin is
manipulated by .RS and .RE (and by .SH and .SS, which reset it to
the default). Indentation is controlled by the paragraphing
macros (though, again, .SH and .SS reset it); it is imposed by
the .TP, .IP, and deprecated .HP macros, and cancelled by .P and
its synonyms. An extensive example follows.
This ordinary (.P) paragraph is not in a relative inset nor does
it possess an indentation.
Now we have created a relative inset (in other words,
moved the left margin) with .RS and started another
ordinary paragraph with .P.
tag This tagged paragraph, set with .TP, is still
within the .RS region, but lines after the first
have a supplementary indentation that the tag
lacks.
A paragraph like this one, set with .IP, will
appear to the reader as also associated with the
tag above, because .IP re-uses the previous
paragraph's indentation unless given an argument to
change it. This paragraph is affected both by the
moved left margin (.RS) and indentation (.IP).
┌─────────────────────────────────┐
│This table is affected both by │
│the left margin and indentation. │
└─────────────────────────────────┘
• This indented paragraph has a bullet for a tag,
making it more obvious that the left margin and
indentation are distinct; only the former affects
the tag, but both affect the text of the paragraph.
This ordinary (.P) paragraph resets the indentation, but
the left margin is still inset.
┌────────────────────────────┐
│This table is affected only │
│by the left margin. │
└────────────────────────────┘
Finally, we have ended the relative inset by using .RE, which
(because we used only one .RS/.RE pair) has reset the left margin
to the default. This is an ordinary .P paragraph.
Resist the temptation to mock up tabular or multi-column output
with tab characters or the indentation arguments to .IP, .TP,
.RS, or the deprecated .HP; the result may not render
comprehensibly on an output device you fail to check, or which is
developed in the future. The table preprocessor can likely meet
your needs.
Several macros break the output line and insert vertical space:
.SH, .SS, .TP, .P (and its synonyms), .IP, and the deprecated
.HP. The default inter-section and inter-paragraph spacing is is
1v for terminal devices and 0.4v for typesetter devices (“v” is a
unit of vertical distance, where 1v is the distance between
adjacent text baselines in a single-spaced document). (The
deprecated macro .PD can change this vertical spacing, but its
use is discouraged.) In .EX/.EE sections, the inter-paragraph
spacing is 1v regardless of output device. The macros .RS, .RE,
.EX, .EE, and .TQ also cause a break but no insertion of vertical
space.
Registers
Registers are described in section “Options” below. They can be
set not only on the command line but in the site man.local file
as well; see section “Files” below.
Strings
The following strings are defined for use in man pages. Others
are supported for configuration of rendering parameters; see
section “Options” below.
\*R interpolates a special character escape sequence for the
“registered sign” glyph, \(rg, if available, and “(Reg.)”
otherwise.
\*S interpolates an escape sequence setting the type size to
the document default.
\*(lq
\*(rq interpolate special character escape sequences for left
and right double-quotation marks, \(lq and \(rq,
respectively.
\*(Tm interpolates a special character escape sequence for the
“trade mark sign” glyph, \(tm, if available, and “(TM)”
otherwise.
None of the above is necessary in a contemporary man page. \*S
is superfluous, since type size changes are invisible on terminal
devices and macros that change it restore its original value
afterward. Better alternatives exist for the rest; simply use
the \(rg, \(lq, \(rq, and \(tm special character escape sequences
directly. Unless a man page author is aiming for a pathological
level of portability, such as the composition of pages for
consumption on simulators of 1980s Unix systems (or Solaris
troff, though even it supports \(rg), the above strings should be
avoided.
Portability
It is wise to quote multi-word section and subsection headings;
the .SH and .SS macros of implementations descended from Seventh
Edition Unix supported six arguments at most. A similar
restriction applied to the .B, .I, .SM, and font style
alternation macros.
The two major syntactical categories for formatting control in
the roff language are requests and escape sequences. Since the
man macros are implemented in terms of groff requests and escape
sequences, one can, in principle, supplement the functionality of
man with these lower-level elements where necessary.
However, using raw groff requests (apart from the empty request
“.”) is likely to make your page render poorly when processed by
other tools; many of these attempt to interpret page sources
directly for conversion to HTML. Some requests make implicit
assumptions about things like character and page sizes that may
not hold in an HTML environment; also, many of these viewers
don't interpret the full groff vocabulary, a problem that can
lead to portions of your text being omitted or presented
incomprehensibly.
For portability to modern viewers, it is best to write your page
solely with the macros described in this page (except for the
ones identified as deprecated, which should be avoided). The
macros we have described as extensions (.EX/.EE, .SY/.YS, .TQ,
.UR/.UE, .MT/.ME, and .MR) should be used with caution, as they
may not yet be built in to some viewer that is important to your
audience. See an-ext.tmac in section “Files” below.
Similar caveats apply to escape sequences. Some escape sequences
are however required for correct typesetting even in man pages
and usually do not cause portability problems. Several of these
render glyphs corresponding to punctuation code points in the
Unicode basic Latin range (U+0000–U+007F) that are handled
specially in roff input; the escape sequences below must be used
to render them correctly and portably when documenting material
that uses them syntactically—namely, any of the set ' - \ ^ ` ~
(apostrophe, dash or minus, backslash, caret, grave accent,
tilde).
\" Comment. Everything after the double-quote to the end of
the input line is ignored. Whole-line comments should be
placed immediately after the empty request “.”).
\newline
Join the next input line to the current one. Except for
the update of the input line counter (used for diagnostic
messages and related purposes), a series of lines ending
in backslash-newline appears to groff as a single input
line. Use this escape sequence to split excessively long
input lines for document maintenance.
\% Control hyphenation. The location of this escape sequence
within a word marks a hyphenation point, supplementing
groff's automatic hyphenation patterns. At the beginning
of a word, it suppresses any automatic hyphenation points
within; any specified with \% are still honored.
\: Insert a non-printing break point. A word can break at
such a point, but a hyphen glyph is not written to the
output if it does. This escape sequence is an input word
boundary, so the remainder of the word is subject to
hyphenation as normal. You can use \: and \% in
combination to control breaking of a file name or URI or
to permit hyphenation only after certain explicit hyphens
within a word. See subsection “Hyperlink macros” above
for an example.
This escape sequence is a groff extension also supported
by Heirloom Doctools troff 050915 (September 2005), mandoc
1.14.5 (2019-03-10), and neatroff (commit 399a4936,
2014-02-17), but not by Plan 9, Solaris, or Documenter's
Workbench troffs.
\~ Adjustable non-breaking space. Use this escape sequence
to prevent a break inside a short phrase or between a
numerical quantity and its corresponding unit(s).
Before starting the motor,
set the output speed to\~1.
There are 1,024\~bytes in 1\~KiB.
CSTR\~#8 documents the B\~language.
This escape sequence is a groff extension also supported
by Heirloom Doctools troff 050915 (September 2005), mandoc
1.9.5 (2009-09-21), neatroff (commit 1c6ab0f6e,
2016-09-13), and Plan 9 from User Space troff (commit
93f8143600, 2022-08-12), but not by Solaris or
Documenter's Workbench troffs.
\& Non-printing input break. Insert at the beginning of an
input line to prevent a dot or apostrophe from being
interpreted as the beginning of a roff request. Append to
an end-of-sentence punctuation sequence to keep it from
being recognized as such.
\| Thin space (one-sixth em on typesetters, zero-width on
terminals); a non-breaking space. Used primarily in
ellipses (“.\|.\|.”) to space the dots more pleasantly on
typesetter devices like PostScript and PDF.
\c End a text line without inserting space or attempting a
break. Normally, if filling is enabled, the end of a text
line is treated like a space; an output line may be broken
there (if not, an adjustable space is inserted); if
filling is disabled, the line will be broken there, as in
.EX/.EE examples. The next line is interpreted as usual
and can include a macro call (contrast with \newline).
This escape sequence is useful when three different font
styles are needed in a single word, as in a command
synopsis,
.RB [ \-\-stylesheet=\c
.IR name ]
or on a single line, as in .EX/.EE examples.
.EX
$ \c
.B groff \-T utf8 \-Z \c
.I file \c
.B | grotty \-i
.EE
Alternatively, and perhaps with better portability, the \f
font selection escape sequence can be used; see below.
Using \c to continue a .TP paragraph tag across multiple
input lines will render incorrectly with groff 1.22.3,
mandoc 1.14.1, older versions of these programs, and
perhaps with some other formatters.
\e Format the current escape character on the output; widely
used in man pages to render a backslash glyph. It works
reliably as long as the “.ec” request is not used, which
should never happen in man pages, and it is slightly more
portable than the more explicit \(rs (“reverse solidus”)
special character escape sequence.
\fB, \fI, \fR, \fP
Switch to bold, italic, roman, or back to the previous
style, respectively. Either \f or \c is needed when three
different font styles are required in a word.
.RB [ \-\-reference\-dictionary=\fI\,name\/\fP ]
.RB [ \-\-reference\-dictionary=\c
.IR name ]
Style escape sequences may be more portable than \c. As
shown above, it is up to you to account for italic
corrections with “\/” and “\,”, which are themselves GNU
extensions, if desired and if supported by your
implementation.
\fP reliably returns to the style in use immediately
preceding the previous \f escape sequence only if no
sectioning, paragraph, or style macro calls have
intervened.
As long as at most two styles are needed in a word, style
macros like .B and .BI usually result in more readable
roff source than \f escape sequences do.
Several special characters are also widely portable. AT&T troff
did not define the reverse solidus or quotation characters listed
below, but any of its descendants, like Plan 9 or Solaris troff,
can support them by defining their glyphs in font description
files; see
\- Minus sign or basic Latin hyphen-minus. This escape
sequence produces the Unix command-line option dash in the
output. “-” is a hyphen in the roff language; some output
devices replace it with U+2010 (hyphen) or similar.
\(aq Basic Latin neutral apostrophe. Some output devices
replace “'” with a right single quotation mark.
\(oq
\(cq Opening (left) and closing (right) single quotation marks.
Use these for paired directional single quotes, ‘like
this’.
\(dq Basic Latin quotation mark (double quote). Use in macro
calls to prevent ‘"” from being interpreted as beginning a
quoted argument, or simply for readability.
.TP
.BI "split \(dq" text \(dq
\(lq
\(rq Left and right double quotation marks. Use these for
paired directional double quotes, “like this”.
\(em Em-dash. Use for an interruption—such as this one—in a
sentence.
\(en En-dash. Use to separate the ends of a range,
particularly between numbers; for example, “the digits
1–9”.
\(ga Basic Latin grave accent. Some output devices replace “`”
with a left single quotation mark.
\(ha Basic Latin circumflex accent (“hat”). Some output
devices replace “^” with U+02C6 (modifier letter
circumflex accent) or similar.
\(rs Reverse solidus (backslash). The backslash is the default
escape character in the roff language, so it does not
represent itself in output. Also see \e below.
\(ti Basic Latin tilde. Some output devices replace “~” with
U+02DC (small tilde) or similar.
For maximum portability, escape sequences and special characters
not listed above are better avoided in man pages.
Hooks
Two macros, both GNU extensions, are called internally by the
groff man package to format page headers and footers and can be
redefined by the administrator in a site's man.local file (see
section “Files” below). The presentation of .TH above describes
the default headers and footers. Because these macros are hooks
for groff man internals, man pages have no reason to call them.
Such hook definitions will likely consist of “.sp” and “.tl”
requests. They must also increase the page length with “.pl”
requests in continuous rendering mode; .PT furthermore has the
responsibility of emitting a PDF bookmark after writing the first
page header in a document. Consult the existing implementations
in an.tmac when drafting replacements.
.BT Set the page footer text (“bottom trap”).
.PT Set the page header text (“page trap”).
If you want to remove a page header or footer entirely, define
the appropriate macro as empty rather than deleting it.
Deprecated features
Use of the following in man pages for public distribution is
discouraged.
.AT [system [release]]
Alter the footer for use with legacy AT&T man pages,
overriding any definition of the footer-inside argument to
.TH. This macro exists only to render man pages from
historical systems.
system can be any of the following.
3 7th edition (default)
4 System III
5 System V
The optional release argument specifies the release
number, as in “System V Release 3”.
.DT Reset tab stops to the default (every 0.5i [inches]).
Use of this presentation-oriented macro is deprecated. It
translates poorly to HTML, under which exact space control
and tabulation are not readily available. Thus,
information or distinctions that you use tab stops to
express are likely to be lost. If you feel tempted to
change the tab stops such that calling this macro later is
desirable to restore them, you should probably be
composing a table using instead.
.HP [indentation]
Set up a paragraph with a hanging left indentation. The
indentation argument, if present, is handled as with .TP.
Use of this presentation-oriented macro is deprecated. A
hanging indentation cannot be expressed naturally under
HTML, and HTML-based man page processors may interpret it
as starting an ordinary paragraph. Thus, any information
or distinction you mean to express with the indentation
may be lost.
.OP option-name [option-argument]
Indicate an optional command parameter called option-name,
which is set in bold. If the option takes an argument,
specify option-argument using a noun, abbreviation, or
hyphenated noun phrase. If present, option-argument is
preceded by a space and set in italics. Square brackets
in roman surround both arguments.
Use of this quasi-semantic macro, an extension originating
in Documenter's Workbench troff, is deprecated. It cannot
easily be used to annotate options that take optional
arguments or options whose arguments have internal
structure (such as a mixture of literal and variable
components). One could work around these limitations with
font selection escape sequences, but it is preferable to
use font style alternation macros, which afford greater
flexibility.
.PD [vertical-space]
Define the vertical space between paragraphs or
(sub)sections. The optional argument vertical-space
specifies the amount; the default scaling unit is “v”.
Without an argument, the spacing is reset to its default
value; see subsection “Horizontal and vertical spacing”
above.
Use of this presentation-oriented macro is deprecated. It
translates poorly to HTML, under which exact control of
inter-paragraph spacing is not readily available. Thus,
information or distinctions that you use .PD to express
are likely to be lost.
.UC [version]
Alter the footer for use with legacy BSD man pages,
overriding any definition of the footer-inside argument to
.TH. This macro exists only to render man pages from
historical systems.
version can be any of the following.
3 3rd Berkeley Distribution (default)
4 4th Berkeley Distribution
5 4.2 Berkeley Distribution
6 4.3 Berkeley Distribution
7 4.4 Berkeley Distribution
History
Unix Version 7 (1979) introduced the man macro package and
supported the macros listed in this page not described as
extensions, except .P, .SB, and the deprecated .AT and .UC. The
only strings defined were R and S; no registers were documented.
.UC appeared in 3BSD (1980) and .P in Unix System III (1980).
PWB/UNIX 2.0 (1980) added the Tm string. 4BSD (1980) added lq
and rq strings. Documenter's Workbench 1.0 (1984) exposed the IN
and LL registers, which had been internal to Seventh Edition Unix
man. 4.3BSD (1986) added .AT and .P. Ninth Edition Research
Unix (1986) introduced .EX and .EE. SunOS 4.0 (1988) may have
been the first to support .SB. groff 1.20 (2009) originated
.SY/.YS, .TQ, .MT/.ME, and .UR/.UE. Plan 9 from User Space's
troff introduced .MR in 2020.
The following groff options set registers (with -r) and strings
(with -d) recognized and used by the man macro package. To
ensure rendering consistent with output device capabilities and
reader preferences, man pages should never manipulate them.
-dAD=adjustment-mode
Set line adjustment to adjustment-mode, which is typically
“b” for adjustment to both margins (the default), or “l”
for left alignment (ragged right margin). Any valid
argument to groff's “.ad” request may be used. See for
less-common choices.
-rcR=1 Enable continuous rendering. Output is not paginated;
instead, one (potentially very long) page is produced.
This is the default for terminal and HTML devices. Use
-rcR=0 to disable it.
-rC1 Number output pages consecutively, in strictly increasing
sequence, rather than resetting the page number to 1 (or
the value of register P) with each new man document.
-rCS=1 Set section headings (the argument(s) to .SH) in full
capitals. This transformation is off by default because
it discards case distinction information.
-rCT=1 Set the man page topic (the first argument to .TH) in full
capitals in headers and footers. This transformation is
off by default because it discards case distinction
information.
-rD1 Enable double-sided layout, formatting footers for even
and odd pages differently; see the description of .TH in
subsection “Document structure macros” above.
-rFT=footer-distance
Set distance of the footer relative to the bottom of the
page to footer-distance; this amount is always negative.
At twice this distance, the page text is broken before
writing the footer. Ignored if continuous rendering is
enabled. The default is -0.5i.
-dHF=heading-font
Set the font used for section and subsection headings; the
default is “B” (bold style of the default family). Any
valid argument to groff's “.ft” request may be used. See
-rHY=0 Disable automatic hyphenation. Normally, it is
enabled (1). The hyphenation mode is determined by the
groff locale; see section “Localization“ of
-rIN=standard-indentation
Set the amount of indentation used for ordinary paragraphs
(.P and its synonyms) and the default indentation amount
used by .IP, .RS, .TP, and the deprecated .HP. See
subsection “Horizontal and vertical spacing” above for the
default. For terminal devices, standard-indentation
should always be an integer multiple of unit “n” to get
consistent indentation.
-rLL=line-length
Set line length; the default is 78n for terminal devices
and 6.5i for typesetter devices.
-rLT=title-length
Set the line length for titles. (“Titles” is the roff
term for headers and footers.) By default, it is set to
the line length (see -rLL above).
-dMF=man-page-topic-font
Set the font used for man page topics named in .TH and .MR
calls; the default is “I” (italic style of the default
family). Any valid argument to groff's “.ft” request may
be used. If the MF string ends in “I”, it is assumed to
be an oblique typeface, and italic corrections are applied
before and after man page topics.
-rPn Start enumeration of pages at n. The default is 1.
-rStype-size
Use type-size for the document's body text; acceptable
values are 10, 11, or 12 points. See subsection “Font
style macros” above for the default.
-rSN=subsection-indentation
Set indentation of subsection headings to subsection-
indentation. See subsection “Horizontal and vertical
spacing” above for the default.
-rU1 Enable generation of URI hyperlinks in the grohtml and
grotty output drivers. grohtml enables them by default;
grotty does not, pending more widespread pager support for
OSC 8 escape sequences. Use -rU0 to disable hyperlinks;
this will make the arguments to MT and UR calls visible in
the document text produced by link-capable drivers.
-rXp After page p, number pages as pa, pb, pc, and so forth.
The register tracking the suffixed page letter uses format
“a” (see the “.af” request in For example, the option -rX2
produces the following page numbers: 1, 2, 2a, 2b, ...,
2aa, 2ab, and so on.
/usr/local/share/groff/1.23.0/tmac/an.tmac
Most man macros are defined in this file. It also loads
extensions from an-ext.tmac (see below).
/usr/local/share/groff/1.23.0/tmac/andoc.tmac
This brief groff program detects whether the man or mdoc
macro package is being used by a document and loads the
correct macro definitions, taking advantage of the fact
that pages using them must call .TH or .Dd, respectively,
before any other macros. A man program or user typing,
for example, “groff -mandoc page.1”, need not know which
package the file page.1 uses. Multiple man pages, in
either format, can be handled; andoc reloads each macro
package as necessary.
/usr/local/share/groff/1.23.0/tmac/an-ext.tmac
Definitions of macros described above as extensions
(.SY/.YS, .TQ, .EX/.EE, .UR/.UE, .MT/.ME, and .MR) are
contained in this file; in some cases, they are simpler
versions of definitions appearing in an.tmac, and are
ignored if the formatter is GNU troff. They are written
to be compatible with AT&T troff and permissively
licensed—not copylefted. To reduce the risk of name space
collisions, string and register names begin only with “m”.
Man page authors concerned about portability to legacy
Unix systems are encouraged to copy these definitions into
their pages, and maintainers of troff implementations or
work-alike systems that format man pages are encouraged to
re-use them.
The definitions for these macros are read after a page
calls .TH, so they will replace any macros of the same
names preceding it in your file. If you use your own
implementations of these macros, they must be defined
after .TH is called to have any effect. Furthermore, it
is wise to define such page-local macros (if at all) after
the “Name” section to accommodate timid mandb
implementations that may give up their scan for indexing
material early.
/usr/local/share/groff/1.23.0/tmac/man.tmac
This is a wrapper that loads an.tmac.
/usr/local/share/groff/1.23.0/tmac/mandoc.tmac
This is a wrapper that loads andoc.tmac.
/usr/local/share/groff/site-tmac/man.local
Put site-local changes and customizations into this file.
.\" Use narrower indentation on terminals and similar.
.if n .nr IN 4n
.\" Put only one space after the end of a sentence.
.ss 12 0 \" See groff(7).
.\" Keep pages narrow even on wide terminals.
.if n .if \n[LL]>78n .nr LL 78n
.\" Ensure hyperlinks are enabled for terminals.
.nr U 1
On multi-user systems, it is more considerate to users
whose preferences may differ from the administrator's to
be less aggressive with such settings, or to permit their
override with a user-specific man.local file. This can be
achieved by placing one or both of following requests at
the end of the site-local file.
.soquiet \V[XDG_CONFIG_HOME]/man.local
.soquiet \V[HOME]/.man.local
However, a security-sandboxed program may lack permission
to open such files.
Some tips on troubleshooting your man pages follow.
• Some ASCII characters look funny or copy and paste wrong.
On devices with large glyph repertoires, like
UTF-8-capable terminals and PDF, several keyboard glyphs
are mapped to code points outside the Unicode basic Latin
range because that usually results in better typography in
the general case. When documenting GNU/Linux command or C
language syntax, however, this translation is sometimes
not desirable.
To get a “literal”... ...should be input.
────────────────────────────────────────────
' \(aq
- \-
\ \(rs
^ \(ha
` \(ga
~ \(ti
────────────────────────────────────────────
Additionally, if a neutral double quote (") is needed in a
macro argument, you can use \(dq to get it. You should
not use \(aq for an ordinary apostrophe (as in “can't”) or
\- for an ordinary hyphen (as in “word-aligned”). Review
subsection “Portability” above.
• Do I ever need to use an empty macro argument ("")?
Probably not. When this seems necessary, often a shorter
or clearer alternative is available.
Instead of... ...should be considered.
────────────────────────────────────────────────────────────────
.TP "" .TP
────────────────────────────────────────────────────────────────
.BI "" italic-text bold-text .IB italic-text bold-text
────────────────────────────────────────────────────────────────
.TH foo 1 "" "foo 1.2.3" .TH foo 1 yyyy-mm-dd "foo 1.2.3"
────────────────────────────────────────────────────────────────
.IP "" 4n .IP
────────────────────────────────────────────────────────────────
.IP "" 4n .RS 4n
paragraph .P
... paragraph
... .RE
────────────────────────────────────────────────────────────────
.B one two "" three .B one two three
In the title heading (.TH), the date of the page's last
revision is more important than packaging information; it
should not be omitted. Ideally, a page maintainer will
keep both up to date.
.IP is sometimes ill-understood and misused, especially
when no marker argument is supplied—an indentation
argument is not required. By setting an explicit
indentation, you may be overriding the reader's preference
as set with the -rIN option. If your page renders
adequately without one, use the simpler form. If you need
to indent multiple (unmarked) paragraphs, consider setting
an inset region with .RS and .RE instead.
In the last example, the empty argument does have a subtly
different effect than its suggested replacement: the empty
argument causes an additional space character to be
interpolated between the arguments “two” and “three”—but
it is a regular breaking space, so it can be discarded at
the end of an output line. It is better not to be subtle,
particularly with space, which can be overlooked in source
and rendered forms.
• .RS doesn't indent relative to my indented paragraph.
The .RS macro sets the left margin; that is, the position
at which an ordinary paragraph (.P and its synonyms) will
be set. .IP, .TP, and the deprecated .HP all use the same
default indentation. If not given an argument, .RS moves
the left margin by this same amount. To create an inset
relative to an indented paragraph, call .RS repeatedly
until an acceptable indentation is achieved, or give .RS
an indentation argument that is at least as much as the
paragraph's indentation amount relative to an adjacent .P
paragraph. See subsection “Horizontal and vertical
spacing” above for the values.
Another approach you can use with tagged paragraphs is to
place an .RS call immediately after the paragraph tag;
this will also force a break regardless of the width of
the tag, which some authors prefer. Follow-up paragraphs
under the tag can then be set with .P instead of .IP.
Remember to use .RE to end the indented region before
starting the next tagged paragraph (at the appropriate
nesting level).
• .RE doesn't move the inset back to the expected level.
• warning: scaling unit invalid in context
• warning: register 'an-saved-marginn' not defined
• warning: register 'an-saved-prevailing-indentn' not defined
The .RS macro takes an indentation amount as an argument;
the .RE macro's argument is a specific inset level. .RE 1
goes to the level before any .RS macros were called, .RE 2
goes to the level of the first .RS call you made, and so
forth. If you desire symmetry in your macro calls, simply
issue one .RE without an argument for each .RS that
precedes it.
After calls to the .SH and .SS sectioning macros, all
relative insets are cleared and calls to .RE have no
effect until .RS is used again.
• Do I need to keep typing the indentation in a series of .IP
calls?
Not if you don't want to change it. Review subsection
“Horizontal and vertical spacing” above.
Instead of... ...should be considered.
─────────────────────────────────────────────
.IP \(bu 4n .IP \(bu 4n
paragraph paragraph
.IP \(bu 4n .IP \(bu
another-paragraph another-paragraph
─────────────────────────────────────────────
• Why doesn't the package provide a string to insert an ellipsis?
Examples of ellipsis usage are shown above, in subsection
“Command synopsis macros”. The idiomatic roff ellipsis is
three dots (periods) with thin space escape sequences \|
internally separating them. Since dots both begin control
lines and are candidate end-of-sentence characters,
however, it is sometimes necessary to prefix and/or suffix
an ellipsis with the non-printing input break escape
sequence \&. That fact stands even if a string is defined
to contain the sequence; further, if the string ends with
\&, end-of-sentence detection is defeated when you use the
string at the end of an actual sentence. (Ending a
sentence with an ellipsis is often poor style, but not
always.) A hypothetical string EL that contained an
ellipsis, but not the trailing input break, would then
need to be suffixed with \& when not ending a sentence.
Instead of... ...do this.
──────────────────────────────────────────────────
.ds EL \&.\|.\|. Arguments are
Arguments are .IR src-file\~ .\|.\|.\&
.IR src-file\~ \*(EL\& .IR dest-dir .
.IR dest-dir .
──────────────────────────────────────────────────
The first column practices a false economy; the savings in
typing is offset by the cost of obscuring even the
suggestion of an ellipsis to a casual reader of the source
document, and reduced portability to non-roff man page
formatters that cannot handle string definitions.
There is an ellipsis code point in Unicode, and some fonts
have an ellipsis glyph, which some man pages have accessed
in a non-portable way with the font-dependent \N escape
sequence. We discourage the use of these; they usually
crowd the dots into a single character cell, and will not
render at all if the output device doesn't have the glyph.
In syntax synopses, missing ellipses can cause great
confusion. Dots and space are universally supported.
M. Douglas McIlroy ⟨m.douglas.mcilroy@dartmouth.edu⟩ designed,
implemented, and documented the AT&T man macros, employing them
to edit the first volume of the Seventh Edition Unix manual, a
compilation of all man pages supplied by the system.
The GNU version of the man macro package was written by James
Clark; he added the C, D, P, and X registers. Werner Lemberg
⟨wl@gnu.org⟩ supplied the S and cR registers. Larry Kollar
⟨kollar@alltel.net⟩ added the FT, HY, and SN registers; the HF
string; and the PT and BT macros. G. Branden Robinson ⟨g.branden
.robinson@gmail.com⟩ implemented the AD and MF strings; CS, CT,
and U registers; and the MR macro. The extension macros were
written by Lemberg, Eric S. Raymond ⟨esr@thyrsus.com⟩, and
Robinson.
This document was originally written for the Debian GNU/Linux
system by Susan G. Kleinmann ⟨sgk@debian.org⟩. It was corrected
and updated by Lemberg and Robinson. The extension macros were
documented by Raymond and Robinson. Raymond also originated the
portability section, to which Ingo Schwarze ⟨schwarze@usta.de⟩
contributed most of the material on escape sequences.
and are preprocessors used with man pages.
describes the man page librarian on your system.
describes the groff version of the BSD-originated alternative
macro package for man pages.
This page is part of the groff (GNU troff) project. Information
about the project can be found at
⟨http://www.gnu.org/software/groff/⟩. If you have a bug report
for this manual page, see ⟨http://www.gnu.org/software/groff/⟩.
This page was obtained from the project's upstream Git repository
⟨https://git.savannah.gnu.org/git/groff.git⟩ on 2022-12-17. (At
that time, the date of the most recent commit that was found in
the repository was 2022-12-14.) If you discover any rendering
problems in this HTML version of the page, or you believe there
is a better or more up-to-date source for the page, or you have
corrections or improvements to the information in this COLOPHON
(which is not part of the original manual page), send a mail to
man-pages@man7.org
groff 1.23.0.rc1.3569-94746-d1i4rtDyecember 2022 groff_man_style(7)