# groff_mm

## Name



           groff_mm - memorandum macros for GNU _roff_
    


## Synopsis



           **groff -mm**[_option_ ...] [_file_ ...]
    
           **groff -m mm**[_option_ ...] [_file_ ...]
    


## Description



           The GNU implementation of the _mm_ macro package is part of the
           _groff_ document formatting system.  The _mm_ package is suitable for
           the composition of letters, memoranda, reports, and books.
    
           Call an _mm_ macro at the beginning of a document to initialize the
           package.  A simple _mm_ document might use only **P** for paragraphing.
           Set numbered and unnumbered section headings with **H** and **HU** ,
           respectively.  Change the style of the typeface with **B** , **I** , and **R** ;
           you can alternate styles within a word with **BI** , **BR** , **IB** , **IR** , **RB** ,
           and **RI**.  Several nestable list types are available via **AL** , **BL** ,
           **BVL** , **DL** , **ML** , **RL** , and **VL** ; each of these begins a list, to which **LI**
           adds an item and **LE** ends the (nested) list.  **LB** begins a list with
           customizable layout parameters.  **DS** and **DF** start static and
           floating displays, respectively; either is terminated with **DE**.
    
           _groff mm_ is intended to be compatible with the _mm_ implementation
           found in the AT&T Documenter's Workbench (DWB) 3.3, with the
           following limitations and changes.
    
           •  Omitted features include the logo and company name strings, **}Z**
              and **]S** , respectively; the encoded company site location
              addresses recognized as the third argument to the **AU** macro; the
              **Pv**(“private” heading) register; and the **OK**(other keywords)
              and **PM**(proprietary markings) macros.
    
           •  The **CS**(output cover sheet) macro is implemented only for
              memorandum type 4.
    
           •  The _grap_ preprocessor is not explicitly supported; _groff mm_
              defines no **G1** or **G2** macros.
    
           •  Registers **A** , **C** , **T** , and **U** , set from the _troff_ or _nroff_ command
              lines with DWB _mm_ , are not recognized.
    
           •  When setting the registers **L** or **W** from the command line, use an
              explicit scaling unit to avoid surprises.
    
           •  The **Li** register configures the text indentation of **RL** list
              items; DWB used a hard-coded value of 6 ens.
    
           •  _groff mm_ uses the same adjustment and font defaults in _nroff_
              and _troff_ modes.
    
           •  Cut marks are not supported.
    
           DWB _mm_ supported only seven levels of heading.  As a compatible
           extension, _groff mm_ supports fourteen, introducing new registers
           **H8** through **H14** , and affecting the interpretation of the **HF** and **HP**
           strings.
    
           _groff mm_ features a new citation system that permits a
           bibliographic reference list to be sorted, an alternative to
           **RS** /**RE** /**RP**.  See the **INITR** macro description below and the _mmroff_(1)
           man page.
    
           Macro, register, and string descriptions in this page frequently
           mention each other; most cross references are to macros.  Where a
           register or string is referenced, its type is explicitly
           identified.  _mm_ 's macro names are usually in full capitals;
           registers and strings tend to have mixed-case names.
    
           Except where noted, _mm_ assumes that horizontal measurements are
           reckoned in ens (scaling unit **n**) and vertical ones in vees
           (scaling unit **v**).  Use explicit scaling units for clarity and
           predictable behavior.
    
       **Document styles**
           _groff mm_ offers three frameworks for document organization.
           **COVER** /**COVEND** is a flexible means of preparing any document
           requiring a cover page.  **LT** /**LO** aids preparation of typical
           Anglophone correspondence (business letters, for example).  The **MT**
           memorandum type mechanism implements a group of formal styles
           historically used by AT&T Bell Laboratories.  Your document can
           select at most one of these approaches; when used, each disables
           the others.
    
       **Localization**
           _groff mm_ is designed to be easily localized.  For languages other
           than English, strings that can appear in output are collected in
           the file _/usr/local/share/groff/1.23.0/tmac/_ xx _.tmac_ , where _xx_ is
           an ISO 639 two-letter language identifier.  Localization packages
           should be loaded after _mm_ ; for example, you might format a Swedish
           _mm_ document with the command “**groff -mm -msv** ”.
    
           This package can also be localized by site or territory; for
           example, _/usr/local/share/groff/1.23.0/tmac/mse.tmac_ illustrates
           how to adapt the output to a national standard using its ISO 3166
           territory code.  Such a package can define a string that causes a
           macro file _/usr/local/share/groff/1.23.0/tmac/mm/_ territory __locale_
           to be loaded at package initialization.  If this mechanism is not
           used, _/usr/local/share/groff/1.23.0/tmac/mm/locale_ is loaded
           instead.  No diagnostic is produced if these files do not exist.
    
       **Registers and strings**
           Much _mm_ behavior can be configured by registers and strings.  The
           **nr** request assigns a value to a register.
    
                  **.nr** _ident_ [**±**]_n_ [_i_]
    
           _ident_ is the name of the register, and _n_ is the value to be
           assigned.  Prefixing _n_ with a plus or minus sign increments or
           decrements (respectively) its existing value.  If assignment of a
           (possibly) negative _n_ is required, further prefix it with a zero
           or enclose it in parentheses.  If _i_ is specified, the register's
           value automatically changes by _i_ prior to interpolation if a plus
           or minus sign is included in the escape sequence as follows.
    
                  **\n**[**±**]**[**_ident_**]**
    
           _i_ can be negative; it combines algebraically with the sign in the
           interpolation escape sequence.
    
           Many of the registers _mm_ provides are as Boolean-valued, meaning
           that they are considered “true” (on, enabled) when they have a
           positive value, and “false” (off, disabled) otherwise.
    
           Define strings with the **ds** request.
    
                  **.ds** _ident contents_
    
           _contents_ consumes everything up to the end of the line, including
           trailing spaces.  It is a good practice to end _contents_ with a
           comment escape sequence (**\"**) so that extraneous spaces do not
           intrude during document maintenance.  To include leading spaces in
           _contents_ , prefix it with a double quote.  Interpolate strings with
           the **\*** escape sequence.
    
                  **\*[**_ident_**]**
    
           Register and string name spaces are distinct, but strings and
           macros share a name space.  Defining a string with the same name
           as an _mm_ macro is not supported and may cause incorrect rendering,
           the emission of diagnostic messages, and an error exit status from
           _troff_.
    
       **Register format**
           A register is interpolated using Arabic numerals if no other
           format has been assigned to it.  Assign a format to a register
           with the **af** request.
    
                  **.af** _R c_
    
           _R_ is the name of the register, and _c_ is the format.  If _c_ is a
           sequence of Arabic numerals, their quantity defines a zero-padded
           minimum width for the interpolated register value.
    
                  **Form   Sequence**
                  1      0, 1, 2, 3, ..., 10, ...
                  001    000, 001, 002, 003, ..., 1000, ...
                  i      0, i, ii, iii, iv, ...
                  I      0, I, II, III, IV, ...
                  a      0, a, b, c, ..., z, aa, ab, ...
                  A      0, A, B, C, ..., Z, AA, AB, ...
    
       **Fonts**
           _mm_ assumes that the font styles **R**(roman), **I**(italic), and
           **B**(bold) are mounted at font positions **1** , **2** , and **3** , respectively.
           Use the **fp** request to mount substitute fonts at these positions as
           desired.  The default font family is Times.  Select a different
           one by invoking _groff_ 's **fam** request or using its **-f** command-line
           option.
    


## Macros



           Double-quote macro arguments that contain space characters.  An
           explicitly empty argument may be specified with an empty pair of
           double quotes; for example, the following macro call has three
           arguments.
    
                  .XX "foo bar" "" baz
    
           Some macros are documented as causing a page break; this does not
           occur if such a macro is called when the drawing position is
           already at the top of a page (after a page heading, if any).
    
           _Hook_ macros are undefined by default; _mm_ calls them to enable
           customization of its behavior.  (DWB _mm_ termed these “exits”.)
    
           Macro names longer than two characters are GNU extensions; some
           shorter names were not part of DWB _mm_ 's published interface but
           are documented aspects of _groff mm._
    
           **)E** _level text_
                  Add heading text _text_ to the table of contents with _level_ ,
                  which is either 0 or in the range 1 to 7.  See also **H**.
                  This undocumented DWB _mm_ macro is exposed by _groff mm_ to
                  enable customized tables of contents.
    
           **1C**[**1**] Format page text in one column.  The page is broken.  A **1**
                  argument suppresses this break; its use may cause body text
                  and a pending footnote to overprint.  See **2C** , **MC** , and **NCOL**.
    
           **2C** Begin two-column formatting.  This is a special case of **MC**.
                  See **1C** and **NCOL**.
    
           **AE** Abstract end; stop collecting abstract text.  See **AS**.
    
           **AF**[_org-name_]
                  Specify a memorandum's organizational affiliation.  At most
                  one can be declared; _org-name_ is used by memorandum types
                  and available to cover sheets.  See **MT** and **COVER**.
    
           **AFX** Define this hook macro to assume responsibility for
                  formatting the affiliated firm name defined by **AF** in
                  memorandum types 0 and 4 and documents using the _ms_ cover
                  page style.  If not defined (the default), internally
                  defined macros handle this task; see sections “Internals”
                  and “Files” below.  Applications include setting the firm
                  name in a different font family or at a larger type size,
                  drawing a rule across the page, and including a logo image
                  using _groff_ 's **PDFPIC** or **PSPIC** macros.  See **MT** , **COVER** , and
                  _groff_tmac_(5).
    
           **AL**[_number-format_ [_text-indent_ [**1**]]]
                  Begin an auto-incrementing numbered list, where item
                  numbers start at one and are followed by a dot.  _number-_
                  _format_ assigns the register format (see above) _mm_ uses for
                  the list item enumerators.  The default is **0**.  A _text-_
                  _indent_ argument overrides register **Li**.  A third argument
                  suppresses the vertical space that normally precedes each
                  list item; see register **Lsp**.  Vertical space in the amount
                  of **Lsp** precedes the list itself, but does not accumulate
                  with pre-item space when this list is nested in another.
                  Use **LI** to declare list items, and **LE** to end the list.
    
           **APP**[_sequence-number_ [_title_]]
                  Begin an appendix.  If _sequence-number_ is omitted, it
                  increments (or is initialized to **1** , if necessary).  The
                  register format used for _sequence-number_ is “A”.  The page
                  is broken.  The register **Aph** determines whether an appendix
                  heading is then formatted.  This heading uses the string
                  **App** followed by _sequence-number_.  Appendices appear in any
                  table of contents (see **TC**).  The string **Apptxt** is set to
                  _title_ if the latter is present, and made empty otherwise.
    
           **APPSK** _sequence-number n_ [_title_]
                  As **APP** , but increment the page number by _n_.  Use this macro
                  to “skip pages” when diagrams or other materials not
                  formatted by _troff_ are included in appendices.
    
           **AS**[_placement_ [_indentation_]]
                  Abstract start; begin collecting abstract.  Input up to the
                  next **AE** call is included in the abstract.  _placement_
                  influences the location of the abstract on the cover sheet
                  of a memorandum (see **MT**).  **COVER** , by contrast, ignores
                  _placement_ by default, but can be customized to interpret
                  it.
    
                  [1mplacement[24m   Effect
                  0           The abstract appears on page 1 and cover sheet
                              if the document is a “released paper”
                              memorandum (“**.MT 4** ”); otherwise, it appears on
                              page 1 without a cover sheet.
                  1           The abstract appears only on the cover sheet
                              (“**.MT 4** ” only).
    
                  An abstract does not appear at all in external letters
                  (“**.MT 5** ”).  A _placement_ of **2** was supported by DWB _mm_ but is
                  not by _groff mm_.
    
                  A second argument increases the indentation by _indentation_
                  and reduces the line length by twice this amount.  The
                  default is **0**.
    
           **AT** _title_ ...
                  Specify author's title(s).  If present, **AT** must appear just
                  after the corresponding author's **AU**.  Each _title_ occupies
                  an output line beneath the author's name in the signature
                  block used by **LT** letters (see **SG**) and in **MT** memoranda.  The
                  _ms_ cover sheet style also formats these data.
    
           **AU**[_name_ [_initials_ [_loc_ [_dept_ [_ext_ [_room_ [_arg1_ [_arg2_ [_arg3_]]]]]]]]]
                  Specify author.  **AU** terminates a document title started
                  with **TL** , and can be called without arguments for that
                  purpose.  Author information is used by cover sheets, **MT**
                  memoranda, and **SG**.  Further arguments comprise initials,
                  location, department, telephone extension, room number or
                  name, and up to three additional items.  Repeat **AU** to
                  identify multiple authors.
    
                  Use **WA** /**WE** instead to identify the author for documents
                  employing **LT**.
    
           **AV**[_name_ [**1**]]
                  Format approval lines for a handwritten signature and date.
                  Two horizontal rules are drawn, with the specified _name_ and
                  the text of the string **Letdate** , respectively, beneath them.
                  Above these rules, _mm_ formats the text in the string
                  **Letapp** ; a second argument replaces this text with one vee
                  of vertical space.  See **LT**.
    
           **AVL**[_name_]
                  As **AV** , but omitting the approval notation (the **Letapp**
                  string), the date rule, and the label below the date rule
                  (the **Letdate** string).
    
           **B**[_bold-text_ [_previous-font-text_]] ...
                  Join _bold-text_ in boldface with _previous-font-text_ in the
                  previous font, without space between the arguments.  If no
                  arguments, switch font to bold style.
    
           **B1** Begin boxed static display.  The text is indented by **1n** ,
                  and the line length reduced by **2n**.  See **DS**.  This is a GNU
                  extension.
    
           **B2** End boxed static display.  See **B1**.  This is a GNU
                  extension.
    
           **BE** End bottom block; see **BS**.
    
           **BI**[_bold-text_ [_italic-text_]] ...
                  Join _bold-text_ in boldface with _italic-text_ in italics,
                  without space between the arguments.
    
           **BL**[_text-indent_ [**1**]]
                  Begin bulleted list.  _mm_ marks each item with the string
                  **BU**.  A _text-indent_ argument overrides register **Pi**.  A
                  second argument suppresses the vertical space that normally
                  precedes each list item; see register **Lsp**.  Vertical space
                  in the amount of **Lsp** precedes the list itself, but does not
                  accumulate with pre-item space when this list is nested in
                  another.  Use **LI** to declare list items, and **LE** to end the
                  list.
    
           **BR**[_bold-text_ [_roman-text_]] ...
                  Join _bold-text_ in boldface with _roman-text_ in roman style,
                  without space between the arguments.
    
           **BS** Begin bottom block.  Input is collected until **BE** is called,
                  and output between the footnote area and footer of each
                  page.
    
           **BVL**[_text-indent_ [_mark-indent_ [**1**]]]
                  Begin broken variable-item (or “tagged”) list.  Each item
                  should supply its own mark.  The line is always broken
                  after the mark; contrast **VL**.  A _text-indent_ argument
                  overrides register **Pi** ; _mark-indent_ sets the distance from
                  the indentation of the current list to the mark.  A third
                  argument suppresses the vertical space that normally
                  precedes each list item; see register **Lsp**.  Vertical space
                  in the amount of **Lsp** precedes the list itself, but does not
                  accumulate with pre-item space when this list is nested in
                  another.  Use **LI** to declare list items, and **LE** to end the
                  list.
    
           **COVER**[_style_]
                  Begin a cover page description.  **COVER** must appear before
                  the body text (or main matter) of a document.  The argument
                  _style_ is used to construct the file name _/usr/local/share/_
                  _groff/1.23.0/tmac/mm/_ style _.cov_ and load it with the **mso**
                  request.  The default _style_ is “**ms** ”; the _ms.cov_ file
                  prepares a cover page resembling that of the _ms_ package.  A
                  _.cov_ file must define a **COVEND** macro, which a document must
                  call at the end of the cover description.  Use cover
                  description macros in the following order; only **TL** and **AU**
                  are required.
    
                  .COVER
                  .AF
                  .TL
                  .AU
                  .AT
                  .AS
                  .AE
                  .COVEND
    
           **COVEND** End the cover description.
    
           **DE** End static or floating display begun with **DS** or **DF**.
    
           **DF**[_format_ [_fill_ [_right-indentation_]]]
                  Begin floating display.  A floating display is saved in a
                  queue and output in the order entered.  Arguments are
                  handled as in **DS**.  Floating displays cannot be nested.
                  Placement of floating displays is controlled by the
                  registers **De** and **Df**.
    
           **DL**[_text-indent_ [**1**]]
                  Begin dashed list.  _mm_ marks each item with the string **EM**.
                  A _text-indent_ argument overrides register **Pi**.  A second
                  argument suppresses the vertical space that normally
                  precedes each list item; see register **Lsp**.  Vertical space
                  in the amount of **Lsp** precedes the list itself, but does not
                  accumulate with pre-item space when this list is nested in
                  another.  Use **LI** to declare list items, and **LE** to end the
                  list.
    
           **DS**[_format_ [_fill_ [_right-indentation_]]]
                  Begin static display.  Input until **DE** is called is
                  collected into a display.  The display is output on a
                  single page unless it is taller than the height of the
                  page.  **DS** can be nested (contrast with **DF**).
    
                  [1mformat[24m   Effect
                  _none_     Do not indent the display.
                  L        Do not indent the display.
                  I        Indent text by **\n[Si]**.
                  C        Center each line.
                  CB       Center the whole display as a block.
                  R        Right-align each line.
                  RB       Right-align the whole display as a block.
    
                  The values “L”, “I”, “C”, and “CB” can also be specified as
                  “0”, “1”, “2”, and “3”, respectively, for compatibility
                  with DWB _mm._
    
                  [1mfill[24m   Effect
                  _none_   Disable filling.
                  N      Disable filling.
                  F      Enable filling.
    
                  “N” and “F” can also be specified as “0” and “1”,
                  respectively, for compatibility with DWB _mm._
    
                  A third argument reduces the line length by _right-_
                  _indentation._
    
                  _mm_ normally places vertical space before and after the
                  display.  Set register **Ds** to “0” to suppress it.
    
           **EC**[_title_ [_override_ [_flag_ [_ref-name_]]]]
                  Caption an equation.  A caption comprises the string **Capec**
                  followed by an automatically incrementing counter stored in
                  the register **Ec** , punctuation configured by the register **Of** ,
                  then _title_ (if any).  Use the **af** request to configure **Ec** 's
                  number format.  _override_ and _flag_ alter the equation number
                  as follows.  Omitting _flag_ and specifying **0** in its place
                  are equivalent.
    
                  [1mflag[24m   Effect
                  0      Prefix number with _override_.
                  1      Suffix number with _override_.
                  2      Replace number with _override_.
    
                  Equation captions are centered irrespective of the
                  alignment of any enclosing display.
    
                  Specifying _ref-name_ stores the equation number as if by
                  “**.SETR** _ref-name_ **\n[Ec]** ”.  Recognition of this argument is a
                  GNU extension.
    
                  Captioned equations are listed in a table of contents (see
                  **TC**) if the Boolean register **Le** is true.  The string **Le**
                  captions this list.
    
           **EF**[**"'**_left_**'**_center_**'**_right_**'"**]
                  Define the even-page footer, which is formatted just above
                  the normal page footer on even-numbered pages.  See **PF**.  **EF**
                  defines the string **EOPef**.
    
           **EH**[**"'**_left_**'**_center_**'**_right_**'"**]
                  Define the even-page header, which is formatted just below
                  the normal page header on even-numbered pages.  See **PH**.  **EH**
                  defines the string **TPeh**.
    
           **EN** End mathematical expression input preprocessed by _eqn_(1);
                  see **EQ**.
    
           **EOP** If defined, this macro is called in lieu of normal page
                  footer layout.  Headers and footers are formatted in a
                  separate environment.  See **TP**.
    
                  **Strings available to EOP**
                  ─────────────────────────
                  **EOPf** argument to **PF**
                  **EOPef** argument to **EF**
                  **EOPof** argument to **OF**
    
           **EPIC**[**-L**] _width height_ [_name_]
                  Draw a box with the given _width_ and _height_.  The text _name_
                  (or default text) is formatted inside the box; no attempt
                  is made to size the box to fit the text.  An application of
                  this macro is to indicate the placement of an image to be
                  determined later, or externally composited in
                  postprocessing.  **-L** as the first argument left-aligns the
                  box; the default is to center it.  See **PIC**.
    
           **EQ**[_label_]
                  Start mathematical expression input preprocessed by _eqn_(1).
                  **EQ** and **EN** macro calls bracket an equation region.  Such
                  regions must be contained in displays (**DS** /**DE**), except when
                  the region is used only to configure _eqn_ and not to produce
                  output.  If present, _label_ appears aligned to the right and
                  centered vertically within the display; see register **Eq**.
                  If multiple _eqn_ regions occur within a display, only the
                  last _label_ (if any) is used.
    
           **EX**[_title_ [_override_ [_flag_ [_ref-name_]]]]
                  Caption an exhibit.  Arguments are handled analogously to
                  **EC**.  The register **Ex** is the exhibit counter.  The string
                  **Capex** precedes the exhibit number and any _title._  Exhibit
                  captions are centered irrespective of the alignment of any
                  enclosing display.
    
                  Captioned exhibits are listed in a table of contents (see
                  **TC**) if the Boolean register **Lx** is true.  The string **Lx**
                  captions this list.
    
           **FC**[_closing-text_]
                  Output the string **Letfc** , or the specified _closing-text,_ as
                  the formal closing of a letter or memorandum.  See **LT** and
                  **MT**.
    
           **FD**[_arg_ [**1**]]
                  Configure display of footnotes.  The first argument encodes
                  enablement of automatic hyphenation, adjustment to both
                  margins, indentation of footnote text, and left- vs. right-
                  alignment of the footnote label within the space allocated
                  for it.
    
                  [1marg[24m   Hyphenate?   Adjust?   Indent?   Label alignment
                  0     no           yes       yes       left
                  1     yes          yes       yes       left
                  2     no           no        yes       left
                  3     yes          no        yes       left
                  4     no           yes       no        left
                  5     yes          yes       no        left
                  6     no           no        no        left
                  7     yes          no        no        left
                  8     no           yes       yes       right
                  9     yes          yes       yes       right
                  10    no           no        yes       right
                  11    yes          no        yes       right
    
                  An _arg_ greater than 11 is treated as **0**.  _mm_ 's default is **0**.
    
                  A second argument resets footnote numbering when a first-
                  level heading is encountered.  See **FS**.
    
           **FE** End footnote; see **FS**.
    
           **FG**[_title_ [_override_ [_flag_ [_ref-name_]]]]
                  Caption a figure.  Arguments are handled analogously to **EC**.
                  The register **Fg** is the figure counter.  The string **Capfg**
                  precedes the figure number and any _title._  Figure captions
                  are centered irrespective of the alignment of any enclosing
                  display.
    
                  Captioned figures are listed in a table of contents (see
                  **TC**) if the Boolean register **Lf** is true.  The string **Lf**
                  captions this list.
    
           **FS**[_label_]
                  Start footnote.  Input until **FE** is called is collected into
                  a footnote.  By default, footnotes are automatically
                  numbered starting at 1; the number is available in register
                  **:p** and, with a trailing period, in string **F**.  This string
                  precedes the footnote text at the bottom of the column or
                  page.  Footnotes are vertically separated by the product of
                  registers **Fs** and **Lsp**.  In _groff mm_ , footnotes may be used
                  in displays.
    
                  A _label_ argument replaces the contents of the string **F** ; it
                  need not be numeric.  In this event, the footnote marker in
                  the body text must be explicitly written.
    
           **GETHN** _ref-name_ [_string_]
                  Interpolate _ref-name_ 's heading mark, or, if _string_ is
                  specified, store it there.  See **INITR**.
    
           **GETPN** _ref-name_ [_string_]
                  Interpolate _ref-name_ 's page number, or, if _string_ is
                  specified, store it there.  See **INITR**.
    
           **GETR** _ref-name_
                  Retrieve location data for reference _ref-name_ , call **GETHN**
                  and **GETPN** to populate strings **Qrfh** and **Qrfn** , respectively,
                  and interpolate string **Qrf** as a cross reference to it.  See
                  **INITR**.
    
           **GETST** _ref-name_ [_string_]
                  Interpolate _ref-name_ 's auxiliary reference datum, or, if
                  _string_ is specified, store it there.  See **INITR**.
    
           **H** _level_ [_title_ [_suffix_]]
                  Set a numbered section heading at _level_.  _mm_ produces
                  numbered _heading marks_ of the form _a_._b_._c_..., with up to
                  fourteen levels of nesting.  Each level's number increments
                  automatically with each **H** call and is reset to zero when a
                  more significant _level_ is specified.  “**1** ” is the most
                  significant or coarsest division of the document.  Text
                  after an **H** call is formatted as a paragraph; calling **P** is
                  unnecessary.
    
                  The optional _title_ must be double-quoted if it contains
                  spaces.  _mm_ appends _suffix_ to _title_ in the body of the
                  document, but omits it from any table of contents (see **TC**).
                  This facility can be used to annotate the heading title
                  with a footnote.  _suffix_ should not interpolate the **F**
                  string; specify a footnote mark explicitly.  See **FS**.
    
                  Heading behavior is configurable.  Several registers set
                  _thresholds,_ where heading levels at or below a threshold
                  value are handled in one way, and those above it another.
                  For example, _mm_ populates a table of contents (see **TC**) with
                  the title of a heading if its level is within the **Cl**
                  register threshold.
    
                  _Heading layout._  Register **Ej** sets a threshold for page
                  breaking (ejection) prior to a heading.  If not preceded by
                  a page break, a heading level within the threshold in
                  register **Hps** is preceded by the amount of vertical space in
                  register **Hps1** , and by the amount in **Hps2** otherwise.  The **Hb**
                  register sets a threshold at which a break occurs after the
                  heading, and register **Hs** sets a threshold within which
                  vertical space follows it.  If the heading level is above
                  both of these, and the paragraph is not numbered, _mm_
                  produces a _run-in heading_ ; paragraph text follows on the
                  same output line.  Otherwise, register **Hi** configures the
                  indentation of text after headings.  Threshold register **Hc**
                  permits centering; _mm_ centers a heading with a level within
                  both of the **Hb** and **Hc** thresholds.
    
                  _Heading typeface and size._  The fonts used for heading
                  marks and titles at each level are configured by the **HF**
                  string.  The string **HP** likewise assigns a type size to each
                  heading level.  The vertical spacing used by headings may
                  be controlled by the user-definable macros **HX** and/or **HZ**.
    
                  _Heading number format._  Registers named **H1** through **H14**
                  store counters for each heading level.  Their values are
                  printed using Arabic numerals by default; see **HM**.  The
                  heading levels are catenated with dots for formatting; to
                  typeset only the deepest, set the **Ht** register.  Heading
                  numbers are not suffixed with a trailing dot except when
                  only the first level is output; to omit a dot in this case
                  as well, clear the **H1dot** register.
    
                  _Customizing heading behavior._  **H** calls **HX** , **HY** , and **HZ** hook
                  macros to further customize headings.  These can change the
                  heading's _mark_ (the numbered portion before any heading
                  title), its vertical spacing, and its vertical space
                  requirements (for instance, to require a minimum quantity
                  of subsequent output lines on the page, breaking the page
                  otherwise).  Define hook macros in expectation of the
                  following parameters.  The argument _declared-level_ is the
                  _level_ argument to **H** , or **0** for unnumbered headings (see **HU**).
                  _actual-level_ is the same as _declared-level_ for numbered
                  headings, and the value of register **Hu** for unnumbered
                  headings.  _title-suffix_ is the catenation of the
                  corresponding arguments to **H** or **HU**.
    
                  **HX** _declared-level actual-level title-suffix_
                         _mm_ calls **HX** before setting the heading.  Your
                         definition may alter **}0** , **}2** , and **;3**.
    
                         **}0**(string)
                                contains the heading mark plus two spaces if
                                _declared-level_ is non-zero, and otherwise is
                                empty.
    
                         **;0**(register)
                                encodes a position for the text after the
                                heading.  0 means that the heading is to be
                                run in, 1 means that a break is to occur
                                before the text, and 2 means that vertical
                                space is to separate heading and text.
    
                         **}2**(string)
                                is the suffix that separates a run-in heading
                                from the text.  It contains two spaces if
                                register **;0** is 0, and otherwise is empty.
    
                         **;3**(register)
                                contains the vertical space required for the
                                heading to be typeset.  If that amount is not
                                available, the page is broken prior to the
                                heading.  The default is **2v**.
    
                  **HY** _declared-level actual-level title-suffix_
                         _mm_ calls **HY** after determining the heading typeface
                         and size.  It could be used to change indentation.
    
                  **HZ** _declared-level actual-level title-suffix_
                         _mm_ calls **HZ** after formatting the heading, just
                         before **H** or **HU** returns.  It could be used to change
                         the page header to include a section heading.
    
           **HC**[_hyphenation-character_]
                  Set hyphenation character, selecting the default, “\%”, if
                  called without argument.
    
           **HM**[_arg1_ [_arg2_ [... [_arg14_]]]]
                  Set the heading mark style.  Each argument assigns the
                  specified register format (see above) to the corresponding
                  heading level.  The default is **1** for all levels.  An
                  explicitly empty argument also indicates the default.
    
           **HU** _title_ [_suffix_]
                  Set an unnumbered section heading with _title_ and, as a GNU
                  extension, an optional _suffix._  The heading is treated as a
                  numbered heading of the level stored in register **Hu** , but no
                  heading mark is output; see **H**.
    
           **I**[_italic-text_ [_previous-font-text_]] ...
                  Join _italic-text_ in italics with _previous-font-text_ in the
                  previous font, without space between the arguments.  If no
                  arguments, switch font to italic style.
    
           **IA**[_recipient-name_ [_title_]]
                  Specify the inside address in a letter.  Input is collected
                  into the inside address until **IE** is called, and then
                  output.  You can specify multiple recipients with empty
                  **IA** /**IE** pairs; only the last address is used.  The arguments
                  give each recipient a name and title.  See **LT**.
    
           **IB**[_italic-text_ [_bold-text_]] ...
                  Join _italic-text_ in italics with _bold-text_ in boldface,
                  without space between the arguments.
    
           **IE** End the inside address begun with **IA**.
    
           **IND** _argument_ ...
                  If the Boolean register **Ref** is true, write an index entry
                  as a specially prepared _roff_ comment to the standard error
                  stream, with each _argument_ separated from its predecessor
                  by a tab character.  The entry's location information is
                  arranged as configured by the most recent **INITI** call.
    
           **INDP** Output the index set up by **INITI** and populated by **IND**
                  calls.  By default, **INDP** calls **SK** and writes a centered
                  caption interpolating the string **Index**.  It then disables
                  filling and calls **2C** ; afterward, it restores filling and
                  calls **1C**.
    
                  Define macros to customize this behavior.  **INDP** calls **TXIND**
                  before the caption, **TYIND** _instead_ of writing the caption,
                  and **TZIND** after formatting the index.
    
           **INITI** _location-type file-name_ [_macro_]
                  Initialize _groff mm_ 's indexing system.  Argument _location-_
                  _type_ selects how the location of each index entry is
                  reported.  _file-name_ populates an internal string used
                  later by **INDP**.
    
                  [1mlocation-type[24m   Entry format
                  N               page number
                  H               heading mark
                  B               page number, tab character, heading mark
    
                  If _macro_ is specified, _groff mm_ calls it for each index
                  entry with the arguments given to **IND**.
    
           **INITR** _file-name-prefix_
                  Initialize the cross reference macros.  Cross references
                  are written to the standard error stream, which should be
                  redirected into a file named file-name-prefix _.qrf_.
                  _mmroff_(1) handles this and the two formatting passes it
                  requires.  The first pass identifies cross references; the
                  second includes them.  See **SETR** , **GETHN** , **GETPN** , and **GETST**.
    
           **IR**[_italic-text_ [_roman-text_]] ...
                  Join _italic-text_ in italics with _roman-text_ in roman style,
                  without space between the arguments.
    
           **LB** _text-indent mark-indent pad type_ [_mark-or-format_ [_pre-item-_
           _space_ [_pre-list-space_]]]
                  Begin list.  The macros **AL** , **BL** , **BVL** , **DL** , **ML** , **RL** , and **VL**
                  call **LB** in various ways; they are simpler to use and may be
                  preferred if they suit the desired purpose.
    
                  _mm_ tracks the nesting level of lists; the outermost is 0.
                  Each list item (text lines after an **LI** call) is indented by
                  _text-indent._  The mark is left-aligned at _mark-indent_ ,
                  padded on the left with _pad_ ens of space.  _type_ determines
                  the mark's format.
    
                  [1mtype[24m   Output for a mark “x”
                  0      x
                  1      x.
                  2      x)
                  3      (x)
                  4      [x]
                  5      <x>
                  6      {x}
    
                  If _type_ is **0** , _mark-or-format_ specifies each item's mark
                  (which can be overridden by an argument to **LI**).  If _mark-_
                  _or-format_ is empty (or the dummy character “**\ &**”) _mm_ sets
                  items at _mark-indent_ with a hanging indent at _text-indent._
    
                  If _type_ is greater than zero, _mm_ supplies an automatically
                  incrementing numeric mark, and interprets _mark-or-format_ as
                  a register format.
    
                  A _type_ of **-1** causes _groff mm_ to break the line after the
                  mark even if it fits within _text-indent;_ this is a GNU
                  extension.
    
                  The last two arguments manage vertical space.  Unless a
                  list's nesting level is greater than the value of register
                  **Ls** , its items are preceded by _pre-item-space_ multiplied by
                  the register **Lsp** ; the default is **1**.  **LB** precedes the list
                  by _pre-list-space_ multiplied by the register **Lsp** ; the
                  default is **0**.
    
           **LC**[_list-level_]
                  Clear list state.  Active lists are terminated as if with
                  **LE** , either all (the default) or only those from the current
                  level down to _list-level_ if specified.  **H** calls **LC**
                  automatically.
    
           **LE**[**1**] End list.  The current list is terminated.  An argument
                  of **1** causes vertical space in the amount of register **Lsp** to
                  follow the list.
    
           **LI**[_mark_ [_pad-prefix_]]
                  Begin a list item.  _mm_ collects input into a list item
                  until the current list terminates or **LI** is called again.
                  By default, the item's text is preceded by any mark
                  configured by the current list.  If _mark_ is the only
                  argument, it replaces the mark configured in the
                  corresponding **LB** call.  If the width of the mark plus any
                  _pad_ specified in the **LB** call exceeds the text indentation,
                  _groff mm_ warns and uses one en of padding between the mark
                  and the text.  The presence of a second argument prefixes
                  _mark_ to the **LB** -configured mark and, as a GNU extension,
                  conditionally puts an unbreakable space between the prefix
                  and mark per the argument's Boolean value.
    
           **LO** _option_ [_value_]
                  Specify letter options; see **LT**.  Standard options are as
                  follows.  See **IA** regarding the inside address and string **DT**
                  regarding the date.
    
                  [1moption[24m   Meaning and Effect
                  AT       Attention; put contents of string **LetAT** and _value_
                           left-aligned after the inside address.
                  CN       Confidential; put _value,_ or contents of string
                           **LetCN** , left-aligned after the date.
                  RN       Reference; put contents of string **LetRN** and _value_
                           after the confidential notation (if any) and the
                           date, aligned with the latter.
                  SA       Salutation; put _value,_ or contents of string
                           **LetSA** , left-aligned after the inside address and
                           the confidential notation (if any).
                  SJ       Subject; put contents of string **LetSJ** and _value_
                           left-aligned after the inside address and the
                           attention and salutation notations (if any).  In
                           letter type “SP”, **LetSJ** is ignored and _value_ is
                           set in full capitals.
    
           **LT**[_style_]
                  Format a letter in the designated _style,_ defaulting to **BL**
                  (see below).  A letter begins with the writer's address
                  (**WA** /**WE**), followed by the date (**ND**), the inside address
                  (**IA** /**IE**), the body of the letter (**P** and other general-
                  purpose _mm_ macros), the formal closing (**FC**), the signature
                  (**SG**), and notations (**NS** /**NE**).  Any of these except the body
                  text may be omitted.  Letter options specified with **LO** add
                  further annotations, which are extensible; see section
                  “Internals” below.
    
                  [1mstyle[24m   Description
                  BL      Blocked: the writer's address, date, formal
                          closing, and signature are indented to the center
                          of the line.  Everything else is left-aligned.
                  SB      Semi-blocked: as **BL** , but the first line of each
                          paragraph is indented by **\n[Pi]** ens.
                  FB      Fully blocked: everything is left-aligned.
                  SP      Simplified: as **FB** , but a formal closing is omitted,
                          and the signature is set in full capitals.
    
           **MC** _column-width_ [_gutter-width_]
                  Begin multi-column layout.  _groff mm_ creates as many
                  columns of _column-width_ as the line length will permit.
                  _gutter-width_ is the interior spacing between columns.  It
                  defaults to _column-width_ /15.  **NCOL** moves to the next
                  column, and **1C** returns to single-column layout.  **MC** is a
                  GNU extension, generalizing **2C**.  See **MULB** for an
                  alternative.
    
           **ML** _mark_ [_text-indent_ [**1**]]
                  Start a _marked list;_ the _mark_ argument precedes each item.
                  _text-indent_ overrides the default indentation of the list
                  items, which is the width of _mark_ plus one word space.  A
                  third argument suppresses the vertical space that normally
                  precedes each list item; see register **Lsp**.  Vertical space
                  in the amount of **Lsp** precedes the list itself, but does not
                  accumulate with pre-item space when this list is nested in
                  another.  Use **LI** to declare list items, and **LE** to end the
                  list.
    
           **MT**[_type_ [_addressee_]]
                  Select memorandum type.  These correspond to formats used
                  by AT&T Bell Laboratories, where the _mm_ package was
                  initially developed, affecting the document layout.  Some
                  of these included a cover page with a caption categorizing
                  the document.  _groff mm_ uses _type_ to construct the file
                  name _/usr/local/share/groff/1.23.0/tmac/mm/_ type _.MT_ and load
                  it with the **mso** request.  Memorandum types 0 to 5 are
                  supported; any other value of _type_ is mapped to type 6.
                  Omitting _type_ implies **1**.  _addressee_ sets a string analogous
                  to one used by AT&T cover sheet macros not implemented in
                  _groff mm_.
    
                  [1mtype[24m     Description
                  0        normal memorandum; no caption
                  1        captioned “TECHNICAL MEMORANDUM”
                  2        captioned “INTERNAL MEMORANDUM”
                  3        captioned “ADMINISTRATIVE MEMORANDUM”
                  4        released paper
                  5        external letter
                  _string_   captioned _string_
    
                  See **COVER** for a more flexible cover sheet mechanism.
    
           **MOVE** _y-pos_ [_x-pos_ [_line-length_]]
                  Move to a position, setting page offset to _x-pos_.  If _line-_
                  _length_ is not given, the difference between current and new
                  page offset is used.  Use **PGFORM** without arguments to
                  return to normal.
    
           **MULB** _cw1 sp1_ [_cw2 sp2_] ... _cwn_
                  Begin alternative multi-column mode.  All column widths _cw_ i
                  must be specified, as must the amount of space _sp_ i between
                  each column pair.  **MULB** uses a diversion and operates in a
                  separate environment.
    
           **MULN** Begin next column in alternative column mode.
    
           **MULE** End alternative multi-column mode and emit the columns.
    
           **NCOL** Move to the start of the next column (only when using **2C** or
                  **MC**).  Contrast with **MULN**.
    
           **ND**[_arg_]
                  Set the document's date.  _mm_ does not interpret _arg_ ; it can
                  be a revision identifier (or empty).
    
           **NE** End notation begun with **NS** ; filling is enabled.
    
           **nP**[_type_]
                  As **P** , but set a paragraph number in the form _x_._yy_ , where _x_
                  is the number of the second heading level, and _yy_
                  increments with each **nP** call; its value is not reset when
                  the second-level heading number changes.  _mm_ uses a
                  register format of “00” for _yy._
    
           **NS**[_code_ [**1**]]
                  Declare notations, typically for letters or memoranda, of
                  the type specified by _code_.  The text corresponding to _code_
                  is output, and filling is disabled until **NE** is called.
                  Typically, a list of names or attachments lies within
                  **NS** /**NE**.  If _code_ is absent or does not match one of the
                  values listed under the **Letns** string description below,
                  each line of notations is formatted as “Copy (_line_) to”.
                  If a second argument, conventionally **1** , is given, _code_
                  becomes the entire notation and **NE** is not necessary.  In
                  _groff mm_ , you can set up further notations to be recognized
                  by **NS** ; see the strings **Letns** and **Letnsdef** below.
    
           **OF**[**"'**_left_**'**_center_**'**_right_**'"**]
                  Define the odd-page footer, which is formatted just above
                  the normal page footer on odd-numbered pages.  See **PF**.  **OF**
                  defines the string **EOPof**.
    
           **OH**[**"'**_left_**'**_center_**'**_right_**'"**]
                  Define the odd-page header, which is formatted just below
                  the normal page header on odd-numbered pages.  See **PH**.  **OH**
                  defines the string **TPoh**.
    
           **OP** Ensure that subsequent text is formatted at the top of an
                  odd-numbered page; no page break is performed if the
                  drawing position is already there.
    
           **P**[_type_]
                  Begin new paragraph.  If _type_ is missing or **0** , **P** sets the
                  paragraph fully left-aligned.  A _type_ of **1** idents the first
                  line by **\[Pi]** ens.  Set the register **Pt** to select a default
                  paragraph indentation style.  The register **Ps** determines
                  the amount of vertical space between paragraphs.
    
                  To set a paragraph with a hanging indent, use **VL** with the
                  desired indentation as the argument and **LI**(with no
                  argument).
    
           **PE** End picture input preprocessed by _pic_(1); see **PS**.
    
           **PF**[**"'**_left_**'**_center_**'**_right_**'"**]
                  Define the page footer.  The footer is formatted at the
                  bottom of each page; the argument is otherwise as described
                  in **PH**.  **PF** defines the string **EOPf**.  See **EF** , **OF** , and **EOP**.
    
           **PGFORM**[_linelength_ [_pagelength_ [_pageoffset_ [**1**]]]]
                  Set line length, page length, and/or page offset.  This
                  macro can be used for letterheads and similar.  It is
                  normally the first macro call in a file, though it is not
                  necessary.  **PGFORM** can be used without arguments to reset
                  everything after a **MOVE** call.  A line break is done unless
                  the fourth argument is given.  This can be used to avoid
                  the page number on the first page while setting new width
                  and length.  (It seems as if this macro sometimes doesn't
                  work too well.  Use the command-line arguments to change
                  line length, page length, and page offset instead.)
    
           **PGNH** Suppress header on the next page.  To suppress a header on
                  the first page, call this macro prior to formatting any
                  text in the document.  Also see register **N**.
    
           **PH**[**"'**_left_**'**_center_**'**_right_**'"**]
                  Define the page header, formatted at the top of each page,
                  as the argument, where _left_ , _center_ , and _right_ are aligned
                  to the respective locations on the line.  A “**%** ” character
                  in _arg_ is replaced by the page number.  If the argument is
                  absent, no page header is set.  The default page header is
                         "''- % -''"
                  which centers the page number between hyphens and formats
                  nothing at the upper left and right.  Header macros call **PX**
                  (if defined) after formatting the header.  **PH** defines the
                  string **TPh**.  See **EH** , **OH** , and **TP**.
    
           **PIC**[**-B**] [**-C** |**-I** _n_ |**-L** |**-R**] _file_ [_width_ [_height_]]
                  Include PostScript document _file_.  The optional **-B** argument
                  draws a box around the picture.  The optional **-L** , **-C** , **-R** ,
                  and **-I** _n_ arguments align the picture or indent it by _n_.  By
                  default, the picture is left-aligned.  Optional _width_ and
                  _height_ arguments resize the picture.  Use of this macro
                  requires two-pass processing; see **INITR** and _mmroff_(1).
    
           **PS** Start picture input preprocessed by _pic_(1).
    
           **PY** As **PE** , but with “flyback”, returning the drawing position
                  to where it was prior to the picture.  This is a GNU
                  extension.
    
           **R**[_roman-text_ [_previous-font-text_]] ...
                  Join _roman-text_ in roman style with _previous-font-text_ in
                  the previous font, without space between the arguments.  If
                  no arguments, switch font to roman style.
    
           **RB**[_roman-text_ [_bold-text_]] ...
                  Join _roman-text_ in roman style with _bold-text_ in boldface,
                  without space between the arguments.
    
           **RD**[_prompt_ [_div_ [_string_]]]
                  Read from standard input stream into a diversion and/or
                  string.  The text is saved in a diversion named _div_.
                  Interpolate the saved text by calling its name like a
                  macro.  If _string_ is present, the input is also stored in a
                  string of that name.
    
           **RF** End a bibliographic reference citiation started with **RS**.
                  See **RP**.
    
           **RI**[_roman-text_ [_italic-text_]] ...
                  Join _roman-text_ in roman style with _italic-text_ in italics,
                  without space between the arguments.
    
           **RL**[_text-indent_ [**1**]]
                  Begin an auto-incrementing numbered list, where item
                  numbers start at one and set between square brackets.  A
                  _text-indent_ argument overrides register **Li**.  A second
                  argument suppresses the vertical space that normally
                  precedes each list item; see register **Lsp**.  Vertical space
                  in the amount of **Lsp** precedes the list itself, but does not
                  accumulate with pre-item space when this list is nested in
                  another.  Use **LI** to declare list items, and **LE** to end the
                  list.  “RL” is a mnemonic for “reference list”, but this
                  macro has no relationship with _mm_ 's bibliographic reference
                  list facilities.
    
           **RP**[_suppress-counter-reset_ [_page-ejection-policy_]]
                  Format a reference list, listing items accumulated within
                  **RS** /**RF** pairs.  The reference counter is reset unless the
                  first argument is **1**.  Normally, page breaks occur before
                  and after the references are output; the register **Rpej**
                  configures this behavior, and a second argument overrides
                  its value.  **TC** calls **RP** automatically if references have
                  accumulated.
    
                  _groff mm_ calls **LB** to format the reference list; the **Rpfmt**
                  string configures the list's appearance.  Setting register
                  **Ls** to **0** suppresses spacing after the list.  The string **Rp**
                  contains the reference list caption.
    
           **RPX** This user-definable hook macro assumes responsibility for
                  formatting the heading of the reference page that **RP**
                  produces.  If not defined (the default), _mm_ sets the
                  reference list caption in the string **Rp** after two vees of
                  space, centered in italics, followed by another vee of
                  space.
    
           **RS**[_reference-string_]
                  Begin citation of an automatically numbered bibliographic
                  reference entry.  _mm_ collects input until **RF** is called.  A
                  subsequent **RP** call emits the accumulated entries.
                  References are numbered starting at 1; the register **:R**
                  stores the most recently assigned number.  Interpolate the
                  string **Rf** where the reference mark should be, then place
                  the entry between **RS** and **RF** calls on text lines after the
                  reference mark.  The **Rfstyle** register determines whether
                  the mark is bracketed, superscripted, or both.  If
                  _reference-string_ is specified, _mm_ also stores the reference
                  mark in a string of that name.
    
           **S**[_type-size_ [_vertical-spacing_]]
                  Set type size and vertical spacing.  Each argument is a
                  _groff_ measurement, using an appropriate scaling unit and an
                  optional **+** or **-** prefix to increment or decrement the
                  current value.  An argument of **P** restores the previous
                  value, **C** retains the current value, and **D** requests the
                  default.  _mm_ treats an empty or omitted argument as **P**.
    
           **SA**[_mode_]
                  Set or restore the default enablement of adjustment.
                  Specify **0** or **1** as _mode_ to set a document's default
                  explicitly; _groff mm_ assumes **1**.  Invoke the **na** request as
                  desired to temporarily suspend adjustment.  **H** and **HU** , and
                  **SA** when called without a _mode_ argument, restore the default
                  adjustment.
    
           **SETR** _ref-name_ [_string_]
                  Create reference _ref-name_ , storing its heading and page
                  numbers.  If _string_ is present, _groff mm_ saves it as an
                  auxiliary datum for retrieval by **GETST**.  See **INITR**.
    
           **SG**[_arg_ [**1**]]
                  Output author signature block(s) in **LT** letters and **MT**
                  memoranda.  The format of a signature block depends on the
                  letter or memorandum type.  See section “Internals” below.
    
                  **LT** letters emit a signature for one author at most (see
                  **WA**).  The author's title, if any, is set on the next line,
                  indented to align with the name, except in letter type
                  “SP”, where it is set in full capitals (like the name)
                  after a comma and space.
    
                  Memorandum type 4 uses no signature block.  In other
                  memoranda, each of an author's titles is set on a
                  subsequent line, indented to align with the name.  They
                  furthermore encode a secretarial annotation including the
                  location, department, and initials specified in each
                  author's **AU** call, followed by any _arg_ , writing it at the
                  left margin preceding the last author's name, or preceding
                  the first if a second **SG** argument is present.
    
           **SK**[_n_] Skip _n_ pages.  If _n_ is **0** or omitted, the page is broken
                  unless the drawing position is already at the top of a
                  page.  Otherwise, _n_ pages, blank except for any headers and
                  footers, are printed.
    
           **SM** _text_ [_post_]
           **SM** _pre text post_
                  Format _text_ at a smaller type size, joined with any
                  specified _pre_ and _post_ at normal size, without space
                  between the arguments.
    
           **SP**[_distance_]
                  Space downward by _distance._  Multiple **SP** calls in sequence
                  produce only the largest of the specified _distances._
                  Absolute motions with a prefixed **|** operator are accepted;
                  negative ones are not.
    
                  **SP** has no effect when the drawing position is at the top of
                  the page.  Put the dummy character escape sequence **\ &**
                  (followed by **\c** if desired to prevent a break) on a text
                  line prior to an **SP** call to overcome this restriction.
    
           **TAB** Reset tab stops to every 5 ens.  The **ta** request customizes
                  them.
    
           **TB**[_title_ [_override_ [_flag_ [_ref-name_]]]]
                  Caption a table.  Arguments are handled analogously to **EC**.
                  The register **Tb** is the table counter.  The string **Captb**
                  precedes the table number and any _title._  Table captions
                  are centered irrespective of the alignment of any enclosing
                  display.
    
                  Captioned tables are listed in a table of contents (see **TC**)
                  if the Boolean register **Lt** is true.  The string **Lt** captions
                  this list.
    
           **TC**[_slevel_ [_spacing_ [_tlevel_ [_tab_ [_h1_ [_h2_ [_h3_ [_h4_ [_h5_]]]]]]]]]
                  Output table of contents.  This macro is normally the last
                  called in the document.  It flushes any pending displays
                  and, if any references are pending (see **RS**), calls **RP**.  It
                  then begins a new page with the contents caption, stored in
                  the string **Capcon** , centered at the top.  The entries follow
                  after three vees of space.  Each entry is a saved section
                  (number and) heading title (see the **Cl** register), along
                  with its associated page number.  By default, an entry is
                  indented by an amount corresponding to its heading level
                  and the maximum heading length encountered at that heading
                  level; if defined, the string **Ci** overrides these
                  indentations.  Entries at heading levels up to and
                  including _slevel_ are preceded by _spacing_ vees of space.
                  Entries at heading levels up to and including _tlevel_ are
                  followed by a leader and a right-aligned page number.  If
                  the Boolean-valued _tab_ argument is true, the leader is
                  replaced with horizontal motion in the same amount.  For
                  entries above heading level _tlevel_ , the page number follows
                  the heading text after a word space.  Each argument _h1_..._h5_
                  appears in order on its own line, centered, above the
                  contents caption.  Page numbering restarts at 1, in
                  register format “i”.  If the **Oc** register is true, numbering
                  of these pages is suppressed.
    
                  If **TC** is called with at most four arguments, it calls the
                  user-defined macro **TX**(if defined) prior to formatting the
                  contents caption, and **TY**(if defined) _instead_ of formatting
                  the contents caption.
    
                  _mm_ then presents lists of figures, tables, equations, and
                  exhibits, in that order.  A list appears only if at least
                  one such captioned item is present.  **TX** _xx_ and **TY** _xx_ macros,
                  where _xx_ is “FG”, “TB”, “EC”, or “EX”, and strings **Capfg** ,
                  **Captb** , **Capec** , and **Capex** analogously configure the output of
                  each captioned list.
    
           **TE** End _tbl_(1) table.  See **TS**.
    
           **TH** Mark the end of a **TS** /**TE** table heading.  When a table spans
                  multiple pages, the heading repeats at the top of each
                  page.  _groff mm_ does not implement the **N** argument supported
                  by DWB _mm_.
    
           **TL**[_charging-case-number_ [_filing-case-number_]]
                  Begin document title.  _mm_ collects input into the title
                  until a subsequent **AU** call and formats it as directed by
                  the **MT** memorandum type or cover sheet macros.  _mm_ saves
                  _charging-case-number_ and _filing-case-number_ for use in all
                  memorandum types except 4.
    
           **TM** _number_ ...
                  Declare technical memorandum number(s) used with **MT**
                  memoranda.
    
           **TP** If defined, this macro is called in lieu of normal page
                  header layout.  Headers and footers are formatted in a
                  separate environment.  See **EOP**.
    
                  **Strings available to TP**
                  ────────────────────────
                  **TPh** argument to **PH**
                  **TPeh** argument to **EH**
                  **TPoh** argument to **OH**
    
           **TS**[**H**] Start _tbl_(1) table.  Argument “H” tells _mm_ that the table's
                  heading should repeat after page breaks.  See **TE** , **TH** , and
                  _tbl_(1).
    
           **VERBON**[_format_ [_type-size_ [_font_]]]
                  Begin display of verbatim content.  _format_ controls several
                  parameters.  Add up the values of desired features; the
                  default is **0**.  Further arguments configure the _type-size_ in
                  scaled points (on typesetting devices), and the face
                  (_font_).  On typesetting devices, the default face is **CR**
                  (Courier roman), a monospaced font: all glyphs are equally
                  wide.
    
                  **Value   Effect**
                  1       Disable the formatter's escape character (\).
                  2       Vertically space before the display.
                  4       Vertically space after the display.
                  8       Number output lines; call formatter's **nm** request
                          with arguments in string **Verbnm**.
                  16      Indent by the amount stored in register **Verbin**.
    
           **VERBOFF**
                  End verbatim display.
    
           **VL**[_text-indent_ [_mark-indent_ [**1**]]]
                  Begin variable-item (or “tagged”) list.  Each item should
                  supply its own mark, or tag.  A _text-indent_ argument
                  overrides register **Pi** ; _mark-indent_ sets the distance from
                  the indentation of the current list to the mark.  A third
                  argument suppresses the vertical space that normally
                  precedes each list item; see register **Lsp**.  Vertical space
                  in the amount of **Lsp** precedes the list itself, but does not
                  accumulate with pre-item space when this list is nested in
                  another.  Use **LI** to declare list items, and **LE** to end the
                  list.
    
           **VM**[**-T**] [_top_ [_bottom_]]
                  Vertical margin.  Increase the top and bottom margin by _top_
                  and _bottom_ , respectively.  If option **-T** is specified, set
                  those margins to _top_ and _bottom_.  If no measurement
                  arguments are given, reset the margins to zero, or, if **-T**
                  is used, to the defaults (“7v 6v”) It is highly recommended
                  that macros **TP** and/or **EOP** are defined if using **-T** and
                  setting top and/or bottom margin to less than the default.
                  This undocumented DWB _mm_ macro is exposed by _groff mm_ to
                  increase user control of page layout.
    
           **WA**[_writer's-name_ [_title_]]
                  Specify the writer(s) of an **LT** letter.  Input is collected
                  into the writer's address until **WA** is called, and then
                  output.  You can specify multiple writers with empty **WA** /**WE**
                  pairs; only the last address is used.  The arguments give
                  each writer a name and title.
    
           **WC**[_format_ ...]
                  Control width of footnotes and displays.
    
                  [1mformat[24m   Effect
                  **N** equivalent to “**-WF -FF -WD** ” (default)
                  **WF** set footnotes at full line length, even in two-
                           column mode
                  **-WF** set footnotes using column line length
                  **FF** apply width of first footnote to encountered to
                           subsequent ones
                  **-FF** footnote width determined by **WF** and **-WF**
                  **WD** set displays at full line length, even in two-
                           column mode
                  **-WD** set displays using column line length
    
           **WE** End the writer's address begun with **WA**.
    


## Strings



           Many _mm_ strings interpolate predefined, localizable text.  We
           present their contents in quotation marks.
    
           **Abstract**
                  “ABSTRACT”
    
           **App** “APPENDIX”
    
           **Apptxt** stores the _title_ argument to the most recent **APP** call.
    
           **Aumt** lists space-separated indices of positional arguments to
                  the **AU** macro that should be suppressed from appearance in
                  the document heading on the first page of **MT** memorandum
                  types 0–3 and 6.  By default, it is undefined; all
                  arguments are formatted except the second (author
                  initials).
    
           **BU** interpolates a bullet mark, **\[bu]**.
    
           **Capcon** “CONTENTS”
    
           **Capec** “Equation”
    
           **Capex** “Exhibit”
    
           **Capfg** “Figure”
    
           **Captb** “Table”
    
           **Ci** assigns indentation amounts used by each heading level
                  listed in a table of contents, in one-to-one
                  correspondence, overriding those computed by **TC**.  Each word
                  must be a horizontal measurement (like “**1i** ”).
    
           **DT** stores the date or other identifier set by **ND** , if called,
                  and otherwise one constructed using the formatter's date
                  registers; see _groff_(1).  The _groff_ locale determines its
                  format, but register **Isodate** may override it.
    
           **EM** interpolates an em dash, **\[em]**.
    
           **F** interpolates an automatically numbered footnote marker; the
                  number is used by the next **FS** call without an argument.  In
                  _troff_ mode, the marker is superscripted; in _nroff_ mode, it
                  is surrounded by square brackets.
    
           **H1txt** stores the text of the current first-level heading; **H** and
                  **HU** update it, as does **TC** when processing table of contents
                  entries and captions of displayed figures, tables,
                  equations, and exhibits.
    
           **HF** assigns font identifiers, separated by spaces, to heading
                  levels in one-to-one correspondence.  Each identifier may
                  be a font mounting position, font name, or style name.
                  Omitted values are assumed to be 1.  The default is “**2 2 2**
                  **2 2 2 2 2 2 2 2 2 2 2** ”, which places all headings in
                  italics.  DWB _mm_ 's default was “**3 3 2 2 2 2 2** ”.
    
           **HP** assigns type sizes, separated by spaces, to heading levels
                  in one-to-one correspondence.  Each size is interpreted in
                  scaled points; zero values are translated to **10**.  Omitted
                  values are assumed to be 0 (and are translated
                  accordingly).  The default is “**0 0 0 0 0 0 0 0 0 0 0 0 0**
                  **0** ”.
    
           **Index** “INDEX”
    
           **Le** “LIST OF EQUATIONS”
    
           **Letfc** “Yours very truly,” (see **FC**)
    
           **Letapp** “APPROVED:” (see **AV**)
    
           **LetAT** “ATTENTION:” (see **LO**)
    
           **LetCN** “CONFIDENTIAL” (see **LO**)
    
           **Letdate**
                  “Date” (see **AV**)
    
           **Letns** is a group of strings structuring the notations produced by
                  **NS**.  If the _code_ argument to **NS** has no corresponding
                  string, the notation is included between parentheses,
                  prefixed with **Letns!copy** , and suffixed with **Letns!to**.
                  Observe the spaces after “Copy” and before “to”.
    
                  **NS code   String       Contents**
                  0         Letns!0      Copy to
                  1         Letns!1      Copy (with att.) to
                  2         Letns!2      Copy (without att.) to
                  3         Letns!3      Att.
                  4         Letns!4      Atts.
                  5         Letns!5      Enc.
                  6         Letns!6      Encs.
                  7         Letns!7      Under separate cover
                  8         Letns!8      Letter to
                  9         Letns!9      Memorandum to
                  10        Letns!10     Copy (with atts.) to
                  11        Letns!11     Copy (without atts.) to
                  12        Letns!12     Abstract Only to
                  13        Letns!13     Complete Memorandum to
                  14        Letns!14     CC
                  —         Letns!copy   Copy _(with trailing space)_
                  —         Letns!to      to _(note leading space)_
    
           **Letnsdef**
                  selects the notation format when **NS** is given no argument.
                  The default is **0**.
    
           **LetRN** “In reference to:” (see **LO**)
    
           **LetSA** “To Whom It May Concern:” (see **LO**)
    
           **LetSJ** “SUBJECT:” (see **LO**)
    
           **Lf** “LIST OF FIGURES”
    
           **Lt** “LIST OF TABLES”
    
           **Lx** “LIST OF EXHIBITS”
    
           **MO1**
           ...
           **MO12** “January” through “December”
    
           **Qrf** “See chapter \E*[Qrfh], page \En[Qrfp].”  If your document
                  uses multiple heading levels, you might redefine this
                  string to use the word “section” instead of “chapter”.
    
           **Qrfh** stores the heading mark corresponding to the most recent
                  **GETR** call.
    
           **Qrfp** stores the page number corresponding to the most recent
                  **GETR** call.
    
           **Rf** interpolates an automatically numbered reference mark; the
                  number is used by the next **RS** call.
    
           **Rp** “REFERENCES”
    
           **Rpfmt** specifies the **LB** arguments that _groff mm_ uses to format the
                  items in an **RP** reference list.  The default is “**\\n[Li] 0 1**
                  **0 \ & 0**”.
    
           **Rg** interpolates the registered (trade) mark sign.
    
           **Sm** interpolates the service mark sign.
    
           **Tcst** interpolates an indicator of the **TC** macro's processing
                  status.  If **TC** is not operating, it is empty.  User-defined
                  **TP** or **EOP** macros might condition page headers or footers on
                  its contents.
    
                  **Value   Meaning**
                  co      Table of contents
                  fg      List of figures
                  tb      List of tables
                  ec      List of equations
                  ex      List of exhibits
                  ap      Appendix
    
           **Tm** interpolates ™, the trade mark sign.
    
           **Verbnm** supplies argument(s) to the **nm** request employed by the
                  **VERBON** macro.  The default is **1**.
    


## Registers



           Default register values, where meaningful, are shown in
           parentheses.
    
           **.mgm** indicates that _groff mm_ is in use (Boolean-valued; **1**).
    
           **:p** is an auto-incrementing footnote counter; see **FS**.
    
           **:R** is an auto-incrementing reference counter; see **RS**.
    
           **Aph** formats an appendix heading (and title, if supplied); see
                  **APP**(Boolean-valued; **1**).
    
           **Au** includes supplemental author information (the third and
                  subsequent arguments to **AU**) in memorandum “from”
                  information; see **COVER** and **MT** , and the **Aumt** string
                  (Boolean-valued; **1**).
    
           **Cl** sets the threshold for inclusion of headings in a table of
                  contents.  Headings at levels above this value are
                  excluded; see **H** and **TC**.  The **Cl** register controls whether a
                  heading is _saved_ for output in the table of contents at the
                  time **H** or **HU** is called; if you change **Cl** 's value
                  immediately prior to calling **TC** , you are unlikely to get
                  the result you want (**2**).
    
           **Cp** suppresses page breaks before lists of captioned equations,
                  exhibits, figures, and tables, and before an index; see **EC** ,
                  **EX** , **FG** , **TB** , and **INDP**(Boolean-valued; **0**).
    
           **D** produces debugging information for the _mm_ package on the
                  standard error stream.  A value of 0 outputs nothing;
                  1 reports formatting progress.  Higher values communicate
                  internal state information of increasing verbosity (**0**).
    
           **De** causes a page break after a floating display is output; see
                  **DF**(Boolean-valued; **0**).
    
           **Df** configures the behavior of **DF**.  The following values are
                  recognized; 4 and 5 do not override the **De** register (**5**).
    
                  **Value   Effect**
                  0       Flush pending displays at the end of each section
                          when section-page numbering is active, otherwise at
                          the end of the document.
                  1       Flush a pending display on the current page or
                          column if there is enough space, otherwise at the
                          end of the document.
                  2       Flush one pending display at the top of each page
                          or column.
                  3       Flush a pending display on the current page or
                          column if there is enough space, otherwise at the
                          top of the next.
                  4       Flush as many pending displays as possible in a new
                          page or column.
                  5       Fill columns or pages with flushed displays until
                          none remain.
    
           **Ds** puts vertical space in the amount of register **Dsp**(if
                  defined) or **Lsp** before and after each static display; see
                  **DS**(Boolean-valued; **1**).
    
           **Dsp** configures the amount of vertical space placed before and
                  after static displays; see **DS** and register **Ds**(_undefined_).
    
           **Ec** is an auto-incrementing equation counter; see **EC**.
    
           **E** determines the font style used by **MT** memoranda, **LT** letters,
                  and the _ms.cov_ cover page style to set the date and certain
                  other document data; **0** selects roman, and **1** bold (Boolean-
                  valued; **1**).
    
           **Ej** sets the threshold for page breaks (ejection) prior to the
                  format of headings.  Headings at levels above this value
                  are set on the same page and column as any preceding text
                  if possible; see **H**(**0**).
    
           **Eq** aligns an equation label to the left of a display instead
                  of the right (Boolean-valued; **0**).
    
           **Ex** is an auto-incrementing exhibit counter; see **EX**.
    
           **Fg** is an auto-incrementing figure counter; see **FG**.
    
           **Fs** is multiplied by register **Lsp** to vertically separate
                  footnotes; see **FS**(**1**).
    
           **H1**
           ...
           **H14** are auto-incrementing counters corresponding to each
                  heading level; see **H**.
    
           **H1dot** appends a period to the number of a level one heading; see
                  **H**(Boolean-valued; **1**).
    
           **H1h** is a copy of register **H1** , but it is incremented just before
                  a page break.  This can be useful in user-defined macros;
                  see **H** and **HX**.
    
           **Hb** sets the threshold for breaking the line after formatting a
                  heading.  Text after headings at levels above this value is
                  set on the same output line if possible.  Paragraphs
                  numbered via **nP** or the **Np** register cause a break
                  regardless; see **H**(**2**).
    
           **Hc** sets the threshold for centering a heading.  Headings at
                  levels above this value use the prevailing alignment (that
                  is, they are not centered); see **H**(**0**).
    
           **Hi** selects an indentation policy for text formatted after
                  headings.  It does not affect “run-in” headings.  The
                  following values are recognized; see **H** and **P**(**1**).
    
                  **Value   Effect**
                  0       no indentation
                  1       indent per the paragraph type
                  2       indent to align with heading title
    
           **Hps** sets the heading level threshold for application of
                  preceding vertical space; see **H**.  Headings at levels above
                  the value in register **Hps** use the amount of space in
                  register **Hps1** ; otherwise that in **Hps2**.  The value of **Hps**
                  should be strictly greater than that of **Ej**(**1**).
    
           **Hps1** configures the amount of vertical space preceding a heading
                  above the **Hps** threshold; see **H**(_troff_ devices: **0.5v** ; _nroff_
                  devices: **1v**).
    
           **Hps2** configures the amount of vertical space preceding a heading
                  within the **Hps** threshold; see **H**(_troff_ devices: **1v** ; _nroff_
                  devices: **2v**).
    
           **Hs** sets the heading level threshold for application of
                  succeeding vertical space.  If the heading level is greater
                  than **Hs** , the heading is followed by vertical space in the
                  amount of register **Hss** ; see **H**(**2**).
    
           **Hss** is multiplied by register **Lsp** to produce vertical space
                  after headings above the threshold in register **Hs** ; see **H**
                  (**1**).
    
           **Ht** suppresses output of heading level counters above the
                  deepest when a heading mark is formatted; see **H**(Boolean-
                  valued; **0**).
    
           **Hu** sets the heading level used by unnumbered headings; see **HU**
                  (**2**).
    
           **Hy** enables automatic hyphenation of words (Boolean-valued; **0**).
    
           **Isodate**
                  configures the use of ISO 8601 date format; that is, _YYYY_ -
                  _MM_ -_DD_ instead of the format specified by the localization
                  file.  Call **ND** without arguments after updating its value
                  (Boolean-valued; **0**).
    
           **L** defines the page length for the document, and must be set
                  from the command line.  A scaling unit should be appended.
                  The default is that of the selected _groff_ output device.
    
           **Le**
           **Lf**
           **Lt**
           **Lx** configure the report of lists of equation, figure, table,
                  and exhibit captions, respectively, after a table of
                  contents; see **TC**(Boolean-valued; **Le** : **0** ; **Lf** , **Lt** , **Lx** : **1**).
    
           **Letwam** sets the maximum number of input lines permitted in a
                  writer's address; see **WA** and **WE**(**14**).
    
           **Li** configures the text indentation (in ens) applied to
                  enumerated list types; that is, to items in **AL** and **RL**
                  lists, and in **LB** lists whose _type_ argument is greater than
                  zero (**5**).
    
           **Ls** sets a threshold for placement of vertical space before
                  list items.  If the list nesting level is greater than this
                  value, no such spacing occurs; see **LI**(**\n[.R]**).
    
           **Lsp** configures the base amount of vertical space used for
                  separation in the document.  _mm_ applies this spacing to
                  many contexts, sometimes with multipliers; see **DS** , **FS** , **H** ,
                  **LI** , and **P**(_troff_ devices: **0.5v** ; _nroff_ devices: **1v**).
    
           **N** configures the header and footer placements used by **PH**.
                  The default footer is empty.  If “section-page” numbering
                  is selected, the default header becomes empty and the
                  default footer becomes “ _x_ -_y_ ”, where _x_ is is the section
                  number (the number of the current first-level heading)
                  and _y_ the page number within the section.  The following
                  values are recognized; for finer control, see **PH** , **PF** , **EH** ,
                  **EF** , **OH** , and **OF** , and registers **Sectf** and **Sectp**.  Value 5 is
                  a GNU extension (**0**).
    
                  **Value   Effect**
                  0       Set header on all pages.
                  1       Move header to footer on page 1.
                  2       Omit header on page 1.
                  3       Use “section-page” numbering style on all pages.
                  4       Omit header on all pages.
                  5       Use “section-page” and “section-figure” numbering
                          style on all pages.
    
           **Np** numbers paragraphs with a leading mark in the format _s_._p_ ,
                  where _s_ is is first-level heading number and _p_ is the
                  paragraph number, starting at 1; see **H** and **P**(Boolean-
                  valued; **0**).
    
           **O** defines the page offset of the document, and must be set
                  from the command line.  A scaling unit should be appended.
                  The default is **.75i** on terminal devices.  On typesetters,
                  it is **.963i** or set to **1i** by the _papersize.tmac_ package; see
                  _groff_tmac_(5).
    
           **Oc** suppresses the appearance of page numbers in the table of
                  contents; see **TC**(Boolean-valued; **0**).
    
           **Of** selects a separator format within equation, exhibit,
                  figure, and table captions; see **EC** , **EX** , **FG** , and **TB**.  The
                  punctuation in the separator is either a dot or the **EM**
                  string.  The following values are recognized; the spaces
                  shown are unpaddable (**0**).
    
                  **Value   Effect**
                  0       ".  "
                  1       " — "
    
           **P** interpolates the current page number; it is the same as
                  register **%** except when “section-page” numbering is enabled.
    
           **Pi** configures the indentation (in ens) applied to the first
                  line of an unnumbered paragraph that has such (see **P**); and
                  the text indentation of non-enumerated list items; that is,
                  to items in **BL** , **BVL** , **DL** , and **VL** lists (but not **ML**), and in
                  **LB** lists whose _type_ argument is zero or less (**5**).
    
           **Pgps** causes the type size and vertical spacing set by **S** to apply
                  to headers and footers, overriding the **HP** string.  If not
                  set, **S** calls affect headers and footers only when followed
                  by **PH** , **PF** , **OH** , **EH** , **OF** , or **EF** calls (Boolean-valued; **1**).
    
           **Ps** is multiplied by register **Lsp** to vertically separate
                  paragraphs; see **P**(**1**).
    
           **Pt** determines when a first-line indentation is applied to a
                  paragraph; see **P**(**0**).
    
                  **Value   Effect**
                  0       never
                  1       always
                  2       always, except immediately after **H** , **HU** , **DE** , or **LE**
    
           **Ref** is used internally to control _mmroff_(1)'s two-pass approach
                  to index and reference management; see **INITI** and **RS**
                  (Boolean-valued; **0**).
    
           **Rfstyle**
                  determines the format of the reference number in the **Rf**
                  string.  _groff mm_ maps **0** to **1** in _nroff_ mode and **2** in _troff_
                  mode (**0**).
    
                  **Value   Meaning**
                  0       automatic
                  1       bracketed
                  2       superscripted
                  3       bracketed and superscripted
    
                  Changes to **Rfstyle** 's value may not take effect until the
                  next heading or paragraphing macro call.
    
           **Rpej** configures the default page ejection policy for reference
                  pages; see **RP**(**0**).
    
                  **Value   Effect**
                  0       Break the page before and after the reference list.
                  1       Suppress page break after the list.
                  2       Suppress page break before the list.
                  3       Suppress page breaks before and after the list.
    
           **S** defines the type size for the document, and must be set
                  from the command line.  A scaling unit should be appended;
                  **p** is typical (**10p**).
    
           **Sectf** selects the “section-figure” numbering style.  Its default
                  is **0** unless register **N** is set to **5** at the command line
                  (Boolean-valued).
    
           **Sectp** selects the “section-page” numbering style.  Its default
                  is **0** unless register **N** is set to **3** or **5** at the command line
                  (Boolean-valued).
    
           **Si** configures the amount of display indentation in ens; see **DS**
                  (**5**).
    
           **Tb** is an auto-incrementing table counter; see **TB**.
    
           **V** defines the vertical spacing for the document, and must be
                  set from the command line.  A scaling unit should be
                  appended; **p** is typical.  The default vertical spacing is
                  120% of the type size.  This register is a GNU extension.
    
           **Verbin** configures the amount of indentation for verbatim displays
                  when indentation is selected; see **VERBON**(**5n**).
    
           **W** defines the “width” of the document (that is, the length of
                  an output line with no indentation); it must be set from
                  the command line.  A scaling unit should be appended.  The
                  default is **6i** or assigned by the _papersize.tmac_ package;
                  see _groff_tmac_(5).
    


## Internals



           The argument (if any) to a **COVER** or **MT** call determines the file
           that _groff mm_ loads to configure the document's layout; see
           section “Files” below.
    
           **LT** 's behavior depends on the _style_ argument given to it; it calls
           macros with names suffixed accordingly.  It is therefore possible
           to define additional letter types, either in the territory-
           specific macro file, or as local additions.  **LT** sets the registers
           **Pt** and **Pi** to 0 and 5, respectively.  (DWB _mm_ used a value of 3 for
           **Pi**.)  It then calls an initialization macro corresponding to the
           type.  Define the following macros to support a new letter type.
    
           **let@init_**_type_
                  initializes any registers and other data needed by the
                  letter type.
    
           **let@head_**_type_
                  formats the letterhead; it is called instead of the usual
                  page header macro.  Its definition should remove the alias
                  **let@header** unless the letterhead is desired on subsequent
                  pages.
    
           **let@sg_**_type name title n is-final_ [_SG-arg_ ...]
                  **SG** calls this macro only for letters; **MT** memoranda have
                  their own signature processing.  _name_ and _title_ are
                  specified through **WA** /**WE**.  _n_ is the index of the _n_ th writer,
                  and _is-final_ is true for the last writer to be listed.
                  Further **SG** arguments are appended to the signature line.
    
           **let@fc_**_type closing_
                  This macro is called by **FC** , and has the formal closing as
                  the argument.
    
           **LO** implements letter options.  It requires that a string named
           **Let** _type_ be defined, where _type_ is the letter type.  **LO** then
           assigns its second argument (_value_) to the string **let*lo-**_type_.
    


## Files



           _/usr/local/share/groff/1.23.0/tmac/m.tmac_
                  is the _groff_ implementation of the memorandum macros.
    
           _/usr/local/share/groff/1.23.0/tmac/mm.tmac_
                  is a wrapper enabling the package to be loaded with the
                  option “**-m mm** ”.
    
           _/usr/local/share/groff/1.23.0/tmac/refer-mm.tmac_
                  implements _refer_(1) support for _mm_.
    
           _/usr/local/share/groff/1.23.0/tmac/mm/ms.cov_
                  implements an _ms_ -like cover sheet.
    
           _/usr/local/share/groff/1.23.0/tmac/mm/0.MT_
                  implements memorandum types 0–3 and 6.
    
           _/usr/local/share/groff/1.23.0/tmac/mm/4.MT_
                  implements memorandum type 4.
    
           _/usr/local/share/groff/1.23.0/tmac/mm/5.MT_
                  implements memorandum type 5.
    
           _/usr/local/share/groff/1.23.0/tmac/mm/locale_
                  performs any (further) desired localization if present.
    
           _/usr/local/share/doc/groff-1.23.0/examples/letter.mm_
                  illustrates features of the **LT** letter formats.
    
           _/usr/local/share/doc/groff-1.23.0/examples/memorandum.mm_
                  illustrates features of the **MT** memorandum formats.
    
           _/usr/local/share/doc/groff-1.23.0/examples/story.mm_
                  illustrates use of _mm_ for literary purposes.
    


## Authors



           Jörgen Hägg ⟨jh@axis.se⟩ of Lund, Sweden, wrote the GNU version of
           the _mm_ macro package based on an early version of _groff ms_ by
           James Clark ⟨jjc@jclark.com⟩.  Werner Lemberg ⟨wl@gnu.org⟩ and G.
           Branden Robinson ⟨g.branden.robinson@gmail.com⟩ revised and
           updated it.
    


## See also



           _MM - A Macro Package for Generating Documents_ 
           ⟨https://tkurtbond.github.io/troff/mm-all.pdf⟩, the DWB 3.3 _mm_
           manual, introduces the package but does not document GNU
           extensions.
    
           _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_mmse_(7)
    


* * *