groff_man_style(7)     Miscellaneous Information Manual     groff_man_style(7)

Name
       groff_man_style - GNU roff man page tutorial and style guide

Synopsis
       groff -man [option_...] [file_...]
       groff -m man [option_...] [file_...]

Description
       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

       We discuss other macros (.AT, .DT, .HP, .OP, .PD, and .UC) in
       subsection “Deprecated features” below.

       Throughout Unix documentation, a manual entry is referred to simply 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).

   Fundamental concepts
       groff is a programming system for typesetting: we thus often use the
       verb “to set” in the sense “to typeset”.  The formatter troff(1)
       collects words from the input and fills output lines with as many as
       will fit.  Words are separated by spaces and newlines.  A transition to
       a new output line is called a break.  When formatted, a word may be
       broken at hyphens, at \% or \: escape sequences (see subsection
       “Portability” below), or at predetermined locations if automatic
       hyphenation is enabled (see the -rHY option in section “Options”
       below).  An output line may be supplemented with inter-sentence space,
       and then optionally adjusted with more space to a consistent line
       length (see the -dAD option).  roff(7) details these processes.

       An input line that starts with a dot (.) or neutral apostrophe (') is a
       control line.  To call a macro, put its name after a dot on a control
       line.  We refer to macros in this document using this leading dot.
       Some macros interpret arguments, words that follow the macro name.  A
       newline, unless escaped (see subsection “Portability” below), marks the
       end of the macro call.  An input line consisting of a dot followed by a
       newline is called the empty request; it does nothing.  Text lines are
       input lines that are not control lines.

       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 that follow the advice in section
       “Portability” below, this means that control lines using the empty
       request and uncommented input lines ending with an escaped newline do
       not spring the trap; anything else does (but see the .TP macro
       description).

   Macro reference preliminaries
       A tagged paragraph describes each macro.  We present coupled pairs
       together, as with .EX and .EE.

       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 will be formatted as text in the output;
       exceptions are noted.

   Document structure macros
       Document structure macros organize a man page's content.  All of them
       break the output line.  .TH (title heading) identifies the document as
       a man page and configures the page headers and footers.  Section
       headings (.SH), one of which is mandatory and many of which are
       conventionally expected, facilitate location of 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, use .RS/.RE to inset a region within a (sub)section.

       .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 man(1) or intro(1) for the manual sectioning
              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 an 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 would overrun the
              space available in the header and footer, respectively.  For
              HTML output, headers and footers are suppressed.

              Additionally, this macro breaks the page, resetting the number
              to 1 (unless the -rC1 option is given).  This feature is
              intended only for formatting multiple man documents in sequence.

              A valid man document calls .TH once, early in the file, prior to
              any other macro calls.

              By convention, footer-middle is the date of the most recent
              modification to 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.  The left margin is reset to zero to set the
              heading text in bold (or the font specified by the string HF),
              and, on typesetting 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,
              setting the left margin to the value of the IN register.  Text
              after heading-text is set as an ordinary paragraph (.P).

              The content of heading-text and ordering of sections follows a
              set of common practices, 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 text of the form
                     topic[, another-topic]... \- summary-description
              for a man page to be properly indexed.  See man(7) 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).  If no argument
              is given, a one-line input trap is planted; text on the next
              line becomes subheading-text.  The left margin is reset to the
              value of the SN register to set the heading text 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, setting the left margin to the value of the
              IN register.  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 dummy character escape sequence \& before the
              spaces.

              These macros are extensions introduced in Ninth Edition Research
              Unix.  Systems running that troff, or those from Documenter's
              Workbench, 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 [inset-amount]
              Start a new relative inset level.  The position of the left
              margin is saved, then moved right by inset-amount, if specified,
              and by the amount of the IN register otherwise.  Calls to .RS
              can be nested; each increments by 1 the inset level used by .RE.
              The level prior to any .RS calls is 1.

       .RE [level]
              End a relative inset.  The left margin corresponding to inset
              level level is restored.  If no argument is given, the inset
              level is reduced by 1.

   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 of these macros break the output line.
       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.  The tag can be
              extended with the \c escape sequence.  Subsequent text is
              indented by indentation, if specified, and by the amount of the
              IN register otherwise.  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 one.

       .TQ    Set an additional tag for a paragraph tagged with .TP.  An 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
       .SY and .YS aid you to construct a command synopsis that has the
       classical Unix appearance.  They break the output line.

       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.
              Adjustment and automatic hyphenation are 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.  Indentation, adjustment, and hyphenation are
              restored to their previous states.

       Multiple .SY/.YS blocks can be specified, for instance to distinguish
       differing modes of operation of a complex command like tar(1); each
       will be vertically separated as paragraphs are.

       .SY can be repeated before .YS 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;
         see subsection “Portability” below.

       • 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 dummy character 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 ls(1) are best presented with .MR.  Text
       may be hyperlinked to email addresses with .MT/.ME or other URIs 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 grotty(1)).  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.  The formatter
       removes \: escape sequences from hyperlinks when supplying device
       control commands to 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
       typesetting 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 typesetting 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 variant (user-replaceable) 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 variant text
              in a context already typeset in italics, such as file or path
              names with replaceable 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 variant part (see .IR
              and .RI below), and italics again in running roman text when
              referring to the variant material.

       .SM [text]
              Set text one point smaller than the default type size on
              typesetting 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 typesetting 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.
              This macro is an extension introduced in SunOS 4.0.

              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.

       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.  See subsection “Portability” below for approaches.

       .BI bold-text italic-text ...
              Set each argument in bold and italics, alternately.

                     .BI -r  register = numeric-expression

       .BR bold-text roman-text ...
              Set each argument in bold and roman, alternately.

                     After
                     .B .NH
                     is called,

       .IB italic-text bold-text ...
              Set each argument in italics and bold, alternately.

                     In places where
                     .IB n th
                     is allowed,

       .IR italic-text roman-text ...
              Set each argument in italics and roman, alternately.

                     Use GNU
                     .IR pic 's
                     .B figname
                     command to change the name of the vbox.

       .RB roman-text bold-text ...
              Set each argument in roman and bold, alternately.

                     if
                     .I file
                     is
                     .RB \[lq] \- \[rq],
                     the standard input stream is read.

       .RI roman-text italic-text ...
              Set each argument in roman and italics, alternately.

                     .RI ( tpic
                     was a fork of AT&T
                     .I pic
                     by Tim Morgan of the University of California at Irvine

   Horizontal and vertical spacing
       The indentation argument accepted by .IP, .TP, and the deprecated .HP
       is a number plus an optional scaling unit, as is .RS's inset-amount.
       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 “Measurements” in groff(7)).  An indentation specified in a
       call to .IP, .TP, or the deprecated .HP persists until (1) another of
       these macros is called with an indentation argument, or (2) .SH, .SS,
       or .P or its synonyms is called; these clear the indentation entirely.

       The left margin used by ordinary paragraphs set with .P (and its
       synonyms) not within an .RS/.RE relative inset is 7.2n for typesetting
       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 page offset (see groff(7)) and subsection headings (.SS)
       indented from it by 3n (but see the -rSN option).

       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 tbl(1) can likely meet your needs.

       Several macros 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
       typesetting 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.)  Between .EX and .EE calls, the inter-
       paragraph spacing is 1v regardless of output device.

   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 man(7) 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, .MR, and .SB)
       should be used with caution, as they may not 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 hyphenation breaks within except those specified
              with \%.

       \:     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.

       \&     Dummy character.  Insert at the beginning of an input line to
              prevent a dot or apostrophe from being interpreted as beginning
              a roff control line.  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 typesetting
              devices like dvi, pdf, and ps.

       \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).  \c is useful when three font styles
              are needed in a single word, as in a command synopsis.

                     .RB [ \-\-stylesheet=\c
                     .IR name ]

              It also helps when changing font styles in .EX/.EE examples,
              since they are not filled.

                     .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.  Except for \-,
       \(em, and \(ga, AT&T troff did not consistently define the characters
       listed below, but its descendants, like Plan 9 or Solaris troff, can be
       made to support them by defining them in font description files, making
       them aliases of existing glyphs if necessary; see groff_font(5).

       \-     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 format “'”
              as 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 format “`” as a
              left single quotation mark.

       \(ha   Basic Latin circumflex accent (“hat”).  Some output devices
              format “^” as 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 above.

       \(ti   Basic Latin tilde.  Some output devices format “~” as 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”).

       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 tbl(1) 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 non-roff-based man page interpreters may treat .HP as an
              ordinary paragraph.  Thus, information or distinctions you mean
              to express with 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
       M. Douglas McIlroy <m.douglas.mcilroy@dartmouth.edu> designed,
       implemented, and documented the AT&T man macros for Unix Version 7
       (1979) and employed them to edit the first volume of its Programmer's
       Manual, a compilation of all man pages supplied by the system.  That
       man supported the macros listed in this page not described as
       extensions, except .P and the deprecated .AT and .UC.  The only strings
       defined were R and S; no registers were documented.

       .UC appeared in 3BSD (1980).  Unix System III (1980) introduced .P and
       exposed the registers IN and LL, which had been internal to Seventh
       Edition Unix man.  PWB/UNIX 2.0 (1980) added the Tm string.  4BSD
       (1980) added lq and rq strings.  SunOS 2.0 (1985) recognized C, D, P,
       and X registers.  4.3BSD (1986) added .AT and .P.  Ninth Edition
       Research Unix (1986) introduced .EX and .EE.  SunOS 4.0 (1988) added
       .SB.

       The foregoing features were what James Clark implemented in early
       versions of groff.  Later, groff 1.20 (2009) originated .SY/.YS, .TQ,
       .MT/.ME, and .UR/.UE.  Plan 9 from User Space's troff introduced .MR in
       2020.

Options
       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 groff(7) 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
              on terminal devices; on HTML devices, it cannot be disabled.

       -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 one half-
              inch above this location, 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 groff(7).

       -rHY=0 Disable automatic hyphenation.  Normally, it is enabled (1).
              The hyphenation mode is determined by the groff locale; see
              section “Localization“ of groff(7).

       -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 typesetting 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   Number successors of page p as pa, pb, pc, and so forth.  The
              register tracking the suffixed page letter uses format “a” (see
              the “.af” request in groff(7)).  For example, the option -rX2
              produces the following page numbers: 1, 2, 2a, 2b, ..., 2aa,
              2ab, and so on.

Files
       /opt/homebrew/Cellar/groff/1.23.0_1/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).

       /opt/homebrew/Cellar/groff/1.23.0_1/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.

       /opt/homebrew/Cellar/groff/1.23.0_1/share/groff/1.23.0/tmac/an-ext.tmac
              Except for .SB, definitions of macros described above as
              extensions 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”.  We encourage man page
              authors who are concerned about portability to legacy Unix
              systems to copy these definitions into their pages, and
              maintainers of troff implementations or work-alike systems that
              format man pages 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
              makewhatis or mandb implementations that may give up their scan
              for indexing material early.

       /opt/homebrew/Cellar/groff/1.23.0_1/share/groff/1.23.0/tmac/man.tmac
              This is a wrapper that loads an.tmac.

       /opt/homebrew/Cellar/groff/1.23.0_1/share/groff/1.23.0/tmac/mandoc.tmac
              This is a wrapper that loads andoc.tmac.

       /opt/homebrew/etc/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.  Place the requests below at the
              end of the site-local file to manifest courtesy.
                     .soquiet \V[XDG_CONFIG_HOME]/man.local
                     .soquiet \V[HOME]/.man.local
              However, a security-sandboxed man(1) program may lack permission
              to open such files.

Notes
       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 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 dummy
              character 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 dummy character \&, would then need to be suffixed with
              the latter 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; on terminals, they may crowd the
              dots into a half-width 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.

Authors
       The initial GNU implementation of the man macro package was written by
       James Clark.  Later, Werner Lemberg <wl@gnu.org> supplied the S, LT,
       and cR registers, the last a 4.3BSD-Reno mdoc(7) feature.  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.  Except for .SB, 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.

See also
       tbl(1), eqn(1), and refer(1) are preprocessors used with man pages.
       man(1) describes the man page librarian on your system.  groff_mdoc(7)
       details the groff version of the BSD-originated alternative macro
       package for man pages.

       groff_man(7), groff(7), groff_char(7), man(7)

groff 1.23.0                      5 July 2023               groff_man_style(7)