.\" groff -me
.\" nroff -me
.\"
.\" Copyright 1986, 1993
.\"   The Regents of the University of California.  All rights reserved.
.\"
.\" Copyright 1989-2021 Free Software Foundation, Inc.
.\"           2021-2024 G. Branden Robinson
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in
.\"    the documentation and/or other materials provided with the
.\"    distribution.
.\" 3. [Deleted.  See
.\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
.\" 4. Neither the name of the University nor the names of its
.\"    contributors may be used to endorse or promote products derived
.\"    from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	@(#)ref.me	8.2 (Berkeley) 06/01/94
.\"
.\" Modified by jjc@jclark.com and g.branden.robinson@gmail.com for
.\" groff.
.\"UC 7
.if n .po 10n
.nr fi 1n
.nr sx 0
.\"pn 0
.ds MO 1.24.1
.de TL			\" *** title line
.lp
.di XX
..
.ie \n(.g \{\
.de DE
\?\h'|\\n(DIu'\c\?
..
.\}
.el \{\
.de DE
\\\\h'|\\\\n(DIu'\\\\c
..
.\}
.am DE
.br
.di
.in +\\n(DIu
.ti 0
.XX
.rm XX
..
.ds UG groff\" upright "groff" for use outside of running text
.ds UM me\" upright "me"
.ds G \fI\*(UG\fP\"
.ds N \fInroff\fP\"
.ds T \fItroff\fP\"
.ds ME \fI\*(UM\fP\"
.ds MR \f(BI\*(UM\fP Reference Manual\"
.\" Compute an indentation for the macro and string synopses based on
.\" the length of the longest entry.
.nr DI \w'.sh \(+-N T a b c d e f'+2n
.he '\*(MR''%'
.fo ''\f(BIgroff\fP \*(MO''
.de NR
.b "\en\\$1" "\\$2"
..
.de ST
.b "\e*\\$1" "\\$2"
..
.\"sc
.\"eh 'USD:20-%''\-me Reference Manual'
.\"oh '\-me Reference Manual''USD:20-%'
.+c
.ce 20
.sz 14
.b "\*(MR"
.sz
.sp
.i "for \fR\*(UG \*(UM\fP version \*(MO*"
.(f
* based on \fIe.tmac\fP 8.1 from 4.4BSD
.)f
.sp 2
.ul
Eric P. Allman
.sp
.i "Adapted for \fR\*(UG\fP by James Clark and G.\& Branden Robinson"
.ce 0
.sp 4
.pp
This document describes
in terse form
the features
of the \*(ME macro package
for \*G.
Some familiarity with the latter is assumed.
Specifically,
the reader should understand
breaks;
filling;
adjustment;
font selection;
type sizes;
the definition and use of
registers,
strings,
and macros;
and typographical units of measurement:
points, ems, ens, and vees.
For a more casual introduction
to text processing,
refer to
.\" the document \" slack phrasing for widow/orphan control
.q "Writing Papers with \*G using \-\*(ME" .
.pp
Many of the package's rendering parameters
can be adjusted through
registers,
strings,
and macro calls.
Macro arguments are denoted with lowercase letters for
numeric values
(suffixed with a scaling unit if appropriate)
and with uppercase for text arguments.
Default parameter values are shown in square brackets.
The notation
.i \(+-n
indicates a numeric value with an optional leading sign.
Without a sign,
it assigns a value
.i n.
With a sign,
it expresses alteration of an existing value by the amount
.i n.
\*(ME's font registers may be set only to mounting positions.
Position zero tells \*(ME to perform no font change;
the font of the preceding text
is used instead.
Position zero is a
.q pseudo-font ;
that is,
it is interpreted and handled by the macros.
In contrast,
using position zero
may produce unexpected results
in a font selection escape sequence such as
.b \ef0 ,
because those are interpreted directly by \*T.
\*(ME's type size registers support only integral values in points.
Changes to parameters
that affect the layout of the page
(notably page length and vertical margins)
should be done before calling
any paragraphing or sectioning macros.
Normally,
vertical space is suppressed at the top of a page
if no text has yet appeared
(page headers notwithstanding).
.pp
\*G measures distances
in device-specific basic units,
so it is often necessary
to specify measurements with a scaling unit.
For instance,
to set the paragraph indentation
to eight ens,
input
.q ".nr pi 8n" .
.q ".nr pi 8"
makes the paragraph indentation eight basic units,
or 8/72,000 inches on
.i grops,
\*G's PostScript output driver.
.pp
Registers and strings
with names of the form
.b $ \c
.bi x
may be used in expressions and text
but should not be changed.
Macros with names of the form
.b $ \c
.bi x
are
.i hooks,
called internally by \*(ME,
and can be redefined
to alter their function.
This may be a sensitive operation;
look at the macro definition in the
.i e.tmac
file before changing it.
If you don't require a given hook,
(re)define it as empty instead of removing it.
.pp
Objects in \*(ME
follow a rigid naming convention.
To avoid conflict,
any user-defined register,
string,
or macro
names should be single numerals or uppercase letters,
or any longer character sequence
including at least one uppercase letter.\**
.(f
\**
For portability between BSD and \*G \*(ME,
limit names to
two characters,
and avoid names starting with
.b [
(left square bracket).
.)f
The names employed
by any preprocessors in use
should also not be repurposed.
.\" dead-tree pagination
.br
.ne 8v
.sh 1 "Paragraphing"
.TL
.b .lp
.DE
Begin left-aligned paragraph.
Centering,
right-alignment,
and underlining are canceled.
The font is set to
.NR (pf
[1],
the type size
to
.NR (pp
[10p],
and vertical spacing
(text baseline spacing)
to
.NR (tv
[120]%
of the type size.
Vertical space of
.NR (ps
[0.35v]
is inserted
before the paragraph.
The indentation is reset
to
.NR ($i
[0]
plus
.NR (po
[0]
unless the paragraph
is inside a display
(see
.b .ba ).
At least
the first two output lines
of the paragraph
are kept together
on a page.
.TL
.b .pp
.DE
Like
.b .lp ,
but apply a (further) indentation of
.NR (pi
[5n]
to the first output line.
.TL
.b .ip
.i T
.i i
.DE
Like
.b .lp ,
but set the paragraph
with an optional hanging tag
.i T
[empty]
and the remainder indented by
.i i
[\c
.NR (ii
[5n]].
The tag
.i T
is
.q exdented
(the opposite of
.i in dented).
Any spaces in
.i T
must be unbreakable.
If
.i T
does not fit in the space
.i i,
.b .ip
breaks the line after
.i T .
.TL
.b .np
.DE
Like
.b .ip ,
but tag the paragraph with a number in parentheses,
starting at 1.
Each subsequent
.b .np
call increments it.
The paragraph number is stored in
.NR ($p
and reset to 1 by
.b .lp ,
.b .pp ,
.b .bu ,
.b .sh ,
and
.b .sx .
The indentation amount is not configurable.
.TL
.b .bu
.DE
Like
.b .ip ,
except that the tag is a bullet (\(bu).
No vertical space is inserted
between adjacent bulleted paragraphs,
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
enabling the construction of compact itemized lists.
The indentation amount is not configurable.
.sh 1 "Sectioning"
.pp
Numbered sections
are similar to paragraphs
except that a
section number of the form
.q 1.2.3
is automatically
generated for each.
\*(ME supports up to six levels of sectioning;
any given section has a
.i depth
that determines
the quantity of components
(separated by dots)
shown in its section number.
Unnumbered section headings are similar,
except that no number is prefixed
to the section title.
.TL
.b .sh
.i \(+-n
.i T
.i "a b c d e f"
.DE
Begin section with numbered heading
of depth
.i \(+-n
[+0]
and optional title
.i T
[empty].
Vertical space of
.NR (ss
[1v]
precedes the heading.
The components
of the section number
are maintained in
.NR ($1
through
.NR ($6 ;
combined,
they are available in
.ST ($n .
Automatic section numbering at all depths begins at 1.
The heading is set in font
.NR (sf
[3]
at size
.NR (sp
[10p]
and uses the indentation of its parent depth;
a further indentation of
.NR (so
[0]
is applied only to its output line.
The section number is followed by a period,
after which the typeface is set
to the paragraph font
.NR (pf
at size
.NR (pp
so that content may follow immediately
on the same output line.
.b .sh
ensures that there is enough room
to format the section heading
with the beginning of a paragraph on the same page
(about 3 lines total).
If any of
.i a
through
.i f
[all empty]
is specified,
each component of the section number
is assigned the corresponding argument
instead of being automatically adjusted.
A hyphen
(\c
.q \- )
for a component argument
prevents its alteration.
If
.i T
is an underscore
(\c
.q _ ),
the section depth and numbering are reset,
the base indentation is not,
and nothing is output\(em\c
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
this is useful to automatically
coordinate section numbers with
chapter numbers.
If all components are zero,
no number is output.
.TL
.b .sx
.i \(+-n
.DE
Go to section depth
.i \(+-n
[\-1],
but emit no section heading
and do not increment the section number.
This has the effect of an
.b .lp
call
at the new depth.
.TL
.b .uh
.i T
.DE
Begin unnumbered section.
Like
.b .sh ,
without the section numbering features.
.TL
.b .$p
.i T
.i B
.i n
.DE
Output section heading.
.i T
is the title,
.i B
is the catenated number,
and
.i n
is the depth.
These parameters are not always present;
.b .sh
passes all three,
.b .uh
only the first,
and
.b .sx
all three,
but the first two
are empty.
If
.i n
is present,
the section indentation is set to
.NR (si
times\~\c
.i n .
.TL
.b .$0
.i T
.i B
.i n
.DE
This hook macro,
normally empty,
is called automatically
by
.b .sh
and
.b .uh
after they call
.b .$p ,
and is passed the same arguments.
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
You can define it to,
for instance,
automatically put
each section title
into a table of contents
using
.b .(x
and
.b .)x .
.TL
.b .$ \c
.bi n
.DE
These hook macros
(where
.i n
is an integer 1\(en6)
are called by
.b .$p
just before it outputs
a section heading
of depth
.i n.
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
They could be used
to obtain section depth-dependent spacing.
.sh 1 "Headers, Footers, and Margins"
.ds TP \(aq\,\fIL\/\fP\(aq\,\fIM\/\fP\(aq\,\fIR\/\fP\(aq
.pp
Headers and footers
are together known as
.i titles ;
they have left,
middle,
and right-hand components
.i L,
.i M,
and
.i R,
respectively.
The components are separated
by a
.i delimiter,
shown here as a neutral apostrophe,
but which can be any character
that does not occur in any of the components.
Any defined title is
placed on the page automatically,
set in font
.NR (tf
[3]
at size
.NR (tp
[10p].
Each title definition
applies starting with the
.i next
page;
titles intended for output on the first page
should be defined prior to any sectioning or paragraphing macro calls.
A title
must be quoted
if it contains more than two adjacent spaces
or more than eight spaces total.
.pp
The placement
of titles
is controlled by four registers
initialized to values scaled
with respect to the default type size and vertical spacing.
.NR (hm
[4v]
is the distance from the top of the page
to the top of the header,
.NR (fm
[3v]
that from the bottom of the page
to the bottom of the footer,
.NR (tm
[7v]
that from the top of the page
to the top of the text,
and
.NR (bm
[6v]
that from the bottom of the page
to the (nominal) bottom of the text.
.pp
\*(ME uses \*T's environment 0 for body text,
1 for keeps
(see below),
and 2 for titles.
The default line length is two inches less than the page width
(e.g.,
6.5i on U.S.\& letter paper).
The default page offset
(left margin)
is determined by the output device;
it is typically 1.0i on typesetters and 0 on terminals.
.TL
.b .xl
.i \(+-n
.DE
Set line length to
.i n
[see above]
only in the current environment.
.TL
.b .ll
.i \(+-n
.DE
Set line length to
to
.i n
[see above]
in all environments used by \*(ME,\**
.(f
\**
\*(ME uses only the three environments of AT&T \*T,
but in GNU \*T,
the user can create additional ones.
.b .ll
works like
.b .xl
for the latter.
.)f
and store it in
.NR ($l .
This macro should not be used
after output has begun,
and particularly not in multi-column layouts.
.TL
.b .he
\*(TP
.DE
Define header
to be placed at the top
of every page.
.TL
.b .fo
\*(TP
.DE
Define footer
to be placed at the bottom
of every page.
.TL
.b .eh
\*(TP
.DE
Define header
to be placed at the top
of every even-numbered page.
.TL
.b .oh
\*(TP
.DE
Define header
to be placed at the top
of every odd-numbered page.
.TL
.b .ef
\*(TP
.DE
Define footer
to be placed at the bottom
of every even-numbered page.
.TL
.b .of
\*(TP
.DE
Define footer
to be placed at the bottom
of every odd-numbered page.
.TL
.b .hx
.DE
Suppress titles
on the next page.
.TL
.b .$h
.DE
Output the page header.
Care should be taken when redefining this macro.
Doing so
can disable the
.b .he ,
.b .fo ,
.b .eh ,
.b .oh ,
.b .ef ,
and
.b .of
macros,
as well as the chapter-style title feature
of
.b .+c .
.TL
.b .$f
.DE
Output the page footer;
the same comments apply
as to
.b .$h .
.TL
.b .$H
.DE
This hook macro is called
at the top of each page
(after the header and any
pending floating keeps are emitted)
and of each column in multi-column mode.
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
Use it for column headings.
.sh 1 "Displays"
.pp
Display macros enclose material;
their names are of the form
.b .( \c
.bi x
and
.b .) \c
.bi x ,
and must be paired.
Not all display types can nest
with themselves or each other.
All displays except centered blocks
and long quotations
are preceded and followed
by an extra
.NR (bs
[0.35v]
of vertical space
and use a vertical spacing of
.NR (dv
[120]%.
Long quotation pre- and post-space is stored in a dedicated register,
while centered blocks have none;
both use the vertical spacing of normal text,
.NR (tv .
.TL
.b .(l
.i A
.i F
.DE
Begin list.
Text until
.b .)l
is set in font
.NR (df
[0]
with filling disabled.
If
.i A
[\c
.b I ]
is
.b I ,
the list is indented by
.NR (bi
[4m];
if
.b M ,
it is set at the left margin;
if
.b L ,
it is left-aligned
(distinguishably from
.b M
only if the base indentation
is not zero);
and if
.b C ,
the list is centered on a line-by-line basis.
If
.i F
[empty]
is
.b F ,
filling is enabled.
.TL
.b .)l
.DE
End list.
.\" dead-tree pagination
.br
.ne 4v
.TL
.b .(q
.DE
Begin long quotation.
Text until
.b .)q
is filled,
indented on the left and right
by
.NR (qi
[4n],
preceded and followed
by
.NR (qs
[0.35v]
space,
and set at type size
.NR (qp
[\-1p].
.TL
.b .)q
.DE
End long quotation.
.TL
.b .(b
.i A
.i F
.DE
Begin a block,
a form of
.i keep:
\*(ME tries to avoid breaking a page
or column between
.b .(b
and
.b .)b .
Such a break is allowed anyway
if respecting the keep
would leave more than
.NR (bt
[0]
vees of blank space
below it.
If
.NR (bt
is zero,
this threshold feature
is disabled:
the break will not occur within the keep.
The font and
.i A
and
.i F
arguments are handled as with
.b .(l .
.TL
.b .)b
.DE
End block.
.\" dead-tree pagination
.br
.ne 3v
.TL
.b .(z
.i A
.i F
.DE
Begin floating keep.
Like
.b .(b ,
except that
.i A
defaults to
.b M
and the keep
.i floats
to the bottom of the page or column
if it fits,
or the top of the next otherwise.
Its position relative to adjacent formatted text
is thus flexible.
.NR (zs
[1v]
space
precedes and follows
a floating keep.
.TL
.b .)z
.DE
End floating keep.
.TL
.b .(c
.DE
Begin centered block.
Input until
.b .)c
is collected,
its longest output line centered,
and the remainder aligned with respect to that line;
contrast with the line-by-line centering obtained with
\(lq\c
.b ".(b C" \(rq.
.TL
.b .)c
.DE
End centered block.
.sh 1 "Annotations"
.pp
Some annotation macros are also mandatorily paired enclosures,
as display macros are.
.TL
.b .(d
.DE
Begin delayed text.
Input until
.b .)d
is saved for later output by
.b .pd .
Delayed text regions are numbered
starting at 1;
the number is kept in
.NR ($d
and in the associated string
.ST # .
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
Endnotes are one application.
.TL
.b .)d
.DE
End delayed text.
.NR ($d
and the associated string
.ST #
are incremented.
.TL
.b .pd
.DE
Emit delayed text:
output everything accumulated with
.b .(d
since the last call to
.b .pd .
The delayed text number is reset to 1.
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
This might be used
at the end of each chapter.
.TL
.b .(f
.DE
Begin footnote.
Input until
.b .)f
is saved for output
when the foot of the page is reached.
Footnotes are numbered
starting at 1;
the number is kept in
.NR ($f
and in the associated string
.ST * .
The text of the footnote
floats to the bottom
of the page
and set in font
.NR (ff
[1]
at size
.NR (fp
[8p].
Each entry
is preceded by
.NR (fs
[0.2v]
space,
indented
.NR (fi
[3n]
on its first line,
and
.q undented
(indented from the right margin)
by
.NR (fu
[0].
Footnotes line up underneath
columns in the page layout.
.\" XXX: Quantify when debugged.  See Savannah #58447, #63163, #63164.
If the footnote's content
does not fit on the page,
it carries over
to the next.
.TL
.b .)f
.DE
End footnote.
.NR ($f
and the associated string
.ST *
are incremented
if the latter has been interpolated
outside a footnote.
.TL
.b .$s
.DE
Output footnote separator:
draw a horizontal line up to 2 inches wide.
Called by
.b .(f .
Any redefinition should produce output
no more than one vee in height.
.TL
.b .(x
.i X
.DE
Begin index entry.
Input until
.b .)x
is saved in an index named
.i X
[\c
.b x ]
until called up with
.b .xp.
Each entry is preceded
by
.NR (xs
[0.2v]
of vertical space
and undented by
.NR (xu
[0.5i];
that amount of space is reserved
on the right end of the line
for the
(possibly affixed)
page number.
.TL
.b .)x
.i P
.i A
.DE
End index entry.
The entry
is rendered with a
.i leader
(row of dots)
up to an affix
(such as a volume number and
separating punctuation)
.i A
[empty]
followed by
.i P
[\c
.NR % ]
right-aligned on the last line of the entry.
If
.i A
is specified,
.i P
must be as well.
If
.i P
is an underscore,
the leader,
.i P,
and any
.i A
are suppressed.
.TL
.b .xp
.i X
.DE
Emit index
.i X
[\c
.b x ]
using the current font and type size
with display vertical spacing
(\c
.NR (dv ).
.\" dead-tree pagination
.br
.ne 4v
.sh 1 "Columnated Output"
.TL
.b .2c
.i \(+-s
.i n
.DE
Enter multi-column mode,
formatting text in
.i n
[2]
columns of equal width.
The column separation
(\c
.q gutter )
is set to
.i \(+-s
[4n],
saved
in
.NR ($s ,
and persists until changed by this macro.
The
.i n
columns with
.i n \-1
gutters
fill the single-column line length;
each column's line length
is stored in
.NR ($l .
The current column number
is in
.NR ($c
and the number of columns in
.NR ($m .
.TL
.b .1c
.DE
Leave multi-column mode;
return to single-column layout.
.TL
.b .bc
.DE
Begin new column.
Like
.b .bp ,
but begin a column
on a new page
only if necessary.
.\" dead-tree pagination
.br
.ne 4v
.sh 1 "Type Size and Font Styles"
.TL
.b .sz
.i \(+-p
.DE
Set the type size to
.i \(+-p
[10p],
and the vertical spacing per
.NR (tv .
These do
.i not
persist beyond many \*(ME macro calls:
paragraph macros reset
the type size and vertical spacing.
Similarly,
headers/footers,
section headings,
long quotations,
footnotes,
and
chapter titles
alter them.
This macro has no effect in \*N mode.
.pp
\*(ME assumes that font positions 1 through 4 correspond to
roman,
italic,
bold,
and bold-italic typefaces,
respectively.
Use the
.b .fp
request to mount your preferred fonts in these positions.
.pp
The following macros
style or decorate an argument
.i W
and accept an optional second argument
.i X,
formatted as the previous text without intervening space.
To suppress a word break after the call,
populate or suffix
.i X
with
.b \ec .
.TL
.b .r
.i W
.i X
.DE
Set
.i W
in the roman style.
If no parameters,
change to the roman style.
.TL
.b .i
.i W
.i X
.DE
Set
.i W
in italics.
If no parameters,
change to the italic style.
.TL
.b .b
.i W
.i X
.DE
Set
.i W
in boldface.
If no parameters,
switch to the bold style.
.TL
.b .bi
.i W
.i X
.DE
Set
.i W
in bold italics.
If no parameters,
switch to the bold-italic style.
.TL
.b .q
.i W
.i X
.DE
Quote
.i W ,
surrounding it with
with
.b \(lq
and
.b \(rq .
.TL
.b .sm
.i W
.i X
.DE
Set
.i W
one point smaller than the surrounding type.
This macro has no effect in \*N mode.
.TL
.b .u
.i W
.i X
.DE
Underline
.i W.
On typesetters,
this is true underlining,
in contrast to the
.b .ul
request,
which changes to the
.q "underline font"
(usually italics in \*G).
On terminals,
.i W
is surrounded by underscores.
This argument should not be subject to adjustment,
hyphenation,
or breaking;
.b .u
is reliable only when filling is disabled.
.TL
.b .bx
.i W
.i X
.DE
Set
.i W
in a box.
On typesetters,
.i W
is surrounded by rules (lines).
On terminals,
boxing is simulated with device escape sequences
or surrounded by vertical bars.
It is not marked specially on
.i groff 's
.b html
output device.
This argument should not be subject to adjustment,
hyphenation,
or breaking;
.b .bx
is reliable only when filling is disabled.
.sh 1 "Preprocessor Support"
.TL
.b .[
.DE
Begin
.i \%refer (1)
bibliographic reference.
.TL
.b .]
.DE
End
.i \%refer
bibliographic reference.
.TL
.b .EQ
.i A
.i T
.DE
Begin
.i \%eqn (1)
equation.
If
.i A
[\c
.b C ]
is
.b C ,
the equation is centered;
if
.b I ,
indented by
.NR (bi
[4m];
and if
.b L ,
left-aligned.
.i T
[empty]
is a title aligned to the right margin
next to the equation.
See
.q "Typesetting Mathematics \- User's Guide"
by Brian W. Kernighan
and Lorinda L. Cherry.
.TL
.b .EN
.i C
.DE
End
.i \%eqn
equation.
If
.i C
[empty]
is
.b C ,
and the equation is followed immediately
by another
.b .EQ ,
the texts of each are centered together.
Otherwise,
the equation is typeset
within the page or column
with
.NR (es
[0.5v]
space
above and below it.
.TL
.b .TS
.i H
.DE
Begin (start)
.i \%tbl (1)
table.
Tables are preceded and followed by
.NR (bs
of space.
If
.i H
[empty]
is
.b H ,
you can call
.b .TH
after some table rows
to repeat them as headings at the tops of pages or columns.
If you want a table to float,
surround the
.b .TS
and
.b .TE
calls with
.b .(z
and
.b .)z
calls.
.TL
.b .TH
.DE
With \(lq\c
.b ".TS H" \(rq,
end the
.i \%tbl
table heading.
.TL
.b .TE
.DE
End
.i \%tbl
table.
.TL
.b .PS
.i h
.i w
.DE
Begin
.i \%pic (1)
picture.
.i h
[empty]
and
.i w
[empty],
if present,
scale the image.
.\" XXX: That's vague, but DWB pic and GNU pic reportedly interpret
.\" these arguments differently and there's no room here to discuss it.
.TL
.b .PE
.DE
End
.i \%pic
picture,
leaving the drawing position at the bottom of the picture.
.TL
.b .PF
.DE
End
.i \%pic
picture with flyback,
leaving the drawing position at the top of the picture.
.TL
.b .IS
.DE
Begin
.i ideal (1)\**
picture.
.(f
\**
.i groff
does not provide an implementation of the
.i ideal
preprocessor.
.)f
.TL
.b .IE
.DE
End
.i ideal
picture,
leaving the drawing position at the bottom of the picture.
.TL
.b .IF
.DE
End
.i ideal
picture with flyback,
leaving the drawing position at the top of the picture.
.TL
.b .GS
.i A
.DE
Begin
.i \%grn (1)
picture.
.i A
[\c
.b C ]
can be
.b C ,
.b L ,
or
.b R
to center, left-, or right-align
the picture.
.TL
.b .GE
.DE
End
.i \%grn
picture,
leaving the drawing position at the bottom of the picture.
.TL
.b .GF
.DE
End
.i \%grn
picture with flyback,
leaving the drawing position at the top of the picture.
.sh 1 "Formal Documents"
.TL
.b .tp
.DE
Begin title page.
Unusually,
.b .sp
calls at the top of the page
.i are
honored.
Headers and footers are suppressed.
The page number
is not incremented
for this page.
.TL
.b .++
.i S
.i H
.DE
Begin a
.i segment
of an organized document,
affecting the values and formatting
of chapter and page numbers.
The chapter number in
.NR (ch
is reset to\~0.
A segment uses Arabic numerals
for chapter and page numbers
except where noted.
The mandatory segment type argument
.i S
must be one of
.b C
for chapters
(of the main matter),
.b A
for appendices
(uppercase alphabetical chapter numbers),
.b P
for preliminary (\(lqfront\(rq) matter
(such as a foreword;
lowercase Roman page numbers),
.b AB
for an abstract
(page numbering restarts at 1),
or
.b B
for \(lqback\(rq matter,
such as a bibliography.
.b C
or
.b A
may be prefixed with
.b R ,
which specifies a restart of page numbering
when
.b .+c
is called within the applicable segment.
If present,
the
.i H
[empty]
parameter defines the new header,
which must be delimited as a three-part title\(em\c
if it contains spaces,
it must furthermore be quoted.
To include the chapter number in
.i H,
use the input sequence
.b "\eEn(ch" .\**
.(f
\**
If you wish to avoid use of the \*G\|\" prevent italic f \ ugliness
.b \eE
extension,
fully
.i eight
backslashes must precede
.q n(ch .
.)f
For example,
\[lq]\c
.b ".++ RA ###\eEn(ch.%#" \[rq]
numbers appendices and pages as
.bi A .\c
.bi n
in the right-hand header,
where
.i A
is the appendix letter
and
.i n
is the page number.
Each subdivision of a segment
(each chapter,
appendix,
etc.\&)
should be preceded by a
.b .+c
call.
Because \*T formats the document
in a single pass,
a table of contents can be automatically produced only
at the end of the paper.
You can resequence this material with the
.b pdfswitchtopage
macro (for PDF output)
or a tool that processes \*T output,
or physically recollate the pages of a printed document.
.TL
.b .+c
.i T
.DE
Begin chapter
(or appendix).
Reset the footnote number
in
.NR ($f
to 1.
If the segment type is
.b RA
or
.b RC ,
reset the page number
in
.NR %
to 1.
If
.b .++
has not been called,
a segment type of
.b C
is assumed.
If a header is defined,
it replaces the footer
on the first page
of each chapter.
If a title
.i T
[empty]
is supplied,
.b .$c
is called.
.TL
.b .$c
.i T
.DE
Format a chapter heading
centered in boldface.
The text
.ST (wc
[\c
.b Chapter ]
is output
if the segment type is
.b C
or
.b RC,
or that in
.ST (wa
[\c
.b Appendix ]
if the segment type is
.b A
or
.b RA.
The chapter number
is incremented and output. \" except for abstract and bibliography segs
If a chapter title
.i T
is present,
it is formatted the same way,
preceded by vertical space.
If the segment type is any of
.b C ,
.b RC ,
.b A ,
or
.b RA ,
.b $C
is called.
.TL
.b .$C
.i K
.i N
.i T
.DE
This hook macro
is called by
.b .+c
and
.b .$c .
.i K
is the chapter or appendix term supplied by
.b $c ,
.i N
is the chapter or appendix number,
and
.i T
is its title.
.\" TODO: Move the following application note to meintro.me.in or some
.\" future non-introductory me(7) usage manual.
This hook can be used to insert chapter titles
into a table of contents.
.sh 1 "Miscellaneous"
.TL
.b .ld
.DE
Update the
.NR (y2
and
.NR (y4
registers based on the current value of
.NR (yr ,
reinitialize the localized strings
.ST (dw ,
.ST (mo ,
.ST (wa ,
and
.ST (wc ,
and reset
.ST (td
based on the foregoing.
.TL
.b .re
.DE
Reset tab stops to every 0.5i.
.TL
.b .ba
.i \(+-n
.DE
Set the base indentation
to
.i \(+-n
[0].
Paragraphs,
sections,
and displays
are indented by at least this amount,
stored in
.NR ($i .
Titles and footnotes
are unaffected.
.TL
.b .hl
.DE
Break and draw a horizontal line
of the current line length.
You might call
.b .hl
at the beginning and/or end
of a floating keep
to differentiate
the text from a figure.
.TL
.b .ep
.DE
End the page,
flushing pending footnotes.
A document should then end
or call
.b .bp .
.\" dead-tree pagination
.br
.ne 6v
.sh 1 "\f(BIroff\fP Support\fR\**"
.(f
\**
These facilities are provided to aid migration of
\(lqold
.i roff \(rq
documents.
See
.i roff (7)
for a history of
.i roff -related
typesetting systems.
.)f
.pp
.TL
.b .ix
.i \(+-n
.DE
Equivalent to \(lq\|\fB\[aq]in \fI\(+-n\/\fR\(rq.
.TL
.b .bl
.i n
.DE
Equivalent to \(lq\fB.sp \fIN\/\fR\(rq
inside a
.b .(b
block.
.TL
.b .m1
.i \(+-n
.DE
Set/adjust the space between the top of the page
and the header to/by
.i \(+-n
[4v].
.TL
.b .m2
.i \(+-n
.DE
Set/adjust the space between the header
and the first line of text to/by
.i \(+-n
[2v].
.TL
.b .m3
.i \(+-n
.DE
Set/adjust the space
between the bottom of the text
and the footer to/by
.i \(+-n
[2v].
.TL
.b .m4
.i \(+-n
.DE
Set/adjust the space
between the footer
and the bottom of the page to/by
.i \(+-n
[4v].
.TL
.b .pa
.i \(+-n
.DE
Equivalent to \(lq\fB.bp \fI\(+-n\/\fR\(rq.
.TL
.b .ro
.DE
Equivalent to \(lq\fB.af % i\fP\(rq.
.TL
.b .ar
.DE
Equivalent to \(lq\fB.af % 1\fP\(rq.
.TL
.b .n1
.i C
.DE
Number output lines starting from 1.
If
.i C
[empty]
is
.b C ,
the line length is reduced
and correspondingly indented;
otherwise,
the page offset is reduced
to accommodate the line number.
The amount in all cases is
.NR (no
[\ew\(aq0000\(aqu
(the width of four numerals
in the current font)].
.TL
.b .n2
.i \(+-n
.DE
Stop numbering output lines if
.i n
[empty]
is
empty;
otherwise resume using number
\(+-\c
.i n.
.TL
.b .sk
.DE
Leave the next output page blank
except for titles.
.\" TODO: Move this advice to an intermediate "me" user's guide.
.\"This can reserve space
.\"for a full-page diagram
.\"produced externally
.\"and composited in later.
.\"(To reserve only a partial page,
.\"use \[lq]\c
.\".b .sv \~\c
.\".bi n \[rq],
.\"where
.\".i n
.\"is the amount of space required.
.\"This space will be output immediately
.\"if there is room,
.\"and otherwise
.\"at the top of the next page.
.\"If
.\".i n
.\"is greater than the space available
.\"on an empty page,
.\"none will be output.)
.sh 1 "Predefined Strings"
.TL
.ST *
.DE
Interpolate footnote number bracketed by superscripting strings:
.ST { \c
.\" \^ avoids 'f\' bad kerning in Times bold; wrong font metrics?
.NR ($f \^\c
.ST } .
.TL
.ST #
.DE
Interpolate delayed text number surrounded by square brackets:
.b [ \c
.NR ($d \c
.b ] .
.TL
.ST {
.DE
Begin superscript:
in \*T mode,
move upward,
reduce type size,
and increase line height above by
.NR (sx
[0.2m];
in \*N mode,
output
.q [ .
.TL
.ST }
.DE
End superscript:
in \*T mode,
reverse
.ST {
motion and size change;
in \*N mode,
output
.q ] .
.\" TODO: Move this example to a section on super- and subscripting in
.\" meintro.
.\"For example,
.\"to produce a superscript
.\"you might type
.\".b x \c
.\".ST { \c
.\".b 2 \c
.\".ST } ,
.\"which will render as
.\".b x\*{2\*}
.\"on typesetters and as
.\".b x[2]
.\"on terminals.
.TL
.ST <
.DE
Begin subscript:
in \*T mode,
move downward,
reduce type size,
and increase line height below by
.NR (sx
[0.2m];
in \*N mode,
output
.q < .
.TL
.ST >
.DE
End subscript:
in \*T mode,
reverse
.ST <
motion and size change;
in \*N mode,
output
.q > .
.\" dead-tree pagination
.br
.ne 6v
.pp
\*G \*(ME provides localized strings
to support documents in several input languages;
see the
.i groff_tmac (5)
man page.
The date-related strings are initialized
based on the current date
when the formatter runs.
To encode a different date in your document,
change the \*T date registers as desired
and then call
.b .ld
to update the strings.
The day of the week is
.i not
recomputed from a new calendar date;
.NR (dw
must be modified manually.
The strings can also be defined directly.
.(b L F
.TL
.ST (dw
.DE
Weekday name.
.TL
.ST (mo
.DE
Month name.
.TL
.ST (td
.DE
The date in a form suitable for correspondence.
Construct other date formats with
.ST (dw ,
.NR (dy
(day of the month),
.ST (mo ,
.NR (mo
(month of the year),
.NR (y4
(year),
and
.NR (y2
(year of the century).
.TL
.ST (wa
.DE
The term
.b .$c
uses for
.q appendix .
.TL
.ST (wc
.DE
The term
.b .$c
uses for
.q chapter .
.)b
.sh 1 "Special Characters"
.pp
For modern documents,
see the
.i groff_char (7)
man page.
.pp
For rendering of legacy \*(ME documents,
the macro package defines several strings that construct accent marks
and two symbols from mathematical set theory.
These strings are limited in multiple respects:
they can have a crude appearance,
they are unrecognizable on character-cell video terminals
because they rely on overstriking,
and they cannot in general be \(lqstacked\(rq,
as is required to correctly render words in
(for example)
Vietnamese.
Preferable \*G alternatives
are presented alongside them in the following table.
.sp
.\" dead-tree pagination
.ne 2v
.ta 5n +\w'There exists'u+2n +\w'Usage'u+3n +\w'Example'u+3n \
+\w'Output'u+3n +\w'groff'u+3n +\w'Output'u+3n
.nf
.b "	Name	Usage	Example	Output	\f(BIgroff\fP	Output"
	Acute	\e*\(aq	a\e*\(aq	a\*'	\e[a aa]	\[a aa]
	Grave	\e*\(ga	e\e*\(ga	e\*`	\e[e ga]	\[e ga]
	Umlaut	\e*:	u\e*:	u\*:	\e[u ad]	\[u ad]
	Tilde	\e*\(ti	n\e*\(ti	n\*~	\e[n a\(ti]	\[n a~]
	Caret	\e*\(ha	e\e*\(ha	e\*^	\e[e a\(ha]	\[e a^]
	Cedilla	\e*,	c\e*,	c\*,	\e[c ac]	\[c ac]
	Caron	\e*v	s\e*v	s\*v	\e[s ah]	\[s ah]
	Ring	\e*o	A\e*o	A\*o	\e[A ao]	\[A ao]
	There exists	\e*(qe		\*(qe	\e[te]	\[te]
	For all	\e*(qa		\*(qa	\e[fa]	\[fa]
.fi
.pp
Three further string definitions cause no particular problems but have
no advantage over \*G special character escape sequences
apart from portability to BSD Unix systems.
(The last lacks even that distinction,
since
Unix Version\~7 \*T
supported the
.b \e(em
special character.)
.TL
.ST (lq
.DE
Left double quotation mark.
Use
.b \e(lq
instead.
.TL
.ST (rq
.DE
Right double quotation mark.
Use
.b \e(rq
instead.
.TL
.ST \-
.DE
Em dash.
Use
.b \e(em
instead.
.uh Acknowledgments
.pp
Allman would like to thank
Bob Epstein,
Bill Joy,
and Larry Rowe
for having the courage
to use the \*(ME macros
to produce non-trivial papers
during the development stages;
Ricki Blau,
Pamela Humphrey,
and Jim Joyce
for their help with the documentation phase;
peter kessler
for numerous complaints,
most accompanied by fixes;
and the plethora of people who have contributed ideas
and have given support for the project.
.bp
.uh Summary
.pp
Almost all macros,
strings,
and registers
available in the \*(ME package
are summarized below;
the legacy strings from section
.q "Special Characters"
are omitted.
Selected \*T
requests,
registers,
and escape sequences are included as well;
those listed can generally be used with impunity.
The list is sorted by Unicode code point
(basic Latin subset)
keyed on the identifier:
escape and control characters are disregarded,
as are the escape function selectors for register and string
interpolation,
.b n
and
.b * .
.pp
Each row contains the name of the
macro (or request),
register,
string,
or escape function;
a code for the name's type
(one of the foregoing);
and its description.
The type codes are
.b M
for a macro or \*T
request
(shown prefixed with the control character
.b . ,
but the no-break control character
.b \(aq
can also be used),
.b S
for a string
(shown using its interpolation syntax,
.b \e*
or
.b \e*( ),
.b R
for a register
(shown using its interpolation syntax,
.b \en
or
.b \en( ),
and
.b F
for a \*T built-in function
(shown prefixed with the escape character
.b \e ).
.pp
The type code can carry a variety of annotations.
A section sign \(sc indicates features implemented by \*T
rather than the \*(ME package.
The dagger \(dg and double dagger \(dd identify user-definable macros.
Those marked with
\(dd have non-empty default definitions;
changing them may have unexpected side effects.
The degree sign \(de notes features requiring AT&T device-independent
\*T extensions
(ca.\& 1981),
and a square \(sq labels \*G extensions.
.de $H
.ev 1
.ta \w'\enewline\(sc'u +\w'TYPE'u+2n
.b "Name	Type	Description"
.ev
..
.sp
.if t .2c
.if n .(c
.(l L
.$H
\e\fI\,newline\fP	F\(sc	continue input line
\e"	F\(sc	comment (to end of input line)
\e*#	S	delayed text mark
\e$\fI\,n\fP	F\(sc	interpolate \fIn\/\fPth macro argument
\en($0	R	section depth
\&.$0	M\(dg	post-section heading hook
\en($1	R	first section number component
\&.$1	M\(dg	pre-section heading depth 1 hook
\en($2	R	second section number component
\&.$2	M\(dg	pre-section heading depth 2 hook
\en($3	R	third section number component
\&.$3	M\(dg	pre-section heading depth 3 hook
\en($4	R	fourth section number component
\&.$4	M\(dg	pre-section heading depth 4 hook
\en($5	R	fifth section number component
\&.$5	M\(dg	pre-section heading depth 5 hook
\en($6	R	sixth section number component
\&.$6	M\(dg	pre-section heading depth 6 hook
\&.$C	M\(dg	post-chapter title heading hook
\&.$H	M\(dg	page/column heading hook
\en($c	R	current column number
\&.$c	M\(dd	output chapter number and title
\en($d	R	delayed text number
\en($f	R	footnote number
\&.$f	M\(dd	output footer
\&.$h	M\(dd	output header
\en($i	R	paragraph base indentation
\en($l	R	column width
\en($m	R	number of available columns
\e*($n	S	catenated section number
\en($p	R	numbered paragraph number
\&.$p	M\(dd	output section heading
\en($s	R	column spacing (indentation)
\&.$s	M\(dd	output footnote area separator
\e%	F\(sc	control hyphenation
\en%	R\(sc	current page number
\e&	F\(sc	dummy character
\e(\fI\,xx\fP	F\(sc	interpolate special character \fIxx\fP
\&.(b	M	begin block
\&.(c	M	begin centered block
\&.(d	M	begin delayed text
\&.(f	M	begin footnote
\&.(l	M	begin list
\&.(q	M	begin long quotation
\&.(x	M	begin index entry
\&.(z	M	begin floating keep
\e\(aq	F\(sc	acute accent
\&.)b	M	end block
\&.)c	M	end centered block
\&.)d	M	end delayed text
\&.)f	M	end footnote
\&.)l	M	end list
\&.)q	M	end long quotation
\&.)x	M	end index entry
\&.)z	M	end floating keep
\e*\fI\,x\fP	F\(sc	interpolate string \fIx\fP
\e*(\fI\,xx\fP	F\(sc	interpolate string \fIxx\fP
\e**	S	footnote mark
\&.++	M	set document segment type
\&.+c	M	begin chapter or appendix
\e\-	F\(sc	minus sign
\e*\-	S	em dash
\en(.$	R\(sc	macro parameter count
\en(.i	R\(sc	current indentation
\en(.l	R\(sc	current line length
\en(.p	R\(sc	current page length
\en(.s	R\(sc	current type size in points
\e0	F\(sc	unadjustable digit-width space
\&.1c	M	end multi-column layout
\&.2c	M	begin multi-column layout
\e*<	S	begin subscripting
\e*>	S	end subscripting
\&.EN	M	end \fIeqn\fP equation
\&.EQ	M	begin \fIeqn\fP equation
\&.GE	M\(de	end \fIgrn\fP picture with position at bottom
\&.GF	M\(de	end \fIgrn\fP picture with position at top
\&.GS	M\(de	start \fIgrn\fP picture
\&.IE	M\(de	end \fIideal\fP picture with position at bottom
\&.IF	M\(de	end \fIideal\fP picture with position at top
\&.IS	M\(de	start \fIideal\fP picture
\eL\(aq\fI\,d\/\fP\(aq	F\(sc	draw vertical line of length \fId\fP
\&.PE	M\(de	end \fIpic\fP picture with position at bottom
\&.PF	M\(de	end \fIpic\fP picture with position at top
\&.PS	M\(de	start \fIpic\fP picture
\&.TE	M	end \fItbl\fP table
\&.TH	M	end heading for multi-page \fItbl\fP table
\&.TS	M	begin \fItbl\fP table
\e\(ha	F\(sc	1/12 em unbreakable hair space
\e_	F\(sc	underrule
\e\(ga	F\(sc	grave accent
\&.ad	M\(sc	set text adjustment mode
\&.af	M\(sc	assign register format
\&.am	M\(sc	append to macro
\&.ar	M	use Arabic numerals for page numbers
\&.as	M\(sc	append to string
\&.b	M	embolden argument
\&.ba	M	set base indentation (cf.\& \fB.in\fP)
\&.bc	M	begin new column
\&.bi	M	embolden and italicize argument
\en(bi	R	display (block) indentation
\&.bl	M	insert space (even at page top; cf.\& \fB.sp\fP)
\en(bm	R	distance from text area to page bottom
\&.bp	M\(sc	begin new page
\&.br	M\(sc	break output line
\en(bs	R	display (block) pre/post space
\en(bt	R	block threshold for keeps
\&.bx	M	box argument
\ec	F\(sc	continue output line
\&.ce	M\(sc	center output lines
\en(ch	R	current chapter number
\&.cp	M\(sc\(sq	toggle AT&T \*T compatibility mode
\&.de	M\(sc	define macro
\en(df	R	display font
\&.do	M\(sc\(sq	operate with compatibility mode off
\&.ds	M\(sc	define string
\en(dv	R\(sq	vertical spacing of displayed text (%)
\en(dw	R\(sc	day of the week
\e*(dw	S	weekday name
\en(dy	R\(sc	day of the month
\ee	F\(sc	printable version of escape character \fB\e\fP
\&.ef	M	set even-numbered page footer
\&.eh	M	set even-numbered page header
\&.el	M\(sc	else part of \fB.ie\fP conditional
\&.ep	M	end page
\en(es	R	equation pre/post space
\ef\fI\,f\fP	F\(sc	inline font change to font \fIf\fP
\ef(\fI\,ff\fP	F\(sc	inline font change to font \fIff\fP
\&.fc	M\(sc	set field characters
\en(ff	R	footnote font
\&.fi	M\(sc	enable filling
\en(fi	R	footnote indentation (first line only)
\en(fm	R	footer margin
\&.fo	M	set footer
\&.fp	M	mount font at position
\en(fp	R	footnote type size in points
\en(fs	R	footnote prespace
\en(fu	R	footnote undent (right indentation)
\eh\(aq\fI\,d\/\fP\(aq	F\(sc	move distance \fId\fP horizontally
\&.hc	M\(sc	set hyphenation character
\&.he	M	set header
\&.hl	M	draw horizontal line
\en(hm	R	header margin
\&.hx	M	suppress next page's headers/footers
\&.hy	M\(sc	set automatic hyphenation mode
\&.i	M	italicize argument
\&.ie	M\(sc	conditional with \fB.el\fP
\&.if	M\(sc	conditional
\en(ii	R	indented paragraph indentation
\&.in	M\(sc	set indentation (transient; cf.\& \fB.ba\fP)
\&.ip	M	begin indented paragraph
\&.ix	M	set indentation without break
\el\(aq\fI\,d\/\fP\(aq	F\(sc	draw horizontal line of length \fId\fP
\&.lc	M\(sc	set leader repetition character
\&.ld	M\(sq	reset localization and date info
\&.ll	M	set line length in \fIme\fP environments
\&.lp	M	begin fully left-aligned paragraph
\e*(lq	S	left double quotation mark
\&.ls	M\(sc	set multi-line spacing
\&.m1	M	set page top to header distance
\&.m2	M	set header to text distance
\&.m3	M	set text to footer distance
\&.m4	M	set footer to page bottom distance
\&.mc	M\(sc	set margin character
\&.mk	M\(sc	mark vertical position (see \fB.rt\fP)
\en(mo	R\(sc	month of the year
\e*(mo	S	month name
\en\fI\,x\fP	F\(sc	interpolate register \fIx\fP
\en(\fI\,xx\fP	F\(sc	interpolate register \fIxx\fP
\&.n1	M	begin output line numbering
\&.n2	M	end or alter output line numbering
\&.na	M\(sc	disable adjustment
\&.ne	M\(sc	need vertical space
\&.nf	M\(sc	disable filling
\&.nh	M\(sc	disable automatic hyphenation
\en(no	R\(sq	line numbering offset
\&.np	M	begin numbered paragraph
\&.nr	M\(sc	set register
\&.ns	M\(sc	begin no-space mode
\&.of	M	set odd-numbered page footer
\&.oh	M	set odd-numbered page header
\&.pa	M	begin page
\&.pd	M	output delayed text
\en(pf	R	paragraph font
\en(pi	R	paragraph indentation
\&.pl	M\(sc	set page length
\&.pn	M\(sc	set next page number
\&.po	M\(sc	set page offset
\en(po	R	paragraph offset
\&.pp	M	begin first-line indented paragraph
\en(pp	R	paragraph type size in points
\en(ps	R	paragraph prespace
\&.q	M	quote argument
\en(qi	R	long quotation left/right indentation
\en(qp	R	long quotation type size in points
\en(qs	R	long quotation pre/post space
\&.r	M	set argument in roman
\&.re	M	reset tab stops
\&.rj	M\(sq	right-align output lines
\&.rm	M\(sc	remove macro, string, or request
\&.rn	M\(sc	rename macro, string, or request
\&.ro	M	use Roman numerals for page numbers
\e*(rq	S	right double quotation mark
\&.rr	M\(sc	remove register
\&.rs	M\(sc	restore spacing (end no-space mode)
\&.rt	M\(sc	return to vertical position set by \fB.mk\fP
\es\(aq\fI\,\(+-n\/\fP\(aq	F\(sc\(de	inline type size change\
 to/by \fIn\fP points
\en(sf	R	section title font
\&.sh	M	begin numbered section
\en(si	R	section indentation per level of depth
\&.sk	M	skip next page
\&.sm	M	set argument at smaller type size
\&.so	M\(sc	source (interpolate) input file
\en(so	R	additional section title offset
\&.sp	M\(sc	insert space (except at page top; cf.\& \fB.bl\fP)
\en(sp	R	section title type size in points
\en(ss	R	section prespace
\&.sx	M	change section depth
\en(sx	R\(sq	super/subscript line height increase
\&.sz	M	set type size and vertical spacing
\&.ta	M\(sc	set tab stops
\&.tc	M\(sc	set tab repetition character
\e*(td	S	today's date
\en(tf	R	title font
\&.ti	M\(sc	temporary indentation (next line only)
\&.tl	M\(sc	output three-part title
\en(tm	R	distance from page top to text area
\&.tp	M	begin title page
\en(tp	R	title type size in points
\&.tr	M\(sc	translate characters
\en(tv	R\(sq	vertical spacing of text (%)
\&.u	M	underline argument
\&.uh	M	begin unnumbered section
\&.ul	M\(sc	underline output lines
\ev\(aq\fI\,d\/\fP\(aq	F\(sc	move distance \fId\fP vertically
\ew\(aq\fI\,S\/\fP\(aq	F\(sc	interpolate formatted width of \fIS\fP
\e*(wa	S\(sq	term for \(lqappendix\(rq used by \fB.$c\fP
\e*(wc	S\(sq	term for \(lqchapter\(rq used by \fB.$c\fP
\&.xl	M	set line length (current environment)
\&.xp	M	output index
\en(xs	R	index entry prespace
\en(xu	R	index undent (right indentation)
\en(y2	R\(sq	year of the century
\en(y4	R\(sq	year
\en(yr	R\(sc	year minus 1900
\en(zs	R	floating keep pre/post space
\e{	F\(sc	begin conditional group
\e*{	S	begin superscripting
\e|	F\(sc	1/6 em unbreakable thin space
\e}	F\(sc	end conditional group
\e*}	S	end superscripting
\e\(ti	F\(sc\(sq	unbreakable word space
.)l
.if n .)c
.ds $H \" empty
.\" If we're laying out the final column, `1c` will produce an
.\" unnecessary empty page.  If we're not, omitting `1c` will format a
.\" column of headers with nothing underneath.
.if \n($c<\n($m .1c
.\" Local Variables:
.\" mode: nroff
.\" End:
.\" vim: filetype=groff:
