manpagez: man pages & more
man groff_mm(7)
Home | html | info | man
groff_mm(7)            Miscellaneous Information Manual            groff_mm(7)


Name

       groff_mm - memorandum macros for GNU roff


Synopsis

       groff -mm [option ...] [file ...]

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


Description

       The mm macro package distributed with the groff document formatting
       system 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; DE terminates either.

       groff mm is intended to be compatible with the mm implementation found
       in the AT&T Documenter's Workbench 3.3 ("DWB"), with the following
       limitations and changes.

       o  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.

       o  groff mm implements the CS (output cover page or "sheet") macro only
          for memorandum type 4.

       o  The grap preprocessor is not explicitly supported; groff mm defines
          no G1 or G2 macros.

       o  Registers A, C, T, and U, set from the troff or nroff command lines
          with DWB, are not recognized.

       o  When setting the registers L or W from the command line, use an
          explicit scaling unit to avoid surprises.

       o  The Le register defaults to 1, consistently with Lf, Lt, and Lx in
          DWB; equations captioned with EC appear in tables of contents
          produced by TC.

       o  The Li register configures the text indentation of RL list items;
          DWB used a hard-coded value of 6 ens.

       o  groff mm uses the same adjustment and font style defaults in nroff
          and troff modes.

       o  Cut marks are not supported.

       DWB supported only seven heading levels.  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 citation (or "bookmark") system, permitting the
       document to make (customizable) internal references like "See chapter
       5, page 128.".  Forward references require two-pass formatting.  See
       the INITR macro description below and mmroff(1).

       Macro, register, and string descriptions in this page frequently
       mention each other; most 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).  groff mm permits use of non-integral typographical points
       (scaling unit z).  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
       /opt/local/share/groff/1.24.1/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,
       /opt/local/share/groff/1.24.1/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 /opt/local/
       share/groff/1.24.1/tmac/mm/territory_locale to be loaded at package
       initialization.  If this mechanism is not used, /opt/local/share/groff/
       1.24.1/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.  The brackets around ident are literal.

       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 "T" (Times).  To select a different one, invoke
       groff's fam request or use 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 termed these "exits".)

       Macro names longer than two characters are extensions; some shorter
       names were not part of DWB's published interface but are documented
       aspects of groff mm.

       1C [1]  Format page text in one column (the default layout).  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 MT memoranda and available
               to cover pages.  See 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 subsection "Internals" and section "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.  AL calls LB; 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 page of a memorandum
               (see MT).  COVER, by contrast, ignores placement by default,
               but can be customized to interpret it.

               placement   Effect
               0           The abstract appears on page 1 and cover page if
                           the document is a "released paper" memorandum ("
                           ".MT 4" "); otherwise, it appears on page 1 without
                           a cover page.
               1           The abstract appears only on the cover page (" ".MT
                           4" " only).

               An abstract does not appear at all in external letters (".MT
               5").  A placement of 2 was supported by DWB, 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
               page 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 pages, 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 groff mm
               extension.

       B2      End boxed static display.  See B1.  This is a groff mm
               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.  BL calls LB; 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.  mm collects input into the bottom block
               until the document calls BE, and outputs it 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.  BVL calls LB; 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 /opt/local/share/groff/
               1.24.1/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
               .\" Add additional AU and AT calls as needed.
               .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.  DL calls LB; use LI
               to declare list items, and LE to end the list.

       DS [format [fill [right-indentation]]]
               Begin static display.  mm collects input into a display until
               the document calls DE.  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).

               format   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.

               fill   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.

               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.

               flag   Effect
               0      Prefix number with override .
               1      Suffix number with override .
               2      Replace number with override .

               mm centers equation captions 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 groff mm
               extension.

               The package lists captioned equations 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     groff mm calls this hook macro in lieu of normal page footer
               layout.  The package uses a separate environment to format
               headers and footers.  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.  mm centers exhibit
               captions irrespective of the alignment of any enclosing
               display.

               The package lists captioned exhibits 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.

               arg   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.  mm centers figure
               captions irrespective of the alignment of any enclosing
               display.

               The package lists captioned figures in a table of contents (see
               TC) if the Boolean register Lf is true.  The string Lf captions
               this list.

       FS [mark]
               Start footnote.  mm collects input into a footnote until the
               document calls FE, outputting it when the vertical drawing
               position nears the page bottom.  By default, mm automatically
               numbers footnotes starting at 1; the number is available in
               register Ftnum and, with a trailing period, in string F.  If
               desired, interpolate this string in the body text to format the
               footnote mark.  mm interpolates string F prior to the footnote
               text.  Footnotes are vertically separated by the product of
               registers Fs and Lsp.  In groff mm, footnotes may be used in
               displays.

               A mark argument, which need not be numeric, replaces the
               default footnote mark, leaving the string F unchanged.  In that
               event, you must explicitly write any footnote mark to appear in
               the footnote itself.

       GETHN ref-name [string]
               Interpolate ref-name's heading mark, or, if string is
               specified, store it there.  In neither case does GETHN suffix
               the interpolation with space.  See INITR.

       GETPN ref-name [string]
               Interpolate ref-name's page number, or, if string is specified,
               store it there.  In neither case does GETPN suffix the
               interpolation with space.  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 an internal reference to it.  See
               INITR.

       GETST ref-name [string]
               Interpolate ref-name's auxiliary reference datum, or, if string
               is specified, store it there.  In neither case does GETST
               suffix the interpolation with space.  See INITR.

       H level [title [suffix]]
               Set a numbered section heading at level.  mm calls LC to clear
               any lists, then 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 HF string configures the fonts
               used for heading marks and titles at each level.  The string HP
               likewise assigns a type size to each heading level.  The hook
               macros HX and/or HZ can control the vertical spacing used by
               headings.

               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 groff mm
               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.  The arguments give
               each recipient a name and title.  mm collects input into the
               inside address until the document calls IE, then outputs it.
               You can specify multiple recipients with empty IA/IE pairs; mm
               uses only the last address.  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.

               location-type   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 internal reference macros.  Internal 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 internal 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.  It
               indents each list item (text formatted after an LI call) by
               text-indent.  The mark is left-aligned at mark-indent, and
               padded on the left with pad ens of space.  type determines the
               mark's format.

               type   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 groff mm
               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.

       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 document terminates the current list or calls LI 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
               groff mm 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.  By default, mm recognizes the
               following option values.  See IA regarding the inside address
               and string DT regarding the date.

               option   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 subsection "Internals" below.

               style   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 groff mm 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 en.  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.  ML calls
               LB; 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 /opt/local/share/
               groff/1.24.1/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 page macros not
               implemented in groff mm.

               type     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 page 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 cwi
               must be specified, as must the amount of space spi between each
               column pair.  MULB uses a diversion and operates in a separate
               environment.

       MULE    End alternative multi-column mode and emit the columns.

       MULN    Start next column in alternative column mode.

       NCOL    Start 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).  mm calls ND itself when
               initializing.

       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 the document calls NE.
               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 indents 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, LI (with no argument), and
               LE.

       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 [line-length [page-length [page-offset [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 groff mm
               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 [str]]]
               Write prompt (if specified, a tab and colon ":" to the standard
               error stream and read response from standard input stream,
               optionally into a diversion div and/or string str.  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.  RL calls LB; 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 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 into a reference entry
               until the document calls RF.  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 subsection "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, mm breaks the page if
               necessary.  Otherwise, mm prints n pages, blank except for any
               headers and footers.

       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.  SP
               accepts boundary-relative motions specified with a prefixed |
               operator, but not negative ones.

               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.  mm centers table captions
               irrespective of the alignment of any enclosing display.

               The package lists captioned tables 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 Captc, 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, mm indents an entry 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 the document calls TC with at most four arguments, mm calls
               the hook macro TX 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, and if its corresponding
               register (Le, Lf, Lt, or Lx) is set.  TXxx and TYxx 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.

       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 page 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      mm calls this hook macro in lieu of normal page header layout.
               The package uses a separate environment to format headers and
               footers.  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
               typographical 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.  RL calls LB; use LI to declare
               list items, and LE to end the list.

       VM [-T] [top [bottom]]
               Configure vertical margins.

               Without a -T argument, increment the top and bottom margins by
               top and bottom, respectively.  If absent, set the corresponding
               margin to zero.

               With the -T argument, set the top and bottom margins to top and
               bottom, respectively.  If absent, set the respective margin to
               the default (top: 7v, bottom: 6v).

               We recommend defining the hook macros TP and/or EOP if using -T
               and setting top and/or bottom margin to values less than the
               default.  groff mm exposes this undocumented DWB macro to
               enable greater user control of page layout.

       WA [writer's-name [title]]
               Specify the writer(s) of an LT letter.  mm collects input into
               the writer's address until the document calls WE, then outputs
               it.  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.

               format   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].

       Capec     "Equation"

       Capex     "Exhibit"

       Capfg     "Figure"

       Captb     "Table"

       Captc     "CONTENTS"

       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 mark; the
                 number is used by the next FS call without an argument.  In
                 troff mode, the mark 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'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.  groff mm interprets each size in
                 typographical points, translating zero values 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.

       Tcstatus  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 tm, 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).

       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).

       Ftnum    is an auto-incrementing footnote counter; see FS.  groff mm
                recognizes :p as an alias of Ftnum for DWB compatibility.

       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 hook 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 (all: Boolean-valued; 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 groff mm
                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 IND, INDP, INITI, INITR,
                and PIC (Boolean-valued; 0).

       Rfnum    is an auto-incrementing reference counter; see RS.  groff mm
                recognizes :R as an alias of Rfnum for DWB compatibility.

       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 groff mm 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 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 ...]
              is called by SG only for LT letters; MT memoranda implement
              their own signature processing.  name and title are specified
              through WA/WE.  n is the index of the nth 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
              is called by FC, and takes the formal closing as its argument.

       LO implements letter options.  It requires that a string named Lettype
       be defined, where type is the letter type.  LO then assigns its second
       argument (value) to the string let*lo-type.


Files

       /opt/local/share/groff/1.24.1/tmac/m.tmac
              is the groff implementation of the memorandum macros.

       /opt/local/share/groff/1.24.1/tmac/mm.tmac
              is a wrapper enabling the package to be loaded with the option
              "-m mm".

       /opt/local/share/groff/1.24.1/tmac/refer-mm.tmac
              implements refer(1) support for mm.

       /opt/local/share/groff/1.24.1/tmac/mm/ms.cov
              implements an ms-like cover page.

       /opt/local/share/groff/1.24.1/tmac/mm/0.MT
              implements memorandum types 0-3 and 6.

       /opt/local/share/groff/1.24.1/tmac/mm/4.MT
              implements memorandum type 4.

       /opt/local/share/groff/1.24.1/tmac/mm/5.MT
              implements memorandum type 5.

       /opt/local/share/groff/1.24.1/tmac/mm/locale
              performs any (further) desired localization if present.

       /opt/local/share/doc/groff-1.24.1/examples/letter.mm
              illustrates features of the LT letter formats.

       /opt/local/share/doc/groff-1.24.1/examples/memorandum.mm
              illustrates features of the MT memorandum formats.

       /opt/local/share/doc/groff-1.24.1/examples/story.mm
              illustrates use of mm for literary purposes.


Authors

       Jorgen Hagg <jh@axis.se> of Lund, Sweden, wrote the version of the mm
       macro package distributed with groff 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 groff mm 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)

groff 1.24.1                      2026-05-15                       groff_mm(7)

groff 1.24.1 - Generated Mon May 18 16:29:00 CDT 2026
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.