svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
groff_mdoc(7)
The GNU implementation of the macro package is part of the docu‐
ment formatting system. is a structurally- and semantically-ori‐
ented package for writing manual pages with Its predecessor, the
package, primarily addressed page layout and presentational con‐
cerns, leaving the selection of fonts and other typesetting de‐
tails to the individual author. This discretion has led to di‐
vergent styling practices among authors using it. organizes its
macros into The lays out the page and comprises titles, section
headings, displays, and lists. The supplies macros to quote or
style text, or to interpolate common noun phrases. The offers
semantic macros corresponding to the terminology used by practi‐
tioners in discussion of commands, routines, and files. Manual
domain macros distinguish command-line arguments and options,
function names, function parameters, pathnames, variables, cross
references to other manual pages, and so on. These terms are
meaningful both to the author and the readers of a manual page.
It is hoped that the resulting increased consistency of the man
page corpus will enable easier translation to future documenta‐
tion tools. Throughout documentation, a manual entry is referred
to simply as a regardless of its length, without gendered impli‐
cation, and irrespective of the macro package selected for its
composition. The package attempts to simplify man page author‐
ship and maintenance without requiring mastery of the language.
This document presents only essential facts about For further
background, including a discussion of basic typographical con‐
cepts like and see Specialized units of measurement also arise,
namely ens, vees, inches, and points, abbreviated and respec‐
tively; see section of For brief examples, we employ an arrow no‐
tation illustrating a transformation of input on the left to ren‐
dered output on the right. Consider the macro, which double-
quotes its arguments. → An is by placing the control character,
(dot) at the beginning of a line followed by its name. In this
document, we often discuss a macro name with this leading dot to
identify it clearly, but the dot is part of its name. Space or
tab characters can separate the dot from the macro name. Argu‐
ments may follow, separated from the macro name and each other by
spaces, but tabs. The dot at the beginning of the line prepares
the formatter to expect a macro name. A dot followed immediately
by a newline is ignored; this is called the To begin an input
line with a dot (or a neutral apostrophe in some context other
than a macro call, precede it with the escape sequence; this is a
dummy character, not formatted for output. The backslash is the
escape character; it can appear anywhere and it always followed
by at least one more character. If followed by a newline, the
backslash escapes the input line break; you can thus keep input
lines to a reasonable length without affecting their interpreta‐
tion. Macros in GNU accept an unlimited number of arguments, in
contrast to other that often can't handle more than nine. In
limited cases, arguments may be continued or extended on the next
input line without resort to the escape sequence; see subsection
below. Neutral double quotes can be used to group multiple words
into an argument; see subsection below. Most of general text and
manual domain macros their argument lists for macro names. This
means that an argument in the list matching a general text or
manual domain macro name (and defined to be callable) will be
called with the remaining arguments when it is encountered. In
such cases, the argument, although the name of a macro, is not
preceded by a dot. Macro calls can thus be nested. This ap‐
proach to macro argument processing is a unique characteristic of
the package, not a general feature of syntax. For example, the
option macro, may call the flag and argument macros, and to spec‐
ify an optional flag with an argument. → To prevent a word from
being interpreted as a macro name, precede it with the dummy
character. → In this document, macros whose argument lists are
parsed for callable arguments are referred to as and those that
may be called from an argument list are referred to as This usage
is a technical since all macros are in fact interpreted (unless
prevented with but as it is cumbersome to constantly refer to
macros as we employ the term instead. Except where explicitly
stated, all macros are parsed and callable. In the following, we
term an macro that starts a line (with a leading dot) a if a dis‐
tinction from those appearing as arguments of other macros is
necessary. Sometimes it is desirable to give a macro an argument
containing one or more space characters, for instance to specify
a particular arrangement of arguments demanded by the macro. Ad‐
ditionally, quoting multi-word arguments that are to be treated
the same makes work faster; macros that parse arguments do so
once (at most) for each. For example, the function command ex‐
pects its first argument to be the name of a function and any re‐
maining arguments to be function parameters. Because C language
standards mandate the inclusion of types identifiers in the para‐
meter lists of function definitions, each parameter after the
first will be at least two words in length, as in There are a few
ways to embed a space in a macro argument. One is to use the un‐
adjustable space escape sequence The formatter treats this escape
sequence as if it were any other printable character, and will
not break a line there as it would a word space when the output
line is full. This method is useful for macro arguments that are
not expected to straddle an output line boundary, but has a draw‐
back: this space does not adjust as others do when the output
line is formatted. An alternative is to use the unbreakable
space escape sequence, which cannot break but does adjust. This
extension is widely but not perfectly portable. Another method
is to enclose the string in double quotes. → → → If the before
the space in the first example or the double quotes in the third
example were omitted, would see three arguments, and the result
would contain an undesired comma. → It is wise to remove trail‐
ing spaces from the ends of input lines. Should the need arise
to put a formattable space at the end of a line, do so with the
unadjustable or unbreakable space escape sequences. When you
need the escape character to appear in the output, use or in‐
stead. Technically, formats the current escape character; it
works reliably as long as no request is used to change it, which
should never happen in man pages. is a special character escape
sequence that explicitly formats the (backslash) glyph. warns
when an empty input line is found outside of a a topic presented
in subsection below. Use empty requests to space the source doc‐
ument for maintenance. Leading spaces cause a break and are for‐
matted. Avoid this behaviour if possible. Similarly, do not put
more than one space between words in an ordinary text line; they
are not to a single space as other text formatters might do.
Don't try to use the neutral double quote character to represent
itself in an argument. Use the special character escape sequence
to format it. Further, this glyph should not be used for conven‐
tional quotation; offers several quotation macros. See subsec‐
tion below. The formatter attempts to detect the ends of sen‐
tences and by default puts the equivalent of two spaces between
sentences on the same output line; see To defeat this detection
in a parsed list of macro arguments, put before the punctuation
mark. Thus, The .Ql . character. .Pp The .Ql \&. character.
.Pp .No test . test .Pp .No test. test gives The character The
character. test test as output. As can be seen in the first and
third output lines, handles punctuation characters specially in
macro arguments. This will be explained in section below. A
comment in the source file of a man page can begin with at the
start of an input line, after other input, or anywhere (the last
is a extension); the remainder of any such line is ignored. Use
to construct a man page from the following template. .\" The
following three macro calls are required. .Dd date .Dt topic
[section-identifier [section-keyword-or-title]] .Os [package-or-
operating system [version-or-release]] .Sh Name .Nm topic .Nd
summary-description .\" The next heading is used in sections 2
and 3. .\" .Sh Library .\" The next heading is used in sections
1-4, 6, 8, and 9. .Sh Synopsis .Sh Description .\" Uncomment and
populate the following sections as needed. .\" .Sh "Implementa‐
tion notes" .\" The next heading is used in sections 2, 3, and 9.
.\" .Sh "Return values" .\" The next heading is used in sections
1, 3, 6, and 8. .\" .Sh Environment .\" .Sh Files .\" The next
heading is used in sections 1, 6, and 8. .\" .Sh "Exit status"
.\" .Sh Examples .\" The next heading is used in sections 1, 4,
6, 8, and 9. .\" .Sh Diagnostics .\" .Sh Compatibility .\" The
next heading is used in sections 2, 3, 4, and 9. .\" .Sh Errors
.\" .Sh "See also" .\" .Sh Standards .\" .Sh History .\" .Sh Au‐
thors .\" .Sh Caveats .\" .Sh Bugs The first items in the tem‐
plate are the commands and They identify the page and are dis‐
cussed below in section The remaining items in the template are
section headings of which and are mandatory. These headings are
discussed in section which follows section Familiarize yourself
with manual domain macros first; we use them to illustrate the
use of page structure domain macros. In the descriptions of
macros below, square brackets surround optional arguments. An
ellipsis represents repetition of the preceding argument zero or
more times. Alternative values of a parameter are separated with
If a mandatory parameter can take one of several alternative val‐
ues, use braces to enclose the set, with spaces and separating
the items. An alternative to using braces is to separately syn‐
opsize distinct operation modes, particularly if the list of
valid optional arguments is dependent on the user's choice of a
mandatory parameter. Most macros affect subsequent arguments un‐
til another macro or a newline is encountered. For example,
doesn't produce but Consequently, a warning message is emitted
for many commands if the first argument is itself a macro, since
it cancels the effect of the preceding one. On rare occasions,
you might want to format a word along with surrounding brackets
as a literal. → Many macros possess an implicit width, used when
they are contained in lists and displays. If you avoid relying
on these default measurements, you escape potential conflicts
with site-local modifications of the package. Explicit and argu‐
ments to the and macros are preferable. We present the title
macros first due to their importance even though they formally
belong to the page structure domain macros. They designate the
topic, date of last revision, and the operating system or soft‐
ware project associated with the page. Call each once at the be‐
ginning of the document. They populate the page headers and
footers, which are in parlance termed This first macro of any
manual records the last modification date of the document source.
Arguments are concatenated and separated with space characters.
Historically, was written in U.S. traditional format, where is
the full month name in English, an integer without a leading
zero, and the four-digit year. This localism is not enforced,
however. You may prefer ISO 8601 format, A of the form is also
recognized. It is used in manuals to automatically insert the
current date when committing. This macro is neither callable nor
parsed.
is the subject of the man page. A that begins with an integer in
the range 1–9 or is one of the words or selects a predefined sec‐
tion title. This use of has nothing to do with the section head‐
ings otherwise discussed in this page; it arises from the organi‐
zational scheme of printed and bound Unix manuals.
In this implementation, the following titles are defined for in‐
tegral section numbers. Lf(CR) L. 1 2 3
4 5 6 7 8 9 A section
title may be arbitrary or one of the following abbreviations.
Lf(CR) L. USD PS1 AMD SMM URM PRM
KM IND LOCAL CON For compatibility, can be
used for and for Values from the previous table will specify a
new section title. If designates a computer architecture recog‐
nized by its value is prepended to the default section title as
specified by the second parameter. By default, the following ar‐
chitecture keywords are defined.
If a section title is not determined after the above matches have
been attempted, is used.
The effects of varying arguments on the page header content are
shown below. Observe how prevents the numeral 2 from being used
to look up a predefined section title. tab(@); Lf(CR)1 L2 L C R.
.Dt foo 2@→@foo(2)@System Calls Manual@foo(2) .Dt foo 2
m68k@→@foo(2)@m68k System Calls Manual@foo(2) .Dt foo 2
baz@→@foo(2)@System Calls Manual@foo(2) .Dt foo \&2
baz@→@foo(2)@baz@foo(2) .Dt foo "" baz@→@foo@baz@foo .Dt foo M
Z80@→@foo(M)@Z80@foo(M) strings define section titles and archi‐
tecture identifiers. Site-specific additions might be found in
the file see section below. This macro is neither callable nor
parsed. This macro associates the document with a software dis‐
tribution. When composing a man page to be included in the base
installation of an operating system, do not provide an argument;
will supply it. In this implementation, that default is It may
be overridden in the site configuration file, see section below.
A portable software package maintaining its own man pages can
supply its name and version number or release identifier as op‐
tional arguments. A argument should use the standard nomencla‐
ture for the software specified. In the following table, recog‐
nized arguments for some predefined operating systems are listed.
As with site additions might be defined in 7th, 7, III, 3, V,
V.2, V.3, V.4 3, 4, 4.1, 4.2, 4.3, 4.3t, 4.3T, 4.3r, 4.3R, 4.4
0.8, 0.8a, 0.9, 0.9a, 1.0, 1.0a, 1.1, 1.2, 1.2a, 1.2b, 1.2c,
1.2d, 1.2e, 1.3, 1.3a, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.5, 1.5.1,
1.5.2, 1.5.3, 1.6, 1.6.1, 1.6.2, 1.6.3, 2.0, 2.0.1, 2.0.2, 2.0.3,
2.1, 3.0, 3.0.1, 3.0.2, 3.0.3, 3.1, 3.1.1, 4.0, 4.0.1, 5.0,
5.0.1, 5.0.2, 5.1, 5.1.2, 5.1.3, 5.1.4, 5.2, 5.2.1, 5.2.2, 6.0,
6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, 6.0.6, 6.1, 6.1.1, 6.1.2,
6.1.3, 6.1.4, 6.1.5, 7.0, 7.0.1, 7.0.2, 7.1, 7.1.1, 7.1.2, 7.2,
8.0, 8.1 1.0, 1.1, 1.1.5, 1.1.5.1, 2.0, 2.0.5, 2.1, 2.1.5, 2.1.6,
2.1.7, 2.2, 2.2.1, 2.2.2, 2.2.5, 2.2.6, 2.2.7, 2.2.8, 2.2.9, 3.0,
3.1, 3.2, 3.3, 3.4, 3.5, 4.0, 4.1, 4.1.1, 4.2, 4.3, 4.4, 4.5,
4.6, 4.6.2, 4.7, 4.8, 4.9, 4.10, 4.11, 5.0, 5.1, 5.2, 5.2.1, 5.3,
5.4, 5.5, 6.0, 6.1, 6.2, 6.3, 6.4, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0,
8.1, 8.2, 8.3, 8.4, 9.0, 9.1, 9.2, 9.3, 10.0, 10.1, 10.2, 10.3,
10.4, 11.0, 11.1, 11.2, 11.3, 12.0, 12.1 2.0, 2.1, 2.2, 2.3, 2.4,
2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,
3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0,
5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3,
6.4, 6.5, 6.6 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.8.1,
1.9, 1.10, 1.11, 1.12, 1.12.2, 1.13, 2.0, 2.1, 2.2, 2.3, 2.4,
2.5, 2.6, 2.7, 2.8, 2.9, 2.9.1, 2.10, 2.10.1, 2.11, 2.12, 2.13,
3.0, 3.0.1, 3.0.2, 3.1, 3.2, 3.2.1, 3.2.2, 3.3, 3.4, 3.4.1,
3.4.2, 3.4.3, 3.5, 3.6, 3.6.1, 3.6.2, 3.7, 3.8, 3.8.1, 3.8.2,
4.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, 4.0.5, 4.0.6, 4.1, 4.2, 4.2.1,
4.2.2, 4.2.3, 4.2.4, 4.3, 4.4, 4.4.1, 4.4.2, 4.4.3, 4.5, 4.6,
4.6.1, 4.6.2, 4.7, 4.8, 4.8.1, 4.9, 5.0, 5.0.1, 5.0.2, 5.1, 5.2,
5.2.1, 5.2.2, 5.3, 5.4, 5.4.1, 5.4.2, 5.4.3, 5.5, 5.6, 5.6.1,
5.6.2 8.0.0, 8.1.0, 8.2.0, 8.3.0, 8.4.0, 8.5.0, 8.6.0, 8.7.0,
8.8.0, 8.9.0, 8.10.0, 8.11.0, 9.0.0, 9.1.0, 9.2.0, 9.3.0, 9.4.0,
9.5.0, 9.6.0, 9.7.0, 9.8.0, 10.0.0, 10.1.0, 10.2.0, 10.3.0,
10.4.0, 10.5.0, 10.6.0, 10.7.0, 10.8.0, 11.0.0, 11.1.0, 11.2.0,
11.3.0, 11.4.0, 11.5.0, 12.0.0, 12.1.0, 12.2.0, 13.0.0, 13.1.0,
13.2.0, 13.3.0, 13.4.0, 14.0.0, 14.1.0, 14.2.0, 14.3.0, 14.4.0,
14.5.0, 15.0.0, 15.1.0, 15.2.0, 15.3.0, 15.4.0, 15.5.0, 15.6.0,
16.0.0, 16.1.0, 16.2.0, 16.3.0, 16.4.0, 16.5.0, 16.6.0, 17.0.0,
17.1.0, 17.2.0, 17.3.0, 17.4.0, 17.5.0, 17.6.0, 17.7.0, 18.0.0,
18.1.0, 18.2.0, 18.3.0, 18.4.0, 18.5.0, 18.6.0, 18.7.0, 19.0.0,
19.1.0, 19.2.0 Historically, the first argument used with was or
An unrecognized version argument after is replaced with for other
predefined abbreviations, it is ignored and a warning diagnostic
emitted. Otherwise, unrecognized arguments are displayed verba‐
tim in the page footer. For instance, this page uses whereas a
locally produced page might employ omitting versioning. This
macro is neither callable nor parsed.
The manual domain macro names are derived from the day to day in‐
formal language used to describe commands, subroutines and re‐
lated files. Slightly different variations of this language are
used to describe the three different aspects of writing a man
page. First, there is the description of macro command usage.
Second is the description of a command macros, and third, the de‐
scription of a command to a user in the verbal sense; that is,
discussion of a command in the text of a man page. In the first
case, macros are themselves a type of command; the general syntax
for a command is: is a macro command, and anything following it
are arguments to be processed. In the second case, the descrip‐
tion of a command using the manual domain macros is a bit more
involved; a typical command line might be displayed as: Here, is
the command name and the bracketed string is a argument desig‐
nated as optional by the option brackets. In terms, and are
called in this example, the user has to replace the meta expres‐
sions given in angle brackets with real file names. Note that in
this document meta arguments are used to describe commands; in
most man pages, meta variables are not specifically written with
angle brackets. The macros that formatted the above example: .Nm
filter .Op Fl flag .Ao Ar infile Ac Ao Ar outfile Ac In the third
case, discussion of commands and command syntax includes both ex‐
amples above, but may add more detail. The arguments and from
the example above might be referred to as or Some command-line
argument lists are quite long: Here one might talk about the com‐
mand and qualify the argument, as an argument to the flag, or
discuss the optional file operand In the verbal context, such de‐
tail can prevent confusion, however the package does not have a
macro for an argument a flag. Instead the argument macro is used
for an operand or file argument like as well as an argument to a
flag like The make command line was produced from: .Nm make .Op
Fl eiknqrstv .Op Fl D Ar variable .Op Fl d Ar flags .Op Fl f Ar
makefile .Op Fl I Ar directory .Op Fl j Ar max_jobs .Op Ar vari‐
able Ns = Ns Ar value .Bk .Op Ar target ... .Ek The and macros
are explained in The manual domain and general text domain macros
share a similar syntax with a few minor deviations; most notably,
and differ only when called without arguments; and and impose an
order on their argument lists. All manual domain macros are ca‐
pable of recognizing and properly handling punctuation, provided
each punctuation character is separated by a leading space. If a
command is given: The result is: The punctuation is not recog‐
nized and all is output in the font used by If the punctuation is
separated by a leading white space: The result is: The punctua‐
tion is now recognized and output in the default font distin‐
guishing it from the argument strings. To remove the special
meaning from a punctuation character, escape it with The follow‐
ing punctuation characters are recognized by is limited as a
macro language, and has difficulty when presented with a string
containing certain mathematical, logical, or quotation character
sequences: {+,-,/,*,%,<,>,<=,>=,=,==,&,`,',"} The problem is that
may assume it is supposed to actually perform the operation or
evaluation suggested by the characters. To prevent the acciden‐
tal evaluation of these characters, escape them with Typical syn‐
tax is shown in the first manual domain macro displayed below,
The address macro identifies an address construct. The default
width is 12n. The macro is used to specify the name of the au‐
thor of the item being documented, or the name of the author of
the actual manual page. The default width is 12n. In a section
titled causes a break, allowing each new name to appear on its
own line. If this is not desirable, .An -nosplit call will turn
this off. To turn splitting back on, write .An -split The argu‐
ment macro may be used whenever an argument is referenced. If
called without arguments, is output. This places the ellipsis in
italics, which is ugly and incorrect, and will be noticed on ter‐
minals that underline text instead of using an oblique typeface.
We recommend using instead. The default width is 12n. The macro
is used to demonstrate a declaration for a device interface in a
section four manual. In a section titled causes a break before
and after its arguments. The default width is 12n. The command
modifier is identical to the (flag) command with the exception
that the macro does not assert a dash in front of every argument.
Traditionally flags are marked by the preceding dash, however,
some commands or subsets of commands do not use them. Command
modifiers may also be specified in conjunction with interactive
commands such as editor commands. See The default width is 10n.
A variable (or constant) that is defined in an include file is
specified by the macro The default width is 12n. The errno macro
specifies the error return value for section 2, 3, and 9 library
routines. The second example below shows used with the general
text domain macro, as it would be used in a section two manual
page. The default width is 17n. The macro specifies an environ‐
ment variable. The default width is 15n. The macro handles com‐
mand-line flags. It prepends a dash, to the flag. For interac‐
tive command flags that are not prepended with a dash, the (com‐
mand modifier) macro is identical, but without the dash. The
macro without any arguments results in a dash representing
stdin/stdout. Note that giving a single dash will result in two
dashes. The default width is 12n. The macro is used in the sec‐
tion with section two or three functions. It is neither callable
nor parsed. In a section titled causes a break if a function has
already been presented and a break has not occurred, leaving ver‐
tical space between one function declaration and the next. In a
section titled the macro represents the statement, and is the
short form of the above example. It specifies the C header file
as being included in a C program. It also causes a break. While
not in the section, it represents the header file enclosed in an‐
gle brackets. This macro is intended for the section. It may be
used anywhere else in the man page without problems, but its main
purpose is to present the function type (in BSD kernel normal
form) for the of sections two and three. (It causes a break, al‐
lowing the function name to appear on the next line.) The macro
is modeled on conventions. Note that any call to another macro
signals the end of the call (it will insert a closing parenthesis
at that point). For functions with many parameters (which is
rare), the macros (function open) and (function close) may be
used with (function argument). Example: .Ft int .Fo res_mkquery
.Fa "int op" .Fa "char *dname" .Fa "int class" .Fa "int type" .Fa
"char *data" .Fa "int datalen" .Fa "struct rrec *newrr" .Fa "char
*buf" .Fa "int buflen" .Fc Produces: Typically, in a section, the
function delcaration will begin the line. If more than one func‐
tion is presented in the section and a function type has not been
given, a break will occur, leaving vertical space between the
current and prior function names. The default width values of
and are 12n and 16n, respectively. The macro is used to refer to
function arguments (parameters) outside of the section of the
manual or inside the section if the enclosure macros and instead
of are used. may also be used to refer to structure members.
The default width is 12n. The macro generates text for use in
the section. For example, produces: The option is valid only for
manual page sections 2 and 3. Currently, this macro does nothing
if used without the flag. The macro generates text for use in
the section. For example, produces: The option is valid only for
manual page sections 1, 6 and 8. Currently, this macro does
nothing if used without the flag. The macro designates an inter‐
active or internal command. The default width is 12n. The macro
is used to specify the library where a particular function is
compiled in. Available arguments to and their results are: Site-
specific additions might be found in the file see section below.
In a section titled causes a break before and after its argu‐
ments. The literal macro may be used for special characters,
symbolic constants, and other syntactical items that should be
typed exactly as displayed. The default width is 16n. The macro
is used for the document title or page topic. Upon its first
call, it has the peculiarity of remembering its argument, which
should always be the topic of the man page. When subsequently
called without arguments, regurgitates this initial name for the
sole purpose of making less work for the author. Use of is also
appropriate when presenting a command synopsis for the topic of a
man page in section 1, 6, or 8. Its behavior changes when pre‐
sented with arguments of various forms. By default, the topic is
set in boldface to reflect its prime importance in the discus‐
sion. Cross references to other man page topics should use in‐
cluding a second argument for the section number enables them to
be hyperlinked. By default, cross-referenced topics are set in
italics to avoid cluttering the page with boldface. The default
width is 10n. The macro places option brackets around any re‐
maining arguments on the command line, and places any trailing
punctuation outside the brackets. The macros and (which produce
an opening and a closing option bracket, respectively) may be
used across one or more lines or to specify the exact position of
the closing parenthesis. Here a typical example of the and
macros: .Oo .Op Fl k Ar kilobytes .Op Fl i Ar interval .Op Fl c
Ar count .Oc Produces: The default width values of and are 14n
and 10n, respectively. The macro formats file specifications.
If called without arguments, (recognized by many shells) is out‐
put, representing the user's home directory. The default width
is 32n. The macro replaces standard abbreviations with their
formal names. Available pairs for are: Part 1: System API Part
2: Shell and Utilities X/Open Miscellaneous The macro may be used
whenever a type is referenced. In a section titled causes a
break (useful for old-style C variable declarations). Generic
variable reference. The default width is 12n. The macro expects
the first argument to be a manual page name. The optional second
argument, if a string (defining the manual section), is put into
parentheses. The default width is 10n. The following values for
are possible: will be prepended to the string The following val‐
ues for are possible: For possible values of see the description
of the command above in section For possible values of see the
description of the command above in section For possible values
of see the description of the command above in section Text may
be stressed or emphasized with the macro. The usual font for em‐
phasis is italic. The default width is 10n. The font mode must
be ended with the macro (the latter takes no arguments). Font
modes may be nested within other font modes. has the following
syntax: must be one of the following three types: Same as if the
macro was used for the entire block of text. Same as if the
macro was used for the entire block of text. Same as if the
macro was used for the entire block of text. Both macros are
neither callable nor parsed. The concept of enclosure is similar
to quoting. The object being to enclose one or more strings be‐
tween a pair of characters like quotes or parentheses. The terms
quoting and enclosure are used interchangeably throughout this
document. Most of the one-line enclosure macros end in small
letter to give a hint of quoting, but there are a few irregulari‐
ties. For each enclosure macro, there is a pair of opening and
closing macros that end with the lowercase letters and respec‐
tively. lb lb lb lb lb l l l l l. Quote Open Close Func‐
tion Result .Aq .Ao .Ac Angle Bracket Enclo‐
sure <string> .Bq .Bo .Bc Bracket Enclo‐
sure [string] .Brq .Bro .Brc Brace Enclo‐
sure {string} .Dq .Do .Dc Double Quote “string”
.Eq .Eo .Ec Enclose String (in XY) XstringY
.Pq .Po .Pc Parenthesis Enclosure (string)
.Ql Quoted Literal “string” or string
.Qq .Qo .Qc Straight Double Quote "string"
.Sq .So .Sc Single Quote ‘string’ All macros end‐
ing with and have a default width value of 12n. These macros ex‐
pect the first argument to be the opening and closing strings,
respectively. To work around the nine-argument limit in the
original program, supports two other macros that are now obso‐
lete. uses its first and second parameters as opening and clos‐
ing marks which are then used to enclose the arguments of The de‐
fault width value is 12n for both macros. The first and second
arguments of this macro are the opening and closing strings re‐
spectively, followed by the arguments to be enclosed. The quoted
literal macro behaves differently in and modes. If formatted
with a quoted literal is always quoted. If formatted with an
item is only quoted if the width of the item is less than three
constant-width characters. This is to make short strings more
visible where the font change to literal (constant-width) is less
noticeable. The default width is 16n. The prefix macro sup‐
presses the whitespace between its first and second argument: The
default width is 12n. The macro (see below) performs the analo‐
gous suffix function. The macro inserts an apostrophe and exits
any special text modes, continuing in mode. Examples of quoting:
For a good example of nested enclosure macros, see the option
macro. It was created from the same underlying enclosure macros
as those presented in the list above. The and extended argument
list macros are discussed below. formats subsequent argument(s)
normally, ending the effect of and similar. Parsing is sup‐
pressed, so you must prefix words like with to avoid their inter‐
pretation as macros. → → → The default width is 12n. The macro
suppresses insertion of a space between the current position and
its first parameter. For example, it is useful for old style ar‐
gument lists where there is no space between the flag and argu‐
ment: Note: The macro always invokes the macro after eliminating
the space unless another macro name follows it. If used as a
command (i.e., the second form above in the line), is identical
to Use the macro to cite a (sub)section heading within the given
document. → The default width is 16n. The symbolic emphasis
macro is generally a boldface macro in either the symbolic sense
or the traditional English usage. → The default width is 6n.
Use this macro for mathematical symbols and similar things. →
The default width is 6n. The following macros make a modest at‐
tempt to handle references. At best, the macros make it conve‐
nient to manually drop in a subset of style references. Refer‐
ence start (does not take arguments). In a section titled it
causes a break and begins collection of reference information un‐
til the reference end macro is read. Reference end (does not
take arguments). The reference is printed. Reference author
name; one name per invocation. Book title. City/place. Date.
Issuer/publisher name. Journal name. Issue number. Optional
information. Page number. Corporate or foreign author. Report
name. Title of article. Optional hypertext reference. Volume.
Macros beginning with are not callable but accept multiple argu‐
ments in the usual way. Only the macro is handled properly as a
parameter; other macros will cause strange output. and can be
used outside of the environment. Example: .Rs .%A "Matthew Bar"
.%A "John Foo" .%T "Implementation Notes on foobar(1)" .%R "Tech‐
nical Report ABC-DE-12-345" .%Q "Drofnats College" .%C "Nowhere"
.%D "April 1991" .Re produces The trade name macro prints its ar‐
guments at a smaller type size. It is intended to imitate a
small caps fonts for fully capitalized acronyms. The default
width is 10n. The and macros allow one to extend an argument
list on a macro boundary for the macro (see below). Note that
and are implemented similarly to all other macros opening and
closing an enclosure (without inserting characters, of course).
This means that the following is true for those macros also.
Here is an example of using the space mode macro to turn spacing
off: .Bd -literal -offset indent .Sm off .It Xo Sy I Ar operation
.No \en Ar count No \en .Xc .Sm on .Ed produces Another one: .Bd
-literal -offset indent .Sm off .It Cm S No / Ar old_pattern Xo
.No / Ar new_pattern .No / Op Cm g .Xc .Sm on .Ed produces An‐
other example of and enclosure macros: Test the value of a vari‐
able. .Bd -literal -offset indent .It Xo .Ic .ifndef .Oo \&! Oc
Ns Ar variable Oo .Ar operator variable No ... .Oc Xc .Ed pro‐
duces The following section heading macros are required in every
man page. The remaining section headings are recommended at the
discretion of the author writing the manual page. The macro is
parsed but not generally callable. It can be used as an argument
in a call to only; it then reactivates the default font for The
default width is 8n. The macro is mandatory. If not specified,
headers, footers, and page layout defaults will not be set and
things will be rather unpleasant. The section consists of at
least three items. The first is the name macro naming the sub‐
ject of the man page. The second is the name description macro,
which separates the subject name from the third item, which is
the description. The description should be the most terse and
lucid possible, as the space available is small. first prints
then all its arguments. This section is for section two and
three function calls. It should consist of a single macro call;
see The section describes the typical usage of the subject of a
man page. The macros required are either or (and possibly and
The function name macro is required for manual page sections 2
and 3; the command and general name macro is required for sec‐
tions 1, 5, 6, 7, and 8. Section 4 manuals require a or a con‐
figuration device usage macro. Several other macros may be nec‐
essary to produce the synopsis line as shown below: The following
macros were used: In most cases the first text in the section is
a brief paragraph on the command, function or file, followed by a
lexical list of options and respective explanations. To create
such a list, the (begin list), (list item) and (end list) macros
are used (see below). Implementation specific information should
be placed here. Sections 2, 3 and 9 function return values
should go here. The macro may be used to generate text for use
in the section for most section 2 and 3 library functions; see
The following section headings are part of the preferred manual
page layout and must be used appropriately to maintain consis‐
tency. They are listed in the order in which they would be used.
The section should reveal any related environment variables and
clues to their behavior and/or usage. Files which are used or
created by the man page subject should be listed via the macro in
the section. There are several ways to create examples. See
subsection below for details. Diagnostic messages from a command
should be placed in this section. The macro may be used to gen‐
erate text for use in the section for most section 1, 6 and 8
commands; see Known compatibility issues (e.g. deprecated options
or parameters) should be listed here. Specific error handling,
especially from library functions (man page sections 2, 3, and 9)
should go here. The macro is used to specify an error (errno).
References to other material on the man page topic and cross ref‐
erences to other relevant man pages should be placed in the sec‐
tion. Cross references are specified using the macro. Currently
style references are not accommodated. It is recommended that
the cross references be sorted by section number, then alphabeti‐
cally by name within each section, then separated by commas. Ex‐
ample: If the command, library function, or file adheres to a
specific implementation such as or this should be noted here. If
the command does not adhere to any standard, its history should
be noted in the section. Any command which does not adhere to
any specific standards should be outlined historically in this
section. Credits should be placed here. Use the macro for names
and the macro for email addresses within optional contact infor‐
mation. Explicitly indicate whether the person authored the ini‐
tial manual page or the software or whatever the person is being
credited for. Blatant problems with the topic go here. User-
specified sections may be added; for example, this section was
set with: .Sh "Page structure domain" Subsection headings have
exactly the same syntax as section headings: is parsed but not
generally callable. It can be used as an argument in a call to
only; it then reactivates the default font for The default width
is 8n. The paragraph command may be used to specify a line space
where necessary. The macro is not necessary after a or macro or
before a or macro (which both assert a vertical distance unless
the flag is given). The macro is neither callable nor parsed and
takes no arguments; an alternative name is The only keep that is
implemented at this time is for words. The macros are (begin
keep) and (end keep). The only option that currently accepts is
(also the default); this prevents breaks in the middle of op‐
tions. In the example for command-line arguments (see the keep
prevents from placing the flag and the argument on separate
lines. Neither macro is callable or parsed. More work needs to
be done on the keep macros; specifically, a option should be
added. There are seven types of displays. (This is D-one.)
Display one line of indented text. This macro is parsed but not
callable. The above was produced by: (This is D-ell.) Display
one line of indented text. The example macro has been used
throughout this file. It allows the indentation (display) of one
line of text. Its default font is set to constant width (lit‐
eral). is parsed but not callable. The above was produced by:
Begin display. The display must be ended with the macro. It has
the following syntax: Fill, but do not adjust the right margin
(only left-justify). Center lines between the current left and
right margin. Note that each single line is centered. Do not
fill; break lines where their input lines are broken. This can
produce overlong lines without warning messages. Display a
filled block. The block of text is formatted (i.e., the text is
justified on both the left and right side). Display block with
literal font (usually fixed-width). Useful for source code or
simple tabbed or spaced text. The file whose name follows the
flag is read and displayed before any data enclosed with and us‐
ing the selected display type. Any commands in the file will be
processed. If is specified with one of the following strings,
the string is interpreted to indicate the level of indentation
for the forthcoming block of text: Align block on the current
left margin; this is the default mode of Supposedly center the
block. At this time unfortunately, the block merely gets left
aligned about an imaginary center margin. Indent by one default
indent value or tab. The default indent value is also used for
the and macros, so one is guaranteed the two types of displays
will line up. The indentation value is normally set to 6n or
about two thirds of an inch (six constant width characters). In‐
dent two times the default indent value. This aligns the block
about two inches from the right side of the page. This macro
needs work and perhaps may never do the right thing within If is
a valid numeric expression instead use that value for indenta‐
tion. The most useful scaling indicators are and specifying the
so-called and This is approximately the width of the letters and
respectively of the current font (for output, both scaling indi‐
cators give the same values). If isn't a numeric expression, it
is tested whether it is an macro name, and the default offset
value associated with this macro is used. Finally, if all tests
fail, the width of (typeset with a fixed-width font) is taken as
the offset. Suppress insertion of vertical space before begin of
display. End display (takes no arguments). There are several
types of lists which may be initiated with the begin-list macro.
Items within the list are specified with the item macro, and each
list must end with the macro. Lists may be nested within them‐
selves and within displays. The use of columns inside of lists
or lists inside of columns is untested. In addition, several
list attributes may be specified such as the width of a tag, the
list offset, and compactness (blank lines between items allowed
or disallowed). Most of this document has been formatted with a
tag style list It has the following syntax forms: And now a de‐
tailed description of the list types. A bullet list. .Bl -bul‐
let -offset indent -compact .It Bullet one goes here. .It Bullet
two here. .El Produces: Bullet one goes here. Bullet two here.
A dash list. .Bl -dash -offset indent -compact .It Dash one goes
here. .It Dash two here. .El Produces: Dash one goes here.
Dash two here. An enumerated list. .Bl -enum -offset indent
-compact .It Item one goes here. .It And item two here. .El The
result: Item one goes here. And item two here. If you want to
nest enumerated lists, use the flag (starting with the second-
level list): .Bl -enum -offset indent -compact .It Item one goes
here .Bl -enum -nested -compact .It Item two goes here. .It And
item three here. .El .It And item four here. .El Result: Item
one goes here. Item two goes here. And item three here. And
item four here. A list of type without list markers. .Bl -item
-offset indent .It Item one goes here. Item one goes here. Item
one goes here. .It Item two here. Item two here. Item two
here. .El Produces: Item one goes here. Item one goes here.
Item one goes here. Item two here. Item two here. Item two
here. A list with tags. Use to specify the tag width. sleep
time of the process (seconds blocked) number of disk I/O opera‐
tions resulting from references by the process to pages not
loaded in core. numerical user-id of process owner numerical id
of parent of process priority (non-positive when in non-inter‐
ruptible wait) The raw text: .Bl -tag -width "PPID" -compact
-offset indent .It SL sleep time of the process (seconds blocked)
.It PAGEIN number of disk I/O operations resulting from refer‐
ences by the process to pages not loaded in core. .It UID numer‐
ical user-id of process owner .It PPID numerical id of parent of
process priority (non-positive when in non-interruptible wait)
.El Diag lists create section four diagnostic lists and are simi‐
lar to inset lists except callable macros are ignored. The flag
is not meaningful in this context. Example: .Bl -diag .It You
can't use Sy here. The message says all. .El produces The mes‐
sage says all. A list with hanging tags. labels appear similar
to tagged lists when the label is smaller than the label width.
blend into the paragraph unlike tagged paragraph labels. And the
unformatted text which created it: .Bl -hang -offset indent .It
Em Hanged labels appear similar to tagged lists when the label is
smaller than the label width. .It Em Longer hanged list labels
blend into the paragraph unlike tagged paragraph labels. .El
Lists with overhanging tags do not use indentation for the items;
tags are written to a separate line. sleep time of the process
(seconds blocked) number of disk I/O operations resulting from
references by the process to pages not loaded in core. numerical
user-id of process owner numerical id of parent of process prior‐
ity (non-positive when in non-interruptible wait) The raw text:
.Bl -ohang -offset indent .It Sy SL sleep time of the process
(seconds blocked) .It Sy PAGEIN number of disk I/O operations re‐
sulting from references by the process to pages not loaded in
core. .It Sy UID numerical user-id of process owner .It Sy PPID
numerical id of parent of process priority (non-positive when in
non-interruptible wait) .El Here is an example of inset labels:
The tagged list (also called a tagged paragraph) is the most com‐
mon type of list used in the Berkeley manuals. Use a attribute
as described below. Diag lists create section four diagnostic
lists and are similar to inset lists except callable macros are
ignored. Hanged labels are a matter of taste. Overhanging la‐
bels are nice when space is constrained. Inset labels are useful
for controlling blocks of paragraphs and are valuable for con‐
verting manuals to other formats. Here is the source text which
produced the above example: .Bl -inset -offset indent .It Em Tag
The tagged list (also called a tagged paragraph) is the most com‐
mon type of list used in the Berkeley manuals. .It Em Diag Diag
lists create section four diagnostic lists and are similar to in‐
set lists except callable macros are ignored. .It Em Hang Hanged
labels are a matter of taste. .It Em Ohang Overhanging labels
are nice when space is constrained. .It Em Inset Inset labels
are useful for controlling blocks of paragraphs and are valuable
for converting .Xr mdoc manuals to other formats. .El This list
type generates multiple columns. The number of columns and the
width of each column is determined by the arguments to the list,
etc. If starts with a (dot) immediately followed by a valid
macro name, interpret and use the width of the result. Other‐
wise, the width of (typeset with a fixed-width font) is taken as
the column width. Each argument is parsed to make a row, each
column within the row is a separate argument separated by a tab
or the macro. The table: was produced by: .Bl -column -offset
indent ".Sy String" ".Sy Nroff" ".Sy Troff" .It Sy String Ta Sy
Nroff Ta Sy Troff .It Li <= Ta <= Ta \*(<= .It Li >= Ta >= Ta
\*(>= .El Don't abuse this list type! For more complicated cases
it might be far better and easier to use the table preprocessor.
Other keywords: If starts with a (dot) immediately followed by a
valid macro name, interpret and use the width of the result. Al‐
most all lists in this document use this option. Example: .Bl
-tag -width ".Fl test Ao Ar string Ac" .It Fl test Ao Ar string
Ac This is a longer sentence to show how the .Fl width flag works
in combination with a tag list. .El gives: This is a longer sen‐
tence to show how the flag works in combination with a tag list.
(Note that the current state of is saved before is interpreted;
afterwards, all variables are restored again. However, boxes
(used for enclosures) can't be saved in as a consequence, argu‐
ments must always be to avoid nasty errors. For example, do not
write but instead if you really need only an opening angle
bracket.) Otherwise, if is a valid numeric expression use that
value for indentation. The most useful scaling indicators are
and specifying the so-called and This is approximately the width
of the letters and respectively of the current font (for output,
both scaling indicators give the same values). If isn't a nu‐
meric expression, it is tested whether it is an macro name, and
the default width value associated with this macro is used. Fi‐
nally, if all tests fail, the width of (typeset with a fixed-
width font) is taken as the width. If a width is not specified
for the tag list type, is used. If is a default indent value
(normally set to 6n, similar to the value used in or is used. If
is a valid numeric expression instead use that value for indenta‐
tion. The most useful scaling indicators are and specifying the
so-called and This is approximately the width of the letters and
respectively of the current font (for output, both scaling indi‐
cators give the same values). If isn't a numeric expression, it
is tested whether it is an macro name, and the default offset
value associated with this macro is used. Finally, if all tests
fail, the width of (typeset with a fixed-width font) is taken as
the offset. Suppress insertion of vertical space before the list
and between list items. A double handful of macros fit only un‐
comfortably into one of the above sections. Of these, we
couldn't find attested examples for or They are documented here
for completeness—if you know their proper usage, please send a
mail to and include a specimen with its provenance. formats
boilerplate text. → It is neither callable nor parsed and takes
no arguments. Its default width is 6n. is an obsolete means of
specifying a function return value. allows a break right before
the return value (usually a single digit) which is bad typograph‐
ical behaviour. Instead, set the return value with the rest of
the code, using to tie the return value to the previous word.
Its default width is 12n. Inlines the contents of a (header)
file into the document. It first prints followed by the file
name, then the contents of It is neither callable nor parsed.
Embed hyperlink. Its default width is 6n. Usage unknown. The
sources describe it as a macro for Its default width is 6n. Em‐
bed email address. Its default width is 6n. Usage unknown. The
sources describe it as Manipulate or toggle argument-spacing
mode. If argument-spacing mode is off, no spaces between macro
arguments are inserted. If called without a parameter (or if the
next parameter is neither nor toggles argument-spacing mode. Its
default width is 8n. formats boilerplate text. → It is neither
callable nor parsed and takes no arguments. Its default width is
8n. The following strings are predefined for compatibility with
legacy documents. Contemporary ones should use the alternatives
shown in the column below. See for a full discussion of these
special character escape sequences. Cb Lb2 Lb2 Lb Lb Lb Lf(CR)
L2 L2 L Lf(CR) L. String 7-bit 8-bit UCS Prefer Mean‐
ing \*(<= <= <= \(<= less than or equal to
\*(>= >= >= \(>= greater than or equal to
\*(Rq " " \(rq right double quote
\*(Lq " " \(lq left double quote
\*(ua ^ ^ \(ua vertical arrow up
\*(aa ' ´ \(aa acute accent \*(ga `
` \(ga grave accent \*(q "
" \(dq neutral double quote \*(Pi pi
pi \(*p lowercase pi \*(Ne !=
!= \(!= not equals \*(Le <=
<= \(<= less than or equal to \*(Ge >=
>= \(>= greater than or equal to \*(Lt <
< < less than \*(Gt >
> > greater than \*(Pm +-
± \(+- plus or minus \*(If infin‐
ity infinity \(if infinity
\*(Am & ampersand
\*(Na NaN not a number
\*(Ba | bar Some column headings
are shorthand for standardized character encodings; “7-bit” for
ISO 646:1991 IRV (US-ASCII), “8-bit” for ISO 8859-1 (Latin-1) and
IBM code page 1047, and “UCS” for ISO 10646 (Unicode character
set). Historically, configured the string definitions to fit the
capabilities expected of the output device. Old typesetters
lacked directional double quotes, producing repeated directional
single quotes ‘‘like this’’; early versions of in fact defined
the and strings this way. Nowadays, output drivers take on the
responsibility of glyph substitution, as they possess relevant
knowledge of their available repertoires. The debugging macro
offered by previous versions of is unavailable in since the lat‐
ter provides better facilities to check parameters; additionally,
implements many error and warning messages, making the package
more robust and more verbose. The remaining debugging macro is
which dumps the package's global register and string contents to
the standard error stream. A normal user will never need it.
The following options set registers (with and strings (with rec‐
ognized and used by the macro package. To ensure rendering con‐
sistent with output device capabilities and reader preferences,
man pages should never manipulate them. Setting string config‐
ures the adjustment mode for most formatted text. Typical values
are for adjustment to both margins (the default), or for left
alignment (ragged right margin). Any valid argument to request
may be used. See for less-common choices. Setting register to 1
numbers output pages consecutively, rather than resetting the
page number to 1 (or the value of register with each new docu‐
ment. By default, the package inhibits page breaks, headers, and
footers in the midst of the document text if it is being dis‐
played with a terminal device such as or to enable more efficient
viewing of the page. This behavior can be changed to format the
page as if for 66-line Teletype output by setting the continuous
rendering register to zero while calling On HTML devices, it can‐
not be disabled. Section headings (defined with and page titles
in headers (defined with can be presented in full capitals by
setting the registers and respectively, to 1. These transforma‐
tions are off by default because they discard case distinction
information. Setting register to 1 enables double-sided page
layout, which is only distinct when not continuously rendering.
It places the page number at the bottom right on odd-numbered
(recto) pages, and at the bottom left on even-numbered (verso)
pages, swapping places with the arguments to The value of the
register determines the footer's distance from the page bottom;
this amount is always negative and should specify a scaling unit.
At one half-inch above this location, the page text is broken be‐
fore writing the footer. It is ignored if continuous rendering
is enabled. The default is -0.5i. The string sets the font used
for section and subsection headings; the default is (bold style
of the default family). Any valid argument to request may be
used. Normally, automatic hyphenation is enabled using a mode
appropriate to the locale; see section “Localization“ of It can
be disabled by setting the register to zero. The paragraph and
subsection heading indentation amounts can be changed by setting
the registers and The default paragraph indentation is 7.2n on
typesetters and 7n on terminals. The default subsection heading
indentation amount is 3n; section headings are set with an inden‐
tation of zero. The line and title lengths can be changed by
setting the registers and respectively: If not set, both regis‐
ters default to 78n for terminal devices and 6.5i otherwise.
Setting the register starts enumeration of pages at its value.
The default is 1. To change the document font size to 11p or
12p, set register accordingly: Register is ignored when format‐
ting for terminal devices. Setting the register to a page number
numbers its successors as and so forth. The register tracking
the suffixed page letter uses format (see the request in
This brief program detects whether the or macro package is being
used by a document and loads the correct macro definitions, tak‐
ing advantage of the fact that pages using them must call or re‐
spectively, before any other macros. A user typing, for example,
need not know which package the file uses. Multiple man pages,
in either format, can be handled; reloads each macro package as
necessary. implements the bulk of the package and loads further
components as needed from the subdirectory. is a wrapper that
loads defines macros, registers, and strings concerned with the
production of formatted output. It includes strings of the form
and for manual section titles and architecture identifiers, re‐
spectively, where is an argument recognized by defines parameters
appropriate for rendering to terminal devices. defines parame‐
ters appropriate for rendering to typesetter devices. defines
many strings and macros that interpolate formatted text, such as
names of operating system releases, *BSD libraries, and standards
documents. The string names are of the form (observe the double
dashes), or where is one of the operating system macros from sec‐
tion above, is an encoding of an operating system release (some‐
times omitted along with the preceding it), an identifier for a
standards body or committee, one for an issue of a standard pro‐
mulgated by and a keyword identifying a *BSD library. This file
houses local additions and customizations to the package. It can
be empty. The project maintains an independent implementation of
the language and a renderer that directly parses its markup as
well as that of Section 3f has not been added to the header rou‐
tines. needs to have a check to prevent splitting up the line if
its length is too short. Occasionally it separates the last
parenthesis, and sometimes looks ridiculous if output lines are
being filled. The list and display macros do not do any keeps
and certainly should be able to. As of 1.23, no longer changes
the type size; this functionality may return in the next release.
See for descriptions of the following attributes:
box; cbp-1 | cbp-1 l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE =
Availability text/groff = Stability Uncommitted
Source code for open source software components in Oracle Solaris
can be found at https://www.oracle.com/downloads/opensource/so‐
laris-source-code-downloads.html.
This software was built from source available at:
https://github.com/oracle/solaris-userland
The original community source was downloaded from:
https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz
Further information about this software can be found on the open
source community website at https://www.gnu.org/software/groff.