Provided by: groff_1.23.0-3build2_amd64 bug

Name

       groff_ms - GNU roff manuscript macro package for formatting documents

Synopsis

       groff -ms [option ...] [file ...]
       groff -m ms [option ...] [file ...]

Description

       The  GNU  implementation of the ms macro package is part of the groff document formatting system.  The ms
       package is suitable for the composition of letters, memoranda, reports, and books.

       These groff macros support cover page and table of contents generation, automatically numbered  headings,
       several  paragraph  styles,  a variety of text styling options, footnotes, and multi-column page layouts.
       ms supports the tbl(1), eqn(1), pic(1), and refer(1) preprocessors for inclusion of tables,  mathematical
       equations, diagrams, and standardized bibliographic citations.

       This  implementation  is  mostly  compatible  with  the  documented  interface  and behavior of AT&T Unix
       Version 7 ms.  Many extensions  from  4.2BSD  (Berkeley)  and  Tenth  Edition  Research  Unix  have  been
       recreated.

Usage

       The  ms macro package expects a certain amount of structure: a well-formed document contains at least one
       paragraphing or heading macro call.  To compose a simple document from scratch, begin it by  calling  .LP
       or .PP.  Longer documents have a structure as follows.

       Document type
              Calling  the  RP macro at the beginning of your document puts the document description (see below)
              on a cover page.  Otherwise, ms places this information on the first page, followed immediately by
              the body text.  Some document types found in other ms implementations  are  specific  to  AT&T  or
              Berkeley, and are not supported in groff ms.

       Format and layout
              By  setting  registers  and strings, you can configure your document's typeface, margins, spacing,
              headers and footers, and footnote arrangement.  See subsection “Document control settings” below.

       Document description
              A document description consists of any of: a title, one or  more  authors'  names  and  affiliated
              institutions,  an  abstract, and a date or other identifier.  See subsection “Document description
              macros” below.

       Body text
              The main matter of your document follows its description (if any).  ms supports highly  structured
              text  consisting  of  paragraphs  interspersed  with  multi-level  headings  (chapters,  sections,
              subsections, and so forth) and augmented  by  lists,  footnotes,  tables,  diagrams,  and  similar
              material.  The preponderance of subsections below covers these matters.

       Table of contents
              Macros  enable  the  collection of entries for a table of contents (or index) as the material they
              discuss appears in the document.  You then call a macro to emit the table of contents at  the  end
              of  your  document.   The table of contents must necessarily follow the rest of the text since GNU
              troff is a single-pass formatter; it thus cannot determine the page number of a  division  of  the
              text  until  it  has been set and output.  Since ms output was designed for the production of hard
              copy, the traditional procedure was to  manually  relocate  the  pages  containing  the  table  of
              contents between the cover page and the body text.  Today, page resequencing is more often done in
              the  digital  domain.  An index works similarly, but because it typically needs to be sorted after
              collection, its preparation requires separate processing.

   Document control settings
       The following tables list the document control registers,  strings,  and  special  characters.   For  any
       parameter whose default is unsatisfactory, define it before calling any ms macro other than RP.

                                                    Margin settings
       Parameter                             Definition                                Effective       Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[PO]      Page offset (left margin)                                         next page        1i (0)
       \n[LL]      Line length                                                       next paragraph   6.5i (65n)
       \n[LT]      Title line length                                                 next paragraph   6.5i (65n)
       \n[HM]      Top (header) margin                                               next page        1i
       \n[FM]      Bottom (footer) margin                                            next page        1i
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

                                               Titles (headers, footers)
       Parameter                                Definition                                  Effective    Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \*[LH]      Left header text                                                        next header   empty
       \*[CH]      Center header text                                                      next header   -\n[%]-
       \*[RH]      Right header text                                                       next header   empty
       \*[LF]      Left footer text                                                        next footer   empty
       \*[CF]      Center footer text                                                      next footer   empty
       \*[RF]      Right footer text                                                       next footer   empty
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

                                                     Text settings
       Parameter                               Definition                                 Effective      Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[PS]      Point size                                                           next paragraph   10p
       \n[VS]      Vertical spacing (leading)                                           next paragraph   12p
       \n[HY]      Hyphenation mode                                                     next paragraph   6
       \*[FAM]     Font family                                                          next paragraph   T
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

                                                  Paragraph settings
        Parameter                              Definition                               Effective       Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[PI]        Indentation                                                      next paragraph   5n
       \n[PD]        Paragraph distance (spacing)                                     next paragraph   0.3v (1v)
       \n[QI]        Quotation indentation                                            next paragraph   5n
       \n[PORPHANS]  # of initial lines kept                                          next paragraph   1
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

                                                   Heading settings
        Parameter                               Definition                              Effective      Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[PSINCR]     Point size increment                                             next heading   1p
       \n[GROWPS]     Size increase depth limit                                        next heading   0
       \n[HORPHANS]   # of following lines kept                                        next heading   1
       \*[SN-STYLE]   Numbering style (alias)                                          next heading   \*[SN-DOT]
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

       \*[SN-STYLE] can alternatively be made an alias of \*[SN-NO-DOT] with the als request.

                                                   Footnote settings
       Parameter                              Definition                                Effective      Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[FI]      Indentation                                                        next footnote   2n
       \n[FF]      Format                                                             next footnote   0
       \n[FPS]     Point size                                                         next footnote   \n[PS]-2p
       \n[FVS]     Vertical spacing (leading)                                         next footnote   \n[FPS]+2p
       \n[FPD]     Paragraph distance (spacing)                                       next footnote   \n[PD]/2
       \*[FR]      Line length ratio                                                  special         11/12
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

                                                   Display settings
       Parameter                                Definition                                 Effective    Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[DD]      Display distance (spacing)                                              special     0.5v (1v)
       \n[DI]      Display indentation                                                     special     0.5i
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

                                                    Other settings
         Parameter                                Definition                               Effective     Default
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────
       \n[MINGW]       Minimum gutter width                                               next page      2n
       \n[TC-MARGIN]   TOC page number margin width                                       next PX call   \w'000'
       \[TC-LEADER]    TOC leader character                                               next PX call   .\h'1m'
       ──────────────────────────────────────────────────────────────────────────────────────────────────────────

       For  entries  marked  “special”  in  the “Effective” column, see the discussion in the applicable section
       below.  The PO, LL, and LT register defaults vary by output device and paper format; the values shown are
       for typesetters using U.S. letter paper, and then terminals.  See section  “Paper  format”  of  groff(1).
       The  PD  and DD registers use the larger value if the vertical motion quantum of the output device is too
       coarse for the smaller one; usually, this is the case only for output to terminals and emulators thereof.
       The “gutter” affected by \n[MINGW] is the gap between columns in multiple-column page arrangements.   The
       TC-MARGIN  register and TC-LEADER special character affect the formatting of tables of contents assembled
       by the XS, XA, and XE macros.

   Document description macros
       Define information describing the document by calling the macros below in the order shown; .DA or .ND can
       be called to set the document date (or other identifier) at any time before (a) the abstract, if present,
       or (b) its information is required in a header or footer.  Use of these macros is optional,  except  that
       .TL is mandatory if any of .RP, .AU, .AI, or .AB is called, and .AE is mandatory if .AB is called.

       .RP [no-repeat-info] [no-renumber]
              Use  the  “report”  (AT&T:  “released  paper”) format for your document, creating a separate cover
              page.  The default arrangement is to place most of the document description (title,  author  names
              and  institutions,  and abstract, but not the date) at the top of the first page.  If the optional
              no-repeat-info argument is given, ms produces a  cover  page  but  does  not  repeat  any  of  its
              information  on  subsequently (but see the DA macro below regarding the date).  Normally, .RP sets
              the page number following the cover page to  1.   Specifying  the  optional  no-renumber  argument
              suppresses  this  alteration.  Optional arguments can occur in any order.  “no” is recognized as a
              synonym of no-repeat-info for AT&T compatibility.

       .TL    Specify the document title.  ms collects text on input lines following this call  into  the  title
              until reaching .AU, .AB, or a heading or paragraphing macro call.

       .AU    Specify  an  author's name.  ms collects text on input lines following this call into the author's
              name until reaching .AI, .AB, another .AU, or a heading  or  paragraphing  macro  call.   Call  it
              repeatedly to specify multiple authors.

       .AI    Specify  the  preceding author's institution.  An .AU call is usefully followed by at most one .AI
              call; if there are more, the last .AI call controls.  ms collects text on  input  lines  following
              this  call  into  the  author's  institution until reaching .AU, .AB, or a heading or paragraphing
              macro call.

       .DA [x ...]
              Typeset the current date, or any arguments x, in the center footer, and, if .RP  is  also  called,
              left-aligned at the end of the document description on the cover page.

       .ND [x ...]
              Typeset  the  current  date, or any arguments x, if .RP is also called, left-aligned at the end of
              the document description on the cover page.  This is groff ms's default.

       .AB [no]
              Begin the abstract.  ms collects text on input lines following this call into the  abstract  until
              reaching an .AE call.  By default, ms places the word “ABSTRACT” centered and in italics above the
              text of the abstract.  The optional argument “no” suppresses this heading.

       .AE    End the abstract.

   Text settings
       The  FAM  string, a GNU extension, sets the font family for body text; the default is “T”.  The PS and VS
       registers set the type size and vertical spacing (distance between text  baselines),  respectively.   The
       font  family  and  type  size are ignored on terminal devices.  Setting these parameters before the first
       call of a heading, paragraphing, or (non-date) document description macro also applies them  to  headers,
       footers, and (for FAM) footnotes.

       The  HY register defines the automatic hyphenation mode used with the hy request.  Setting \n[HY] to 0 is
       equivalent to using the nh request.  This is a Tenth Edition Research Unix extension.

   Typographical symbols
       ms provides a few strings to obtain typographical symbols not easily entered with  the  keyboard.   These
       and many others are available as special character escape sequences—see groff_char(7).

       \*[-]  Interpolate an em dash.

       \*[Q]
       \*[U]  Interpolate  typographer's  quotation  marks where available, and neutral double quotes otherwise.
              \*[Q] is the left quote and \*[U] the right.

   Paragraphs
       Paragraphing macros break, or terminate, any pending output line so  that  a  new  paragraph  can  begin.
       Several  paragraph  types are available, differing in how indentation applies to them: to left, right, or
       both margins; to the first output line of the paragraph, all output lines, or all  but  the  first.   All
       paragraphing  macro  calls cause the insertion of vertical space in the amount stored in the PD register,
       except at page or column breaks, or adjacent to displays.

       The PORPHANS register defines the minimum number of initial lines of any  paragraph  that  must  be  kept
       together  to  avoid  isolated  lines at the bottom of a page.  If a new paragraph is started close to the
       bottom of a page, and there is insufficient space to accommodate \n[PORPHANS] lines before  an  automatic
       page break, then a page break is forced before the start of the paragraph.  This is a GNU extension.

       .LP    Set a paragraph without any (additional) indentation.

       .PP    Set a paragraph with a first-line left indentation in the amount stored in the PI register.

       .IP [marker [width]]
              Set  a  paragraph  with  a  left indentation.  The optional marker is not indented and is empty by
              default.  width overrides the indentation amount  in  \n[PI];  its  default  unit  is  “n”.   Once
              specified,  width  applies  to  further  .IP calls until specified again or a heading or different
              paragraphing macro is called.

       .QP    Set a paragraph indented from both left and right margins by \n[QI].

       .QS
       .QE    Begin (QS) and end (QE) a region where each paragraph is indented from  both  margins  by  \n[QI].
              The text between .QS and .QE can be structured further by use of other paragraphing macros.

       .XP    Set  an  “exdented” paragraph—one with a left indentation of \n[PI] on every line except the first
              (also known as a hanging indent).  This is a Berkeley extension.

   Headings
       Use headings to create a hierarchical structure for your document.  The ms macros print headings in  bold
       using  the same font family and, by default, type size as the body text.  Headings are available with and
       without automatic numbering.  Text on input lines following the macro call becomes the  heading's  title.
       Call a paragraphing macro to end the heading text and start the section's content.

       .NH [depth]
              Set  an  automatically  numbered heading.  ms produces a numbered heading in the form a.b.c..., to
              any level desired, with the numbering of each depth increasing automatically and  being  reset  to
              zero when a more significant depth is increased.  “1” is the most significant or coarsest division
              of  the document.  Only non-zero values are output.  If depth is omitted, it is taken to be 1.  If
              you specify depth such that an ascending gap occurs relative to the previous NH call—that is,  you
              “skip  a  depth”,  as  by “.NH 1” and then “.NH 3”, groff ms emits a warning on the standard error
              stream.

       .NH S heading-depth-index ...
              Alternatively, you can give NH a first argument of “S”, followed by integers to number the heading
              depths explicitly.  Further automatic numbering, if used, resumes using the specified  indices  as
              their predecessors.  This feature is a Berkeley extension.

       After  .NH  is  called,  the  assigned number is made available in the strings SN-DOT (as it appears in a
       printed heading with default formatting, followed by  a  terminating  period)  and  SN-NO-DOT  (with  the
       terminating period omitted).  These are GNU extensions.

       You can control the style used to print numbered headings by defining an appropriate alias for the string
       SN-STYLE.   By  default,  \*[SN-STYLE]  is  aliased to \*[SN-DOT].  If you prefer to omit the terminating
       period from numbers appearing in numbered headings, you may alias it to \*[SN-NO-DOT].  Any  such  change
       in  numbering  style  becomes  effective from the next use of .NH following redefinition of the alias for
       \*[SN-STYLE].  The formatted number of the current heading  is  available  in  \*[SN]  (a  feature  first
       documented  by Berkeley); this string facilitates its inclusion in, for example, table captions, equation
       labels, and .XS/.XA/.XE table of contents entries.

       .SH [depth]
              Set an unnumbered heading.  The optional depth argument is a GNU extension indicating the  heading
              depth  corresponding  to the depth argument of .NH.  It matches the type size at which the heading
              is set to that of a numbered heading at the same depth when the \n[GROWPS] and \n[PSINCR]  heading
              size adjustment mechanism is in effect.

       The  PSINCR  register defines an increment in type size to be applied to a heading at a lesser depth than
       that specified in \n[GROWPS].  The value of \n[PSINCR] should be specified in points with the “p” scaling
       unit and may include a fractional component.

       The GROWPS register defines the heading depth above which the  type  size  increment  set  by  \n[PSINCR]
       becomes  effective.  For each heading depth less than the value of \n[GROWPS], the type size is increased
       by \n[PSINCR].  Setting \n[GROWPS] to a value less than 2 disables the incremental heading size feature.

       In other words, if the value of GROWPS register is greater than the depth argument to a .NH or .SH  call,
       the  type size of a heading produced by these macros increases by \n[PSINCR] units over \n[PS] multiplied
       by the difference of \n[GROWPS] and depth.

       The \n[HORPHANS] register operates in conjunction with the NH and SH macros to inhibit  the  printing  of
       isolated  headings  at  the  bottom of a page; it specifies the minimum number of lines of the subsequent
       paragraph that must be kept on the same page as the  heading.   If  insufficient  space  remains  on  the
       current  page  to  accommodate  the  heading  and this number of lines of paragraph text, a page break is
       forced before the heading is printed.  Any display macro call or tbl, pic,  or  eqn  region  between  the
       heading and the subsequent paragraph suppresses this grouping.

   Typeface and decoration
       The  ms  macros  provide  a  variety  of ways to style text.  Attend closely to the ordering of arguments
       labeled pre and post, which is not intuitive.  Support for pre arguments is a GNU extension.

       .B [text [post [pre]]]
              Style text in bold, followed by post in the previous font style  without  intervening  space,  and
              preceded  by  pre  similarly.  Without arguments, ms styles subsequent text in bold until the next
              paragraphing, heading, or no-argument typeface macro call.

       .R [text [post [pre]]]
              As .B, but use the roman style  (upright  text  of  normal  weight)  instead  of  bold.   Argument
              recognition is a GNU extension.

       .I [text [post [pre]]]
              As .B, but use an italic or oblique style instead of bold.

       .BI [text [post [pre]]]
              As  .B,  but  use  a  bold  italic or bold oblique style instead of upright bold.  This is a Tenth
              Edition Research Unix extension.

       .CW [text [post [pre]]]
              As .B, but use a constant-width (monospaced) roman typeface instead of  bold.   This  is  a  Tenth
              Edition Research Unix extension.

       .BX [text]
              Typeset  text  and  draw a box around it.  On terminal devices, reverse video is used instead.  If
              you want text to contain space, use unbreakable space or horizontal motion escape  sequences  (\~,
              \space, \^, \|, \0, or \h).

       .UL [text [post]]
              Typeset text with an underline.  post, if present, is set after text with no intervening space.

       .LG    Set  subsequent  text  in  larger type (2 points larger than the current size) until the next type
              size, paragraphing, or heading macro call.  You can specify this macro multiple times  to  enlarge
              the type size as needed.

       .SM    Set  subsequent  text in smaller type (2 points smaller than the current size) until the next type
              size, paragraphing, or heading macro call.  You can specify this macro multiple  times  to  reduce
              the type size as needed.

       .NL    Set subsequent text at the normal type size (\n[PS]).

       When  pre  is  used, a hyphenation control escape sequence \% that would ordinarily start text must start
       pre instead.

       groff ms also offers strings to begin and end super- and subscripting.  These are GNU extensions.

       \*{
       \*}    Begin and end superscripting, respectively.

       \*<
       \*>    Begin and end subscripting, respectively.

   Indented regions
       You may need to indent a region of text while otherwise formatting it normally.  Indented regions can  be
       nested.

       .RS    Begin a region where headings, paragraphs, and displays are indented (further) by \n[PI].

       .RE    End the (next) most recent indented region.

   Keeps, boxed keeps, and displays
       On  occasion, you may want to keep several lines of text, or a region of a document, together on a single
       page, preventing an automatic page break within certain boundaries.  This can cause a page break to occur
       earlier than it normally would.

       You can alternatively specify a floating keep: if a keep cannot fit on the current  page,  ms  holds  its
       contents  and  allows  text  following  the keep (in the source document) to fill in the remainder of the
       current page.  When the page breaks, whether by reaching the end or bp request, ms puts the floating keep
       at the beginning of the next page.

       .KS    Begin a keep.

       .KF    Begin a floating keep.

       .KE    End (floating) keep.

       As an alternative to the keep mechanism, the ne request forces a page break if there is not at least  the
       amount of vertical space specified in its argument remaining on the page.

       A boxed keep has a frame drawn around it.

       .B1    Begin a keep with a box drawn around it.

       .B2    End boxed keep.

       Boxed  keep  macros  cause breaks; if you need to box a word or phrase within a line, see the BX macro in
       section “Highlighting” above.  Box lines are drawn as close as possible to the text they enclose so  that
       they  are usable within paragraphs.  If you wish to place one or more paragraphs in a boxed keep, you may
       improve their appearance by calling .B1 after the first paragraphing macro, and by adding a small  amount
       of vertical space before calling .B2.

       If  you  want  a boxed keep to float, you will need to enclose the .B1 and .B2 calls within a pair of .KF
       and .KE calls.

       Displays turn off filling; lines of verse or program code are shown with their lines  broken  as  in  the
       source  document  without  requiring br requests between lines.  Displays can be kept on a single page or
       allowed to break across pages.  The DS macro begins a kept display of the layout specified in  its  first
       argument; non-kept displays are begun with dedicated macros corresponding to their layout.

       .DS L
       .LD    Begin (DS: kept) left-aligned display.

       .DS [I [indent]]
       .ID [indent]
              Begin (DS: kept) display indented by indent if specified, \n[DI] otherwise.

       .DS B
       .BD    Begin  (DS:  kept)  block  display: the entire display is left-aligned, but indented such that the
              longest line in the display is centered on the page.

       .DS C
       .CD    Begin (DS: kept) centered display: each line in the display is centered.

       .DS R
       .RD    Begin (DS: kept) right-aligned display.  This is a GNU extension.

       .DE    End any display.

       The distance stored in \n[DD] is inserted before and after  each  pair  of  display  macros;  this  is  a
       Berkeley  extension.   In  groff  ms,  this  distance  replaces  any adjacent inter-paragraph distance or
       subsequent spacing prior to a section heading.  The DI register is a  GNU  extension;  its  value  is  an
       indentation  applied  to  displays  created  with  .DS  and  .ID without arguments, to “.DS I” without an
       indentation argument, and to equations set with “.EQ I”.  Changes to either register take effect  at  the
       next display boundary.

   Tables, figures, equations, and references
       The  ms  package  is  often used with the tbl, pic, eqn, and refer preprocessors.  The \n[DD] distance is
       also applied to regions of the document preprocessed with  eqn,  pic,  and  tbl.   Mark  text  meant  for
       preprocessors  by  enclosing it in pairs of tokens as follows, with nothing between the dot and the macro
       name.  The preprocessors match these tokens only at the start of an input line.

       .TS [H]
       .TE    Demarcate a table to be processed by the tbl preprocessor.  The optional H argument  instructs  ms
              to  repeat  table  rows  (often  column  headings) at the top of each new page the table spans, if
              applicable; calling the TH macro marks the end of such  rows.   tbl(1)  provides  a  comprehensive
              reference to the preprocessor and offers examples of its use.

       .PS
       .PE
       .PF    .PS  begins  a  picture to be processed by the pic preprocessor; either of .PE or .PF ends it, the
              latter with “flyback” to the vertical position at its top.

       .EQ [align [label]]
       .EN    Demarcate an equation to be processed by the  eqn  preprocessor.   The  equation  is  centered  by
              default;  align  can  be  C,  L,  or I to (explicitly) center, left-align, or indent it by \n[DI],
              respectively.  If specified, label is set right-aligned.

       .[
       .]     Demarcate a bibliographic citation to be processed by the refer preprocessor.  refer(1) provides a
              comprehensive reference to the preprocessor and the format of its bibliographic database.

       When refer emits collected references (as might be done on a “Works Cited”  page),  it  interpolates  the
       string \*[REFERENCES] as an unnumbered heading (.SH).

       Attempting  to place a multi-page table inside a keep can lead to unpleasant results, particularly if the
       tblallbox” option is used.

   Footnotes
       A footnote is typically anchored to a place in the text with a  marker,  which  is  a  small  integer,  a
       symbol, or arbitrary user-specified text.

       \**    Place  an automatic number, an automatically generated numeric footnote marker, in the text.  Each
              time this string is interpolated, the number it produces increments  by  one.   Automatic  numbers
              start at 1.  This is a Berkeley extension.

       Enclose  the footnote text in FS and FE macro calls to set it at the nearest available “foot”, or bottom,
       of a text column or page.

       .FS [marker]
              Begin a footnote.  The .FS-MARK hook (see below) is called  with  any  supplied  marker  argument,
              which  is  then also placed at the beginning of the footnote text.  If marker is omitted, the next
              pending automatic number enqueued by interpolation of the * string is used, and  if  none  exists,
              nothing is prefixed.

       .FE    End footnote text.

       groff ms provides a hook macro, FS-MARK, for user-determined operations to be performed when the FS macro
       is  called.   It  is  passed  the  same  arguments  as  .FS  itself.  By default, this macro has an empty
       definition.  .FS-MARK is a GNU extension.

       Footnote text is formatted as paragraphs are, using analogous parameters.  The registers  FI,  FPD,  FPS,
       and FVS correspond to PI, PD, PS, and VS, respectively; FPD, FPS, and FVS are GNU extensions.

       The  FF  register  controls  the  formatting of automatically numbered footnote paragraphs, and those for
       which .FS is given a marker argument, at the bottom of a column or page as follows.

              0      Set an automatic number, or a specified FS marker argument, as a superscript (on typesetter
                     devices) or surrounded by square  brackets  (on  terminals).   The  footnote  paragraph  is
                     indented  as  with  .PP if there is an .FS argument or an automatic number, and as with .LP
                     otherwise.  This is the default.

              1      As 0, but set the marker as regular text, and follow an automatic number with a period.

              2      As 1, but without indentation (like .LP).

              3      As 1, but set the footnote paragraph with the marker hanging (like .IP).

   Language and localization
       groff ms provides several strings that you can customize for your own purposes, or redefine to adapt  the
       macro  package  to  languages  other  than  English.   It is already localized for Czech, German, French,
       Italian, and Swedish.  Load the desired localization macro package after ms; see groff_tmac(5).

                  String            Default
              ───────────────────────────────────
              \*[REFERENCES]   References
              \*[ABSTRACT]     \f[I]ABSTRACT\f[]
              \*[TOC]          Table of Contents
              \*[MONTH1]       January
              \*[MONTH2]       February
              \*[MONTH3]       March
              \*[MONTH4]       April
              \*[MONTH5]       May
              \*[MONTH6]       June
              \*[MONTH7]       July
              \*[MONTH8]       August
              \*[MONTH9]       September
              \*[MONTH10]      October
              \*[MONTH11]      November
              \*[MONTH12]      December
              ───────────────────────────────────
       The default for ABSTRACT includes font selection escape sequences to set the word in italics.

   Headers and footers
       There are multiple ways to produce headers and footers.  One is to define the strings LH, CH, and  RH  to
       set  the  left,  center, and right headers, respectively; and LF, CF, and RF to set the left, center, and
       right footers.  This approach suffices for documents that  do  not  distinguish  odd-  and  even-numbered
       pages.

       Another  method is to call macros that set headers or footers for odd- or even-numbered pages.  Each such
       macro takes a delimited argument separating the left, center, and right header or footer texts from  each
       other.   You  can replace the neutral apostrophes (') shown below with any character not appearing in the
       header or footer text.  These macros are Berkeley extensions.

       .OH 'left'center'right'
       .OF 'left'center'right'
       .EH 'left'center'right'
       .EF 'left'center'right'
              The  OH  and  EH  macros  define  headers  for  odd-  (recto)  and  even-numbered  (verso)  pages,
              respectively; the OF and EF macros define footers for them.

       With either method, a percent sign % in header or footer text is replaced by the current page number.  By
       default, ms places no header on a page numbered “1” (regardless of its number format).

       .P1    Typeset  the  header even on page 1.  To be effective, this macro must be called before the header
              trap is sprung on any page numbered “1”.  This is a Berkeley extension.

       For even greater flexibility, ms permits redefinition of the macros  called  when  the  page  header  and
       footer  traps  are  sprung.   PT  (“page  trap”) is called by ms when the header is to be written, and BT
       (“bottom trap”) when the footer is to be.  The groff page location trap that ms sets  up  to  format  the
       header  also calls the (normally undefined) HD macro after .PT; you can define .HD if you need additional
       processing after setting the header.  The  HD  hook  is  a  Berkeley  extension.   Any  such  macros  you
       (re)define must implement any desired specialization for odd-, even-, or first numbered pages.

   Tab stops
       Use the ta request to set tab stops as needed.

       .TA    Reset  the  tab  stops to the ms default (every 5 ens).  Redefine this macro to create a different
              set of default tab stops.

   Margins
       Control margins using the registers summarized in the “Margins” portion of the table in section “Document
       control settings” above.  There is no setting for the right margin; the combination of page offset \n[PO]
       and line length \n[LL] determines it.

   Multiple columns
       ms can set text in as many columns as reasonably fit on the page.  The  following  macros  force  a  page
       break  if  a multi-column layout is active when they are called.  \n[MINGW] is the default minimum gutter
       width; it is a GNU extension.  When multiple columns are in use, keeps  and  the  HORPHANS  and  PORPHANS
       registers work with respect to column breaks instead of page breaks.

       .1C    Arrange page text in a single column (the default).

       .2C    Arrange page text in two columns.

       .MC [column-width [gutter-width]]
              Arrange  page  text  in multiple columns.  If you specify no arguments, it is equivalent to the 2C
              macro.  Otherwise, column-width is the width of  each  column  and  gutter-width  is  the  minimum
              distance between columns.

   Creating a table of contents
       Define  an entry to appear in the table of contents by bracketing its text between calls to the XS and XE
       macros.  A typical application is to call them immediately after NH or SH and  repeat  the  heading  text
       within  them.   The  XA  macro,  used  within  .XS/.XE  pairs, supplements an entry—for instance, when it
       requires multiple output lines, whether because a heading is too long to fit or  because  style  dictates
       that  page  numbers  not  be repeated.  You may wish to indent the text thus wrapped to correspond to its
       heading depth; this can be done in the entry text by prefixing it with tabs or horizontal  motion  escape
       sequences,  or  by  providing a second argument to the XA macro.  .XS and .XA automatically associate the
       page number where they are called with the text following them, but they  accept  arguments  to  override
       this  behavior.   At the end of the document, call TC or PX to emit the table of contents; .TC resets the
       page number to i (Roman numeral one), and then calls PX.  All of these macros are Berkeley extensions.

       .XS [page-number]
       .XA [page-number [indentation]]
       .XE    Begin, supplement, and end a table of contents entry.  Each entry is associated  with  page-number
              (otherwise  the current page number); a page-number of “no” prevents a leader and page number from
              being emitted for that entry.  Use of .XA within .XS/.XE is optional;  it  can  be  repeated.   If
              indentation  is  present,  a  supplemental entry is indented by that amount; ens are assumed if no
              unit is indicated.  Text on input lines between .XS and .XE is stored for later recall by .PX.

       .PX [no]
              Switch to single-column layout.  Unless “no” is specified, center and interpolate \*[TOC] in  bold
              and two points larger than the body text.  Emit the table of contents entries.

       .TC [no]
              Set  the page number to 1, the page number format to lowercase Roman numerals, and call PX (with a
              “no” argument, if present).

       The remaining features in this subsection are GNU extensions.  groff  ms  obviates  the  need  to  repeat
       heading  text after .XS calls.  Call .XN and .XH after .NH and .SH, respectively.  Text to be appended to
       the formatted section heading, but not to appear in the table of contents entry, can follow these calls.

       .XN heading-text
              Format heading-text and create a  corresponding  table  of  contents  entry;  the  indentation  is
              computed from the depth argument of the preceding NH call.

       .XH depth heading-text
              As .XN, but use depth to determine the indentation.

       groff  ms  encourages  customization  of  table  of  contents  entry  production.  (Re-)define any of the
       following macros as desired.

       .XN-REPLACEMENT heading-text
       .XH-REPLACEMENT depth heading-text
              These hook macros implement .XN and .XH, and call XN-INIT and  XH-INIT,  respectively,  then  call
              XH-UPDATE-TOC with the arguments given them.

       .XH-INIT
       .XN-INIT
              These hook macros do nothing by default.

       .XH-UPDATE-TOC depth heading-text
              Bracket  heading-text  with  XS  and XE calls, indenting it by 2 ens per level of depth beyond the
              first.

       You can customize the style of the leader that bridges each table of contents entry with its page number;
       define the TC-LEADER special character by using the char request.  A  typical  leader  combines  the  dot
       glyph  “.”  with  a  horizontal  motion escape sequence to spread the dots.  The width of the page number
       field is stored in the TC-MARGIN register.

Differences from AT&T ms
       The groff ms macros are an independent reimplementation, using no AT&T code.  Since they  take  advantage
       of  the  extended  features  of  groff,  they cannot be used with AT&T troff.  groff ms supports features
       described above as Berkeley and Tenth Edition Research Unix extensions, and adds several of its own.

       •  The internals of groff ms  differ  from  the  internals  of  AT&T  ms.   Documents  that  depend  upon
          implementation  details of AT&T ms may not format properly with groff ms.  Such details include macros
          whose function was not documented in the AT&T ms manual (“Typing Documents on the UNIX  System:  Using
          the -ms Macros with Troff and Nroff”, M. E. Lesk, Bell Laboratories, 1978).

       •  The  error-handling  policy  of  groff  ms  is to detect and report errors, rather than to ignore them
          silently.

       •  Tenth Edition Research Unix supported P1/P2 macros to bracket code examples; groff ms does not.

       •  groff ms does not work in GNU troff's AT&T compatibility mode.  If loaded when that mode  is  enabled,
          it aborts processing with a diagnostic message.

       •  Multiple line spacing is not supported.  Use a larger vertical spacing instead.

       •  groff  ms  uses  the  same header and footer defaults in both nroff and troff modes as AT&T ms does in
          troff mode; AT&T's default in nroff mode is to  put  the  date,  in  U.S.  traditional  format  (e.g.,
          “January 1, 2021”), in the center footer (the CF string).

       •  Many  groff  ms  macros,  including  those  for  paragraphs,  headings, and displays, cause a reset of
          paragraph rendering parameters, and may change the indentation; they do  so  not  by  incrementing  or
          decrementing  it,  but  by  setting  it absolutely.  This can cause problems for documents that define
          additional macros of their own that try to manipulate indentation.  Use .RS and .RE instead of the  in
          request.

       •  AT&T  ms  interpreted  the values of the registers PS and VS in points, and did not support the use of
          scaling units with them.  groff ms interprets values of the registers PS, VS, FPS, and FVS,  equal  to
          or  larger  than  1,000 (one thousand) as decimal fractions multiplied by 1,000.  (Register values are
          converted to and stored as basic units.   See  “Measurements”  in  the  groff  Texinfo  manual  or  in
          groff(7)).   This  threshold  makes  use  of  a scaling unit with these parameters practical for high-
          resolution devices while preserving backward  compatibility.   It  also  permits  expression  of  non-
          integral  type  sizes.   For  example, “groff -rPS=10.5p” at the shell prompt is equivalent to placing
          “.nr PS 10.5p” at the beginning of the document.

       •  AT&T ms's AU macro supported arguments used with some document types; groff ms does not.

       •  Right-aligned displays are available.  The AT&T ms manual observes that “it is tempting to assume that
          “.DS R” will right adjust lines, but it doesn't work”.  In groff ms, it does.

       •  To make groff ms use the default page offset (which also specifies the left margin), the  PO  register
          must  stay  undefined until the first ms macro is called.  This implies that \n[PO] should not be used
          early in the document, unless it is  changed  also:  accessing  an  undefined  register  automatically
          defines it.

       •  groff  ms  supports  the  PN register, but it is not necessary; you can access the page number via the
          usual % register and invoke the af request to assign a different format to it  if  desired.   (If  you
          redefine the ms PT macro and desire special treatment of certain page numbers—like “1”—you may need to
          handle  a  non-Arabic page number format, as groff ms's .PT does; see the macro package source.  groff
          ms aliases the PN register to %.)

       •  The AT&T ms manual documents registers CW and GW as setting the default column width and  “intercolumn
          gap”,  respectively,  and  which  applied when .MC was called with fewer than two arguments.  groff ms
          instead treats .MC without arguments as synonymous with .2C; there is thus no occasion for  a  default
          column  width  register.  Further, the MINGW register and the second argument to .MC specify a minimum
          space between columns, not the fixed gutter width of AT&T ms.

       •  The AT&T ms manual did not document the QI register; Berkeley and groff ms do.

       •  The register GS is set to 1 by the groff ms macros, but is not used by the AT&T ms package.  Documents
          that need to determine whether they are being formatted with groff ms or another implementation should
          test this register.

   Unix Version 7 macros not implemented by groff ms
       Several macros described in the Unix Version 7 ms documentation are unimplemented  by  groff  ms  because
       they  are  specific  to  the  requirements of documents produced internally by Bell Laboratories, some of
       which also require a glyph for  the  Bell  System  logo  that  groff  does  not  support.   These  macros
       implemented  several  document type formats (EG, IM, MF, MR, TM, TR), were meaningful only in conjunction
       with the use of certain document types (AT, CS, CT, OK, SG), stored the postal  addresses  of  Bell  Labs
       sites (HO, IH, MH, PY, WH), or lacked a stable definition over time (UX).

Legacy features

       groff  ms retains some legacy features solely to support formatting of historical documents; contemporary
       ones should not use them because they can render poorly.  See groff_char(7) instead.

   AT&T ms accent mark strings
       AT&T ms defined accent mark strings as follows.

       String   Description
       ──────────────────────────────────────────────────────
       \*[']    Apply acute accent to subsequent glyph.
       \*[`]    Apply grave accent to subsequent glyph.
       \*[:]    Apply dieresis (umlaut) to subsequent glyph.
       \*[^]    Apply circumflex accent to subsequent glyph.
       \*[~]    Apply tilde accent to subsequent glyph.
       \*[C]    Apply caron to subsequent glyph.
       \*[,]    Apply cedilla to subsequent glyph.

   Berkeley ms accent mark and glyph strings
       Berkeley ms offered an AM macro; calling it redefined the AT&T accent  mark  strings  (except  for  \*C),
       applied them to the preceding glyph, and defined additional strings, some for spacing glyphs.

       .AM    Enable alternative accent mark and glyph-producing strings.

       String   Description
       ───────────────────────────────────────────────────────────────
       \*[']    Apply acute accent to preceding glyph.
       \*[`]    Apply grave accent to preceding glyph.
       \*[:]    Apply dieresis (umlaut) to preceding glyph.
       \*[^]    Apply circumflex accent to preceding glyph.
       \*[~]    Apply tilde accent to preceding glyph.
       \*[,]    Apply cedilla to preceding glyph.
       \*[/]    Apply stroke (slash) to preceding glyph.
       \*[v]    Apply caron to preceding glyph.
       \*[_]    Apply macron to preceding glyph.
       \*[.]    Apply underdot to preceding glyph.
       \*[o]    Apply ring accent to preceding glyph.
       ───────────────────────────────────────────────────────────────
       \*[?]    Interpolate inverted question mark.
       \*[!]    Interpolate inverted exclamation mark.
       \*[8]    Interpolate small letter sharp s.
       \*[q]    Interpolate small letter o with hook accent (ogonek).
       \*[3]    Interpolate small letter yogh.
       \*[d-]   Interpolate small letter eth.
       \*[D-]   Interpolate capital letter eth.
       \*[th]   Interpolate small letter thorn.
       \*[TH]   Interpolate capital letter thorn.
       \*[ae]   Interpolate small ae ligature.
       \*[AE]   Interpolate capital ae ligature.
       \*[oe]   Interpolate small oe ligature.
       \*[OE]   Interpolate capital oe ligature.

Naming conventions

       The following conventions are used for names of macros, strings, and registers.  External names available
       to documents that use the groff ms macros contain only uppercase letters and digits.

       Internally, the macros are divided into modules.  Conventions for identifier names are as follows.

       •  Names used only within one module are of the form module*name.

       •  Names used outside the module in which they are defined are of the form module@name.

       •  Names  associated  with a particular environment are of the form environment:name; these are used only
          within the par module.

       •  name does not have a module prefix.

       •  Constructed names used to implement arrays are of the form array!index.

       Thus the groff ms macros reserve the following names:

       •  Names containing the characters *, @, and :.

       •  Names containing only uppercase letters and digits.

Files

       /usr/share/groff/1.23.0/tmac/s.tmac
              implements the package.

       /usr/share/groff/1.23.0/tmac/refer-ms.tmac
              implements refer(1) support for ms.

       /usr/share/groff/1.23.0/tmac/ms.tmac
              is a wrapper enabling the package to be loaded with “groff -m ms”.

Authors

       The GNU version of the ms macro package was written by James Clark and contributors.  This  document  was
       written by Clark, Larry Kollar, and G. Branden Robinson.

See also

       A manual is available in source and rendered form.  On your system, it may be compressed and/or available
       in additional formats.

       /usr/share/doc/groff-base/ms.ms
       /usr/share/doc/groff-base/ms.ps
              “Using groff with the ms Macro Package”; Larry Kollar and G. Branden Robinson.

       /usr/share/doc/groff-base/msboxes.ms
       /usr/share/doc/groff-base/msboxes.pdf
              “Using  PDF  boxes  with  groff  and  the ms macros”; Deri James.  BOXSTART and BOXSTOP macros are
              available via the sboxes extension package, enabling colored, bordered boxes when the  pdf  output
              device is used.

       Groff:  The  GNU  Implementation  of  troff,  by Trent A. Fisher and Werner Lemberg, is the primary groff
       manual.  You can browse it interactively with “info groff”.

       groff(1), troff(1), tbl(1), pic(1), eqn(1), refer(1)

groff 1.23.0                                      31 March 2024                                      groff_ms(7)