groff_mm(7) — Linux manual page
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 GNU implementation of the mm macro package is part of the
groff document formatting system. The mm package is suitable for
the composition of letters, memoranda, reports, and books.
Call an mm macro at the beginning of a document to initialize the
package. A simple mm document might use only P for paragraphing.
Set numbered and unnumbered section headings with H and HU,
respectively. Change the style of the typeface with B, I, and R;
you can alternate styles within a word with BI, BR, IB, IR, RB,
and RI. Several nestable list types are available via AL, BL,
BVL, DL, ML, RL, and VL; each of these begins a list, to which LI
adds an item and LE ends the (nested) list. Customized list
arrangements are supported by LB. DS and DF start static and
floating displays, respectively; either is terminated with DE.
groff mm is intended to be compatible with the mm implementation
found in the AT&T Documenter's Workbench (DWB), with the
following limitations.
• Omitted features include the logo and company name strings, }Z
and ]S, respectively; the encoded company site location
addresses recognized as the third argument to the AU macro;
the Pv (“private” heading) register; and the OK (other
keywords) and PM (proprietary markings) macros.
• The CS (output cover sheet) macro is implemented only for
memorandum type 4.
• The grap preprocessor is not explicitly supported; no G1 and
G2 macros are defined.
• The registers A, C, E, T, and U, typically set from the troff
or nroff command lines with DWB mm, are not recognized.
• When setting the registers L or W from the command line, use
an explicit scaling unit to avoid surprises.
• DWB mm's nP macro indented the second line of a paragraph to
align it with the start of the text of the first (after the
paragraph number); groff mm's does not.
• Cut marks are not supported.
DWB mm supported only seven levels of heading. As a compatible
extension, groff mm supports fourteen, introducing new registers
H8 through H14, and affecting the interpretation of the HF and HP
strings.
Macro, register, and string descriptions in this page frequently
mention each other; most cross references are to macros. Where a
register or string is referenced, its type is explicitly
identified. mm's macro names are usually in full capitals;
registers and strings tend to have mixed-case names.
Document styles
groff mm offers three different frameworks for document
organization. COVER/COVEND is a flexible means of preparing any
document requiring a cover page. LT/LO aids preparation of
typical Anglophone correspondence (business letters, for
example). The MT memorandum type mechanism implements a group of
formal styles historically used by AT&T Bell Laboratories. Your
document can select at most one of these approaches; when used,
each disables the others.
Localization
groff mm is designed to be easily localized. For languages other
than English, strings that can appear in output are collected in
the file /usr/local/share/groff/1.23.0/tmac/xx.tmac, where xx is
an ISO 639 two-letter language identifier. Localization packages
should be loaded after mm; for example, you might format a
Swedish mm document with the command “groff -mm -msv”.
This package can also be localized by site or territory; for
example, /usr/local/share/groff/1.23.0/tmac/mse.tmac illustrates
how to adapt the output to a national standard using its ISO 3166
territory code. Such a package can define a string that causes a
macro file /usr/local/share/groff/1.23.0/tmac/mm/territory_locale
to be loaded at package initialization. If this mechanism is not
used, /usr/local/share/groff/1.23.0/tmac/mm/locale is loaded
instead. No diagnostic is produced if these files do not exist.
Registers and strings
Much mm behavior can be configured by registers and strings. A
register is assigned with the nr request.
.nr ident [±]n [i]
ident is the name of the register, and n is the value to be
assigned. n can be prefixed with a plus or minus sign if
incrementation or decrementation (respectively) of the register's
existing value by n is desired. 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 is
automatically modified 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.
Strings are defined 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. Strings are
interpolated 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
In groff mm, the fonts (or rather, font styles) R (roman),
I (italic), and B (bold) are mounted at font positions 1, 2,
and 3, respectively. Internally, font positions are used for
backward compatibility. From a practical point of view, it
doesn't make a big difference—a different font family can still
be selected by invoking groff's fam request or using its -f
command-line option. On the other hand, if you want to replace
just, for example, font I with Zapf Chancery Medium italic
(available on groff's pdf and ps output devices), you have to use
the fp request, replacing the font at position 2 with
“.fp 2 ZCMI”). Because the cover sheet, memorandum type, and
refer(1) integration macros explicitly request fonts named B, I,
and R, you will also need to remap these font names with the ftr
request, for instance with “.ftr I ZCMI”.
Macros
Where a macro accepts an argument expressing a measurement,
horizontal ones (such as indentation) are by default reckoned in
ens, and vertical ones (such as spacing around a display) are
reckoned in vees. Use an explicit scaling unit for clarity and
predictable behavior.
An explicitly empty argument may be specified with a pair of
double quotes; to call a macro XX with an empty second argument
but non-empty first and third ones, you could input the
following.
.XX foo "" baz
Macro names longer than two characters are GNU extensions; some
shorter names were not part of DWB mm's published interface but
are documented aspects of groff mm.
)E level text
Add heading text text to the table of contents with level,
which is either 0 or in the range 1 to 7. See also H.
This undocumented DWB mm macro is exposed by groff mm to
enable customized tables of contents.
1C [1] Format page text in one column. The page is broken. A 1
argument suppresses this break; its use may cause body
text and a pending footnote to overprint. See 2C, MC, and
NCOL.
2C Begin two-column formatting. This is a special case of
MC. See 1C and NCOL.
AE Abstract end; stop collecting abstract text. See AS.
AF [org-name]
Specify a memorandum's organizational affiliation. At
most one can be declared; org-name is used by memorandum
types and available to cover sheets. AF terminates a
document title started with TL, and can be called without
an argument for that purpose. See MT and COVER.
AL [type [text-indent [1]]]
Begin an auto-incrementing numbered list. Item numbers
start at one. The type argument assigns the register
format (see above) of the list item enumerators. The
default is 1. An explicitly empty type also indicates the
default. 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 any pre-item space. 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 is
incremented (or 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 id. 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 id n [title]
As APP, but increment the page number by n. Use this
macro to “skip pages” when diagrams or other materials not
formatted by troff are included in appendices.
AS [placement [indentation]]
Abstract start; begin collecting abstract. Input up to
the next AE call is included in the abstract. placement
influences the location of the abstract on the cover sheet
of a memorandum (see MT). COVER, by contrast, ignores
placement by default, but can be customized to interpret
it.
[1mplacement[24m Effect
0 The abstract appears on page 1 and cover sheet
if the document is a “released paper”
memorandum (“.MT 4”); otherwise, it appears on
page 1 without a cover sheet.
1 The abstract appears only on the cover sheet
(“.MT 4” only).
An abstract does not appear at all in external letters
(“.MT 5”). A placement of 2 was supported by DWB mm but
is not by groff mm.
A second argument increases the indentation by indentation
and reduces the line length by twice this amount. A
scaling unit of ens is assumed. The default is 0.
AT title ...
Specify author's title(s). If present, AT must appear
just after the corresponding author's AU. Each title
occupies an output line beneath the author's name in the
signature block used by LT letters (see SG) and in MT
memoranda. The ms cover sheet style also uses it.
AU [name [initials [loc [dept [ext [room [arg1 [arg2 [arg3]]]]]]]]]
Specify author. AU terminates a document title started
with TL, and can be called without arguments for that
purpose. Author information is used by cover sheets, MT
memoranda, and SG. Further arguments comprise initials,
location, department, telephone extension, room number or
name, and up to three additional items. Repeat AU to
identify multiple authors.
Use WA/WE instead to identify the author for documents
employing LT.
AV [name [1]]
Format approval lines for a handwritten signature and
date. Two horizontal rules are drawn, with the specified
name and the text of the string Letdate, respectively,
beneath them. Above these rules, the text in the string
Letapp is formatted; a second argument replaces this text
with one vee of vertical space. See LT.
AVL [name]
As AV, but the date, date rule, and approval notation
Letapp are omitted.
B [bold-text [previous-font-text]] ...
Join bold-text in boldface with previous-font-text in the
previous font, without space between the arguments. If no
arguments, switch font to bold style.
B1 Begin boxed static display. The text is indented by 1n,
and the line length reduced by 2n. See DS. This is a GNU
extension.
B2 End boxed static display. See DS. This is a GNU
extension.
BE End bottom block; see BS.
BI [bold-text [italic-text]] ...
Join bold-text in boldface with italic-text in italics,
without space between the arguments.
BL [text-indent [1]]
Begin bulleted list. Items are prefixed with a bullet and
a space. 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 any pre-item space.
Use LI to declare list items, and LE to end the list.
BR [bold-text [roman-text]] ...
Join bold-text in boldface with roman-text in roman style,
without space between the arguments.
BS Begin bottom block. Input is collected until BE is
called, and output between the footnote area and footer of
each page.
BVL [text-indent [mark-indent [1]]]
Begin broken variable-item (or “tagged”) list. Each item
is expected to 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 any pre-item space.
Use LI to declare list items, and LE to end the list.
COVER [style]
Begin a cover page description. COVER must appear before
the body text (or main matter) of a document. The
argument style is used to construct the file name /usr/
local/share/groff/1.23.0/tmac/mm/style.cov and load it
with the mso request. The default style is ms; the ms.cov
file prepares a cover page resembling that of the ms
package. A .cov file must define a COVEND macro, which a
document must call at the end of the cover description.
Use cover description macros in the following order; only
TL and AU are required.
.COVER
.TL
.AF
.AU
.AT
.AS
.AE
.COVEND
COVEND End the cover description.
DE End static or floating display begun with DS or DF.
DF [format [fill [right-indentation]]]
Begin floating display. A floating display is saved in a
queue and output in the order entered. Arguments are
handled as in DS. Floating displays cannot be nested.
Placement of floating displays is controlled by the
registers De and Df.
DL [text-indent [1]]
Begin dashed list. Items are prefixed with an em dash and
a space. 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 any pre-item space.
Use LI to declare list items, and LE to end the list.
DS [format [fill [right-indentation]]]
Begin static display. Input until DE is called is
collected into a display. The display is output on a
single page unless it is taller than the height of the
page. DS can be nested (contrast with DF).
[1mformat[24m Effect
none Do not indent the display.
L Do not indent the display.
I Indent text by \n[Si].
C Center each line.
CB Center the whole display as a block.
R Right-align each line.
RB Right-align the whole display as a block.
The values “L”, “I”, “C”, and “CB” can also be specified
as “0”, “1”, “2”, and “3”, respectively, for compatibility
with DWB mm.
[1mfill[24m Effect
none Disable filling.
N Disable filling.
F Enable filling.
“N” and “F” can also be specified as “0” and “1”,
respectively, for compatibility with DWB mm.
A third argument reduces the line length by right-
indentation.
mm normally places vertical space before and after the
display. Set register Ds to “0” to suppress it.
EC [title [override [flag [ref-name]]]]
Caption an equation. A caption comprises the string Liec
followed by an automatically incrementing counter stored
in the register Ec, punctuation configured by the register
Of, then title (if any). Use the af request to configure
Ec's number format. override and flag alter the equation
number as follows. Omitting flag and specifying 0 in its
place are equivalent.
[1mflag[24m Effect
0 Prefix number with override.
1 Suffix number with override.
2 Replace number with override.
Equation captions are centered irrespective of the
alignment of any enclosing display.
Specifying ref-name stores the equation number as if by
“.SETR ref-name \n[Ec]”. Recognition of this argument is
a GNU extension.
Captioned equations are listed in a table of contents (see
TC) if the Boolean register Le is true. Such a list uses
the string Le as a heading.
EF ["'left'center'right'"]
Define the even-page footer, which is formatted just above
the normal page footer on even-numbered pages. See PF.
EF defines the string EOPef.
EH ["'left'center'right'"]
Define the even-page header, which is formatted just below
the normal page header on even-numbered pages. See PH.
EH defines the string TPeh.
EN End mathematical expression input preprocessed by eqn(1);
see EQ.
EOP If defined, this macro is called in lieu of normal page
footer layout. Headers and footers are formatted in a
separate environment. See TP.
Strings available to EOP
─────────────────────────
EOPf argument to PF
EOPef argument to EF
EOPof argument to OF
EPIC [-L] width height [name]
Draw a box with the given width and height. The text name
(or default text) is formatted inside the box; no attempt
is made to size the box to fit the text. An application
of this macro is to indicate the placement of an image to
be determined later, or externally composited in
postprocessing. -L as the first argument left-aligns the
box; the default is to center it. See PIC.
EQ [label]
Start mathematical expression input preprocessed by
eqn(1). EQ and EN macro calls bracket an equation region.
Such regions must be contained in displays (DS/DE), except
when the region is used only to configure eqn and not to
produce output. If present, label appears aligned to the
right and centered vertically within the display; see
register Eq. If multiple eqn regions occur within a
display, only the last label (if any) is used.
EX [title [override [flag [ref-name]]]]
Caption an exhibit. Arguments are handled analogously to
EC. The register Ex is the exhibit counter. The string
Liex precedes the exhibit number and any title. Exhibit
captions are centered irrespective of the alignment of any
enclosing display.
Captioned exhibits are listed in a table of contents (see
TC) if the Boolean register Lx is true. Such a list uses
the string Lx as a heading.
FC [closing-text]
Output the string Letfc, or the specified closing-text, as
the formal closing of a letter or memorandum. See LT and
MT.
FD [arg [1]]
Configure display of footnotes. The first argument
encodes enablement of automatic hyphenation, adjustment to
both margins, indentation of footnote text, and left- vs.
right-alignment of the footnote label within the space
allocated for it.
[1marg[24m Hyphenate? Adjust? Indent? Label alignment
0 no yes yes left
1 yes yes yes left
2 no no yes left
3 yes no yes left
4 no yes no left
5 yes yes no left
6 no no no left
7 yes no no left
8 no yes yes right
9 yes yes yes right
10 no no yes right
11 yes no yes right
An arg greater than 11 is treated as 0. mm's default
is 0.
A second argument resets footnote numbering when a first-
level heading is encountered. See FS.
FE End footnote; see FS.
FG [title [override [flag [ref-name]]]]
Caption a figure. Arguments are handled analogously to
EC. The register Fg is the figure counter. The string
Lifg precedes the figure number and any title. Figure
captions are centered irrespective of the alignment of any
enclosing display.
Captioned figures are listed in a table of contents (see
TC) if the Boolean register Lf is true. Such a list uses
the string Lf as a heading.
FS [label]
Start footnote. Input until FE is called is collected
into a footnote. By default, footnotes are automatically
numbered starting at 1; the number is available in
register :p and, with a trailing period, in string F.
This string precedes the footnote text at the bottom of
the column or page. Footnotes are vertically separated by
the product of registers Fs and Lsp. In groff mm,
footnotes may be used in displays.
A label argument replaces the contents of the string F; it
need not be numeric. In this event, the footnote marker
in the body text must be explicitly written.
GETHN ref-name [string]
Interpolate ref-name's heading number, or, if string is
specified, store it there. See INITR.
GETPN ref-name [string]
Interpolate ref-name's page number, or, if string is
specified, store it there. See INITR.
GETR ref-name
Retrieve location data for reference ref-name and
interpolate string Qrf as a cross reference to it. See
INITR.
GETST ref-name [string]
Interpolate ref-name's auxiliary reference datum, or, if
string is specified, store it there. See INITR.
H level [title [suffix]]
Set a numbered section heading at level. mm produces
numbered heading marks of the form a.b.c..., with up to
fourteen levels of nesting. Each level's number increases
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 highly configurable. Several
registers set a threshold, where heading levels at or
below the threshold value are handled in one way, and
those above it another. For example, the title of a
heading level within the threshold of register Cl is
included in the table of contents (see TC).
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 below
which vertical space follows it. If the heading level is
above both of these, a run-in heading is produced;
paragraph text follows on the same output line.
Otherwise, register Hi configures the indentation of text
after headings. Threshold register Hc enables the
centering of headings; a heading level within both of the
Hb and Hc thresholds is centered.
Heading typeface and size. The fonts used for heading
numbers and titles at each level are configured by the HF
string. The string HP likewise assigns a type size to
each heading level. The vertical spacing used by headings
may be controlled by the user-definable macros HX and/or
HZ.
Heading number format. Registers named H1 through H14
store counters for each heading level. Their values are
printed using Arabic numerals by default; see HM. The
heading levels are catenated with dots for formatting; to
typeset only the deepest, set the Ht register. Heading
numbers are not suffixed with a trailing dot except when
only the first level is output; to omit a dot in this case
as well, clear the H1dot register.
Customizing heading behavior. mm calls hook macros to
enable further customization of headings. (DWB mm termed
them “exits”.) Hooks 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). 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. The default is “\%”. Resets
to the default if called without argument.
HM [arg1 [arg2 [... [arg14]]]]
Set the heading mark style. Each argument assigns the
specified register format (see above) to the corresponding
heading level. The default is 1 for all levels. An
explicitly empty argument also indicates the default.
HU title [suffix]
Set an unnumbered section heading with title and, as a GNU
extension, an optional suffix. The heading is treated as
a numbered heading of the level stored in register Hu, but
no heading number is output; see H.
I [italic-text [previous-font-text]] ...
Join italic-text in italics with previous-font-text in the
previous font, without space between the arguments. If no
arguments, switch font to italic style.
IA [recipient-name [title]]
Specify the inside address in a letter. Input is
collected into the inside address until IE is called, and
then output. You can specify multiple recipients with
empty IA/IE pairs; only the last address is used. The
arguments give each recipient a name and title. See LT.
IB [italic-text [bold-text]] ...
Join italic-text in italics with bold-text in boldface,
without space between the arguments.
IE End the inside address begun with IA.
IND argument ...
If the Boolean register Ref is true, write an index entry
as a specially prepared roff comment to the standard error
stream, with each argument separated from its predecessor
by a tab character. The entry's location information is
arranged as configured by the most recent INITI call.
INDP Output the index set up by INITI and populated by IND
calls. By default, INDP calls SK and writes a centered
caption interpolating the string Index. It then disables
filling and calls 2C; afterward, it restores filling and
calls 1C.
Define macros to customize this behavior. INDP calls
TXIND before the caption, TYIND instead of writing the
caption, and TZIND after formatting the index.
INITI location-type file-name [macro]
Initialize groff mm's indexing system. Argument location-
type selects how the location of each index entry is
reported. file-name populates an internal string used
later by INDP.
[1mlocation-type[24m Entry format
N page number
H heading mark
B page number, tab character, heading mark
If macro is specified, it is called for each index entry
with the arguments given to IND.
INITR file-name-prefix
Initialize the cross reference macros. Cross references
are written to the standard error stream, which should be
redirected into a file named file-name-prefix.qrf.
mmroff(1) handles this and the two formatting passes it
requires. The first pass identifies cross references; the
second includes them. See SETR, GETHN, GETPN, and GETST.
IR [italic-text [roman-text]] ...
Join italic-text in italics with roman-text in roman
style, without space between the arguments.
ISODATE [0]
Use ISO 8601 format for the date string DT used by some
cover sheet and memorandum types; that is, YYYY-MM-DD.
Must be called before ND to be effective. If given an
argument of 0, the traditional date format for the groff
locale is used; this is also the default.
LB text-indent mark-indent pad type [mark [pre-item-space [pre-
list-space]]]
Begin list. The macros AL, BL, BVL, DL, ML, RL, and VL
call LB in various ways; they are simpler to use and may
be preferred if they suit the desired purpose.
mm tracks the nesting level of lists; the outermost is 0.
Each list item is indented by text-indent, and its mark by
mark-indent. The mark is normally left-aligned. If pad
is greater than zero, it overrides mark-indent such that
pad ens of space follow the mark. type determines the
mark's format.
[1mtype[24m Output for a mark “x”
1 x.
2 x)
3 (x)
4 [x]
5 <x>
6 {x}
If type is 0 and mark is unspecified, mm sets items with a
hanging indent. Otherwise, mark is interpreted as a
string defining the mark. If type is greater than zero,
items are automatically numbered and mark is interpreted
as a register format. The default type is 0.
The last two arguments manage vertical space. Unless a
list's nesting level is greater than the value of register
Ls, its items are preceded by pre-item-space multiplied by
the register Lsp; the default is 1. LB precedes the list
by pre-list-space multiplied by the register Lsp; the
default is 0.
LC [list-level]
Clear list state. Active lists are terminated as if with
LE, either all (the default) or only those from the
current level down to list-level if specified. H calls LC
automatically.
LE [1] End list. The current list is terminated. An argument
of 1 causes vertical space in the amount of register Lsp
to follow the list.
LI [mark [item-mark-mode]]
Begin a list item. Input is collected into a list item
until the current list is terminated or LI is called
again. By default, the item's text is preceded by any
mark configured by the current list. If only mark is
specified, it replaces the configured mark. A second
argument prefixes mark to the configured mark; an item-
mark-mode value of 1 places an unbreakable space after
mark, while a value of 2 does not (rendering the two
adjacent). Also see register Limsp.
LO option [value]
Specify letter options; see LT. Standard options are as
follows. See IA regarding the inside address and string
DT regarding the date.
[1moption[24m 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 may be omitted.
Letter options specified with LO add further annotations,
which are extensible; see section “Internals” below.
[1mstyle[24m Description
BL Blocked: the writer's address, date, formal
closing, and signature are indented to the center
of the line. Everything else is left-aligned.
SB Semi-blocked: as BL, but the first line of each
paragraph is indented by \n[Pi] ens.
FB Fully blocked: everything is left-aligned.
SP Simplified: as FB, but a formal closing is
omitted, and the signature is set in full
capitals.
MC column-width [gutter-width]
Begin multi-column layout. groff mm creates as many
columns of column-width as the line length will permit.
gutter-width is the interior spacing between columns. It
defaults to column-width/15. 1C returns to single-column
layout. MC is a GNU extension. 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 set by 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 any
pre-item space. Use LI to declare list items, and LE to
end the list.
MT [type [addressee]]
Select memorandum type. These correspond to formats used
by AT&T Bell Laboratories, where the mm package was
initially developed, affecting the document layout. Some
of these included a cover page with a caption categorizing
the document. groff mm uses type to construct the file
name /usr/local/share/groff/1.23.0/tmac/mm/type.MT and
load it with the mso request. Memorandum types 0 to 5 are
supported; any other value of type is mapped to type 6.
Omitting type implies 1. addressee sets a string
analogous to one used by AT&T cover sheet macros that are
not implemented in groff mm.
[1mtype[24m Description
0 normal memorandum; no caption
1 captioned “TECHNICAL MEMORANDUM”
2 captioned “INTERNAL MEMORANDUM”
3 captioned “ADMINISTRATIVE MEMORANDUM”
4 released paper
5 external letter
string captioned string
See COVER for a more flexible cover sheet mechanism.
MOVE y-pos [x-pos [line-length]]
Move to a position, setting page offset to x-pos. If
line-length is not given, the difference between current
and new page offset is used. Use PGFORM without arguments
to return to normal.
MULB cw1 space1 [cw2 space2] ... cwn
Begin alternative multi-column mode. All column widths
must be specified, as must the amount of space between
each column pair. The arguments' default scaling unit is
n. MULB uses a diversion and operates in a separate
environment.
MULN Begin next column in alternative column mode.
MULE End alternative multi-column mode and emit the columns.
NCOL Move to the start of the next column (only when using 2C
or MC). Contrast with MULN.
ND [arg]
Set the document's date. mm does not interpret arg; it
can be a revision identifier (or empty).
NE End notation begun with NS; filling is enabled.
nP [ type] As P, but set a paragraph number in the form x.yy,
where x is the number of the second heading level, and yy
increments with each nP call; its value is not reset when
the second-level heading number changes. mm uses a
register format of “00” for yy.
NS [code [1]]
Declare notations, typically for letters or memoranda, of
the type specified by code. The text corresponding to
code is output, and filling is disabled until NE is
called. Typically, a list of names or attachments lies
within NS/NE. If code is absent or does not match one of
the values listed under the Letns string description
below, each line of notations is formatted as “Copy (line)
to”. If a second argument, conventionally 1, is given,
code becomes the entire notation and NE is not necessary.
In groff mm, you can set up further notations to be
recognized by NS; see the strings Letns and Letnsdef
below.
OF ["'left'center'right'"]
Define the odd-page footer, which is formatted just above
the normal page footer on odd-numbered pages. See PF. OF
defines the string EOPof.
OH ["'left'center'right'"]
Define the odd-page header, which is formatted just below
the normal page header on odd-numbered pages. See PH. OH
defines the string TPoh.
OP Ensure that subsequent text is formatted at the top of an
odd-numbered page; no page break is performed if the
drawing position is already there.
P [type]
Begin new paragraph. If type is missing or 0, P sets the
paragraph fully left-aligned. A type of 1 idents the
first line by \[Pi] ens. Set the register Pt to select a
default paragraph indentation style. The register Ps
determines the amount of vertical space between
paragraphs.
To set a paragraph with a hanging indent, use VL with the
desired indentation as the argument and LI (with no
argument).
PE End picture input preprocessed by pic(1); see PS.
PF ["'left'center'right'"]
Define the page footer. The footer is formatted at the
bottom of each page; the argument is otherwise as
described in PH. PF defines the string EOPf. See EF, OF,
and EOP.
PGFORM [linelength [pagelength [pageoffset [1]]]]
Set line length, page length, and/or page offset. This
macro can be used for letterheads and similar. It is
normally the first macro call in a file, though it is not
necessary. PGFORM can be used without arguments to reset
everything after a MOVE call. A line break is done unless
the fourth argument is given. This can be used to avoid
the page number on the first page while setting new width
and length. (It seems as if this macro sometimes doesn't
work too well. Use the command-line arguments to change
line length, page length, and page offset instead.)
PGNH Suppress header on the next page. This macro must be
called before any macros that produce output to affect the
layout of the first page.
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 (assuming a scaling unit of m). By default, the
picture is left-aligned. Optional width and height
arguments resize the picture. Use of this macro requires
two-pass processing; see INITR and mmroff(1).
PS Start picture input preprocessed by pic(1).
PY As PE , but with “flyback”, returning the drawing position
to where it was prior to the picture. This is a GNU
extension.
R [roman-text [previous-font-text]] ...
Join roman-text in roman style with previous-font-text in
the previous font, without space between the arguments.
If no arguments, switch font to roman style.
RB [roman-text [bold-text]] ...
Join roman-text in roman style with bold-text in boldface,
without space between the arguments.
RD [prompt [div [string]]]
Read from standard input stream into a diversion and/or
string. The text is saved in a diversion named div.
Interpolate the saved text by calling its name like a
macro. If string is present, the input is also stored in
a string of that name.
RF Reference end. Ends a reference definition and returns to
normal processing. See RS.
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 reference list. Each item is preceded by an
automatically incremented number between square brackets;
compare AL. text-indent changes the default indentation.
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 any pre-item space.
Use LI to declare list items, and LE to end the list.
RP [suppress-counter-reset [page-ejection-policy]]
Format a reference page, 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 Rpe
configures this behavior, and a second argument overrides
its value. TC calls RP automatically if references have
accumulated.
References are list items, and thus are vertically
separated (see LB). Setting register Ls to 0 suppresses
this spacing. The string Rp contains the reference page
caption.
RS [reference-string]
Begin an automatically numbered reference definition. By
default, references are numbered starting at 1; the number
is available in register :R. Interpolate the string Rf
where the reference mark should be and write the reference
between RS/RF on an input line after the reference mark.
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 indicates the current value, and D requests the
default. An empty or omitted argument is treated 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; 1 is assumed by mm. Adjustment can be
temporarily suspended with the na request. When the H or
HU macros are used to format a heading, or when SA is
called without a mode argument, the default adjustment is
restored.
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]]
Write a signature line. Authors' names are placed after
the formal closing; see LT (one author only) and MT. For
memoranda, reference data (the location, department, and
initials specified in an AU call), followed by any arg,
are written at the left margin preceding the last author's
name, or preceding the first if a second argument is
present and the memorandum type supports it. See section
“Internals” below.
SK [n] Skip n pages. If n is 0 or omitted, the page is broken
unless the drawing position is already at the top of a
page. Otherwise, n pages, blank except for any headers
and footers, are printed.
SM text [post]
SM pre text post
Format text at a smaller type size, joined with any
specified pre and post at normal size.
SP [distance]
Space vertically by distance. Multiple SP calls in
sequence produces only the largest of the specified
distances.
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 to SP to overcome this restriction.
TAB Reset tab stops to every 5 ens.
TB [title [override [flag [ref-name]]]]
Caption a table. Arguments are handled analogously to EC.
The register Tb is the table counter. The string Litb
precedes the table number and any title. Table captions
are centered irrespective of the alignment of any
enclosing display.
Captioned tables are listed in a table of contents (see
TC) if the Boolean register Lt is true. Such a list uses
the string Lt as a heading.
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 Licon, centered at the top. The entries
follow after three vees of space. Each entry is a saved
section (number and) heading title (see the Cl register),
along with its associated page number. By default, an
entry is indented by an amount corresponding to its
heading level and the maximum heading length encountered
at that heading level; if defined, the string Ci overrides
these indentations. Entries at heading levels up to and
including slevel are preceded by spacing vees of space.
Entries at heading levels up to and including tlevel are
followed by a leader and a right-aligned page number. If
the Boolean-valued tab argument is true, the leader is
replaced with horizontal motion in the same amount. For
entries above heading level tlevel, the page number
follows the heading text after a word space. Each
argument h1...h5 appears in order on its own line,
centered, above the contents caption. Page numbering
restarts at 1, in register format “i”. If the Oc register
is true, numbering of these pages is suppressed.
If TC is called with at most four arguments, it calls the
user-defined macro TX (if defined) prior to formatting the
contents caption, and TY (if defined) instead of
formatting the contents caption.
Analogous handling of lists of figures, tables, equations,
and exhibits is achieved by defining TXxx and TYxx macros,
where xx is “FG”, “TB”, “EC”, or “EX”, respectively.
Similarly, the strings Lifg, Litb, Liex, and Liec
determine captions for their respective lists.
TE Table end. See TS.
TH End table heading. It is repeated after page breaks
within a table. See TS. The N argument supported by DWB
mm is not implemented by groff mm.
TL [charging-case-number [filing-case-number]]
Begin document title. Input is collected into the title
until AF or AU is called, and output as directed by the
cover page. charging-case-number and filing-case-number
are saved for use in memorandum types 0 and 5. See MT.
TM number ...
Declare technical memorandum number(s) used by MT.
TP If defined, this macro is called in lieu of normal page
header layout. Headers and footers are formatted in a
separate environment. See EOP.
Strings available to TP
────────────────────────
TPh argument to PH
TPeh argument to EH
TPoh argument to OH
TS [H] Table start. Argument “H” tells mm that the table has a
heading. See TE, TH, and tbl(1).
VERBON [format [type-size [font]]]
Begin verbatim display, where characters have equal width.
format controls several parameters. Add up the values of
desired features; the default is 0. On typesetting
devices, further arguments configure the type-size in
scaled points, and the face (font); the default is CR
(Courier roman).
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. If the mark is wider than
mark-indent, one space separates it from subsequent text;
contrast BVL. text-indent sets the indentation of the
text, and mark-indent the distance from the current list
indentation 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 any
pre-item space. Use LI to declare list items, and LE to
end the list.
VM [-T] [top [bottom]]
Vertical margin. Increase the top and bottom margin by
top and bottom, respectively. If option -T is specified,
set those margins to top and bottom. If no argument is
given, reset the margin to zero, or to the default (“7v
5v”) if -T is used. It is highly recommended that macros
TP and/or EOP are defined if using -T and setting top
and/or bottom margin to less than the default. This
undocumented DWB mm macro is exposed by groff mm to
increase user control of page layout.
WA [writer's-name [title]]
Specify the writer(s) of an LT letter. Input is collected
into the writer's address until WA is called, and then
output. You can specify multiple writers with empty WA/WE
pairs; only the last address is used. The arguments give
each writer a name and title.
WC [format ...]
Control width of footnotes and displays.
[1mformat[24m Effect
N equivalent to “-WF -FF -WD” (default)
WF set footnotes at full line length, even in two-
column mode
-WF set footnotes using column line length
FF apply width of first footnote to encountered to
subsequent ones
-FF footnote width determined by WF and -WF
WD set displays at full line length, even in two-
column mode
-WD set displays using column line length
WE End the writer's address begun with WA.
Strings
Many mm strings interpolate predefined, localizable text. These
are presented in quotation marks.
Abstract
“ABSTRACT”
App “APPENDIX”
Apptxt stores the title argument to the last APP call.
BU interpolates a bullet (see BL).
Ci is a list of indentation amounts to use for table of
contents heading levels, overriding their automatic
computation. Each word must be a horizontal measurement
(like “1i”) and is mapped one-to-one to heading levels 1,
2, and so on.
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 see ISODATE and register Iso.
EM interpolates —, an em dash.
F interpolates an automatically numbered footnote marker;
the number is used by the next FS call without an
argument. In troff mode, the marker is superscripted; in
nroff mode, it is surrounded by square brackets.
H1txt stores the text of the current heading; H and HU update
it, as does TC when processing table of contents entries
and captions of displayed figures, tables, equations, and
exhibits.
HF assigns font identifiers, separated by spaces, to heading
levels in one-to-one correspondence. Each identifier may
be a font mounting position, font name, or style name.
Omitted values are assumed to be 1. The default is “2 2 2
2 2 2 2 2 2 2 2 2 2 2”, which places all headings in
italics. DWB mm's default was “3 3 2 2 2 2 2”.
HP assigns type sizes, separated by spaces, to heading levels
in one-to-one correspondence. Each size is interpreted in
scaled points; zero values are translated to 10. Omitted
values are assumed to be 0 (and are translated
accordingly). The default is “0 0 0 0 0 0 0 0 0 0 0 0 0
0”.
Index “INDEX”
Le “LIST OF EQUATIONS”
Letfc “Yours very truly,” (see FC)
Letapp “APPROVED:” (see AV)
LetAT “ATTENTION:” (see LO)
LetCN “CONFIDENTIAL” (see LO)
Letdate
“Date” (see AV)
Letns is a group of strings structuring the notations produced
by NS. If the code argument to NS has no corresponding
string, the notation is included between parentheses,
prefixed with Letns!copy, and suffixed with Letns!to.
Observe the spaces after “Copy” and before “to”.
NS code String Contents
0 Letns!0 Copy to
1 Letns!1 Copy (with att.) to
2 Letns!2 Copy (without att.) to
3 Letns!3 Att.
4 Letns!4 Atts.
5 Letns!5 Enc.
6 Letns!6 Encs.
7 Letns!7 Under separate cover
8 Letns!8 Letter to
9 Letns!9 Memorandum to
10 Letns!10 Copy (with atts.) to
11 Letns!11 Copy (without atts.) to
12 Letns!12 Abstract Only to
13 Letns!13 Complete Memorandum to
14 Letns!14 CC
— Letns!copy Copy (with trailing space)
— Letns!to to (note leading space)
Letnsdef
selects the notation format when NS is given no argument.
The default is “0”.
LetRN “In reference to:” (see LO)
LetSA “To Whom It May Concern:” (see LO)
LetSJ “SUBJECT:” (see LO)
Lf “LIST OF FIGURES”
Licon “CONTENTS”
Liec “Equation”
Liex “Exhibit”
Lifg “Figure”
Litb “TABLE”
Lt “LIST OF TABLES”
Lx “LIST OF EXHIBITS”
MO1
...
MO12 “January” through “December”
Qrf “See chapter \E*[Qrfh], page \En[Qrfp].”
Rf interpolates an automatically numbered reference mark; the
number is used by the next RS call. In troff mode, the
marker is superscripted; in nroff mode, it is surrounded
by square brackets.
Rp “REFERENCES”
Sm interpolates the service mark sign.
Tcst interpolates an indicator of the TC macro's processing
status. If TC is not operating, it is empty. User-
defined TP or EOP macros might condition page headers or
footers on its contents.
Value Meaning
co Table of contents
fg List of figures
tb List of tables
ec List of equations
ex List of exhibits
ap Appendix
Tm interpolates ™, the trade mark sign.
Verbnm supplies argument(s) to the nm request employed by the
VERBON macro. The default is “1”.
Registers
Default register values, where meaningful, are shown in
parentheses. Many are also marked as Boolean-valued, meaning
that they are considered “true” (on, enabled) when they have a
positive value, and “false” (off, disabled) otherwise.
.mgm indicates that groff mm is in use (Boolean-valued; 1).
:p is an auto-incrementing footnote counter; see FS.
:R is an auto-incrementing reference counter; see RS.
Aph formats an appendix heading (and title, if supplied); see
APP (Boolean-valued; 1).
Au includes supplemental author information (the third and
subsequent arguments to AU) in memorandum “from”
information; see COVER and MT (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 (2). 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.
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.
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 if possible; see H
(0).
Eq aligns an equation label to the left of a display instead
of the right (Boolean-valued; 0).
Ex is an auto-incrementing exhibit counter; see EX.
Fg is an auto-incrementing figure counter; see FG.
Fs is multiplied by register Lsp to vertically separate
footnotes; see FS (1).
H1
...
H14 are auto-incrementing counters corresponding to each
heading level; see H.
H1dot appends a period to the number of a level one heading; see
H (Boolean-valued; 1).
H1h is a copy of register H1, but it is incremented just
before a page break. This can be useful in user-defined
macros; see H and HX.
Hb sets the threshold for breaking the line after formatting
a heading. Text after headings at levels above this value
are set on the same output line if possible; 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 configures the indentation of text 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 at or below 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
lowest when the heading 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).
Iso configures the use of ISO 8601 date format if specified
(with any value) on the command line; see ISODATE. The
default is determined by localization files.
L defines the page length for the document, and must be set
from the command line. A scaling unit should be appended.
The default is that of the selected groff output device.
Le
Lf
Lt
Lx configure the report of lists of equation, figure, table,
and exhibit captions, respectively, after a table of
contents; see TC (Boolean-valued; Le: 0; Lf, Lt, Lx: 1).
Letwam sets the maximum number of input lines permitted in a
writer's address; see WA and WE (14).
Li configures the amount of indentation in ens applied to
list items; see LI (6).
Limsp inserts a space between the prefix and the mark in
automatically numbered lists; see AL (Boolean-valued; 1).
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 (99).
Lsp configures the base amount of vertical space used for
separation in the document. mm applies this spacing to
many contexts, sometimes with multipliers; see DS, FS, H,
LI, and P (troff devices: 0.5v; nroff devices: 1v).
N configures the header and footer placements used by PH.
The default footer is empty. If “section-page” numbering
is selected, the default header becomes empty and the
default footer becomes “x-y”, where x is is the section
number (the number of the current first-level heading)
and y the page number within the section. The following
values are recognized; for finer control, see PH, PF, EH,
EF, OH, and OF, and registers Sectf and Sectp. Value 5 is
a GNU extension (0).
Value Effect
0 Set header on all pages.
1 Move header to footer on page 1.
2 Omit header on page 1.
3 Use “section-page” numbering style on all pages.
4 Omit header on all pages.
5 Use “section-page” and “section-figure” numbering
style on all pages.
Np causes paragraphs after first-level headings (only) to be
numbered in the format s.p, where s is is the section
number (the number of the current first-level heading) 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
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 amount of indentation in ens applied to the
first line of a paragraph; see P (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 OE 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, DE, or LE
Ref is used internally to control mmroff(1)'s two-pass
approach to index and reference management; see INITI and
RS (Boolean-valued; 0).
Rpe configures the default page ejection policy for reference
pages; see RP (0).
Value Effect
0 Break the page before and after the list of references.
1 Suppress page break after the list.
2 Suppress page break before the list.
3 Suppress page breaks before and after the list.
S defines the type size for the document, and must be set
from the command line. A scaling unit should be appended;
p is typical (10p).
Sectf selects the “section-figure” numbering style. Its default
is 0 unless register N is set to 5 at the command line
(Boolean-valued).
Sectp selects the “section-page” numbering style. Its default
is 0 unless register N is set to 3 or 5 at the command
line (Boolean-valued).
Si configures the amount of display indentation in ens; see
DS (5).
Tb is an auto-incrementing table counter; see TB.
V defines the vertical spacing for the document, and must be
set from the command line. A scaling unit should be
appended; p is typical. The default vertical spacing is
120% of the type size. This register is a GNU extension.
Verbin configures the amount of indentation for verbatim displays
when indentation is selected; see VERBON (5n).
W defines the “width” of the document (that is, the length
of an output line with no indentation); it must be set
from the command line. A scaling unit should be appended.
The default is 6i or assigned by the papersize.tmac
package; see groff_tmac(5).
Internals
The letter macros call further macros depending on the letter
type, with which they are suffixed. It is therefore possible to
define additional letter types, either in the territory-specific
macro file, or as local additions. LT sets the registers Pt and
Pi to 0 and 5, respectively. (DWB mm used a value of 3 for Pi.)
It then calls an initialization macro corresponding to the type.
Define the following macros to support a new letter type.
let@init_type
initializes any registers and other data needed by the
letter type.
let@head_type
formats the letterhead; it is called instead of the usual
page header macro. Its definition should remove the alias
let@header unless the letterhead is desired on subsequent
pages.
let@sg_type name title n is-final [SG-arg ...]
SG calls this macro only for letters; MT memoranda have
their own signature processing. name and title are
specified through WA/WE. n is the index of the 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
This macro is called by FC, and has the formal closing as
the 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
/usr/local/share/groff/1.23.0/tmac/m.tmac
is the groff implementation of the memorandum macros.
/usr/local/share/groff/1.23.0/tmac/mm.tmac
is a wrapper enabling the package to be loaded with the
option “-m mm”.
/usr/local/share/groff/1.23.0/tmac/refer-mm.tmac
implements refer(1) support for mm.
/usr/local/share/groff/1.23.0/tmac/mm/ms.cov
implements an ms-like cover sheet.
/usr/local/share/groff/1.23.0/tmac/mm/0.MT
implements memorandum types 0–3 and 6.
/usr/local/share/groff/1.23.0/tmac/mm/4.MT
implements memorandum type 4.
/usr/local/share/groff/1.23.0/tmac/mm/5.MT
implements memorandum type 5.
/usr/local/share/groff/1.23.0/tmac/mm/locale
performs any (further) desired necessary localization if
present.
Authors
Jörgen Hägg ⟨jh@axis.se⟩ of Lund, Sweden, wrote the GNU version
of the mm macro package based on an early version of groff ms by
James Clark ⟨jjc@jclark.com⟩. Werner Lemberg ⟨wl@gnu.org⟩ and G.
Branden Robinson ⟨g.branden.robinson@gmail.com⟩ revised and
updated it.
See also
MM - A Macro Package for Generating Documents
⟨https://tkurtbond.github.io/troff/mm-all.pdf⟩, the DWB 3.3 mm
manual, introduces the package but does not document GNU
extensions.
Groff: The GNU Implementation of troff, by Trent A. Fisher and
Werner Lemberg, is the primary groff manual. You can browse it
interactively with “info groff”.
groff(1), troff(1), tbl(1), pic(1), eqn(1), refer(1),
groff_mmse(7)
COLOPHON
This page is part of the groff (GNU troff) project. Information
about the project can be found at
⟨http://www.gnu.org/software/groff/⟩. If you have a bug report
for this manual page, see ⟨http://www.gnu.org/software/groff/⟩.
This page was obtained from the project's upstream Git repository
⟨https://git.savannah.gnu.org/git/groff.git⟩ on 2024-06-14. (At
that time, the date of the most recent commit that was found in
the repository was 2024-06-10.) If you discover any rendering
problems in this HTML version of the page, or you believe there
is a better or more up-to-date source for the page, or you have
corrections or improvements to the information in this COLOPHON
(which is not part of the original manual page), send a mail to
man-pages@man7.org