Your company here — click to reach over 10,000 unique daily visitors

groff_me - Man Page

“me” macro package for formatting roff documents


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


The GNU implementation of the me macro package is part of the groff document formatting system. The me package of macro definitions for the roff language provides a convenient facility for preparing technical papers in various formats. This version is based on the me distributed with 4.4BSD and can be used with the GNU troff formatter as well as those descended from AT&T troff.

Some formatter requests affect page layout unpredictably when used in conjunction with this package; however, the following may be used with impunity after the first call to a paragraphing macro like lp or pp. Some arguments are optional; see groff(7) for details, particularly of requests whose argument list is designated with an ellipsis. An asterisk * marks groff extensions.

adcset text adjustment mode to c
afr fassign format f to register r
amm eappend to macro m until e called
ass tappend rest of line t to string s
bpnbegin new page numbered n
brbreak output line
cencenter next n output lines
cpnen-/disable AT&T troff compatibility mode*
dem edefine macro m until e called
dotinterpret input t with compatibility mode off*
dss tdefine rest of line t as string s
eltinterpret t if corresponding ie false
fcc dset field delimiter c and padding glyph d
fienable filling
hccset hyphenation character to c
hymset automatic hyphenation mode to m
iep tas if, but enable interpretation of later el
ifp tif condition p, interpret rest of line t
inhset indentation to distance h
lccset leader repetition glyph to c
lsnset line spacing to n
mcc hset (right) margin glyph to c at distance h
mkrmark vertical position in register r
nadisable adjustment of text
nevneed vertical space of distance v
nfdisable filling
nhdisable automatic hyphenation
nrr n iassign register r value n with auto-increment i
nsbegin no-space mode
plvset page length to v
pnnset next page number to n
pohset page offset to h
rjnright-align next n output lines*
rmmremove macro, string, or request m
rnm nrename macro, string, or request m to n
rrrremove register r
rsresume spacing (end no-space mode)
rtvreturn to vertical position set by mk, or v
sofsource (interpolate) input file f
spninsert n lines of vertical space
ta...set tab stops
tccset tab repetition glyph to c
tihset temporary indentation (next line only) to h
tl...output three-part title
tr...translate characters
ulnunderline next n output lines

Except on title pages (produced by calling tp), me suppresses the output of vertical space at the tops of pages (after the output of any page header); the sp request will thus not work there. You can instead call bl or enclose the desired spacing request in a diversion, for instance by calling (b and )b. me also intercepts the ll request; see the “me Reference Manual” for details.

Name space

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 sequence of letters and numerals with at least one uppercase letter. (For portability between BSD and groff me, limit names to two characters, and avoid the name [ (left square bracket).) The names employed by any preprocessors in use should also not be repurposed.


$0post-section heading hook
$1pre-section depth 1 hook
$2pre-section depth 2 hook
$3pre-section depth 3 hook
$4pre-section depth 4 hook
$5pre-section depth 5 hook
$6pre-section depth 6 hook
$Cpost-chapter title hook
$Hpage/column heading hook
$coutput chapter number and title
$foutput footer
$houtput header
$poutput section heading
$soutput footnote area separator
(bbegin block
(cbegin centered block
(dbegin delayed text
(fbegin footnote
(lbegin list
(qbegin long quotation
(xbegin index entry
(zbegin floating keep
)bend block
)cend centered block
)dend delayed text
)fend footnote
)lend list
)qend long quotation
)xend index entry
)zend floating keep
++set document segment type
+cbegin chapter
1cend multi-column layout
2cbegin multi-column layout
ENend eqn equation
EQbegin eqn equation
GEend grn picture with drawing position at bottom
GFend grn picture with drawing position at top
GSstart grn picture
IEend ideal picture with drawing position at bottom
IFend ideal picture with drawing position at top
ISstart ideal picture
PEend pic picture with drawing position at bottom
PFend pic picture with drawing position at top
PSstart pic picture
TEend tbl table
THend heading for multi-page tbl table
TSstart tbl table
bembolden argument
baset base indentation
bcbegin new column
biembolden and italicize argument
bxbox argument
efset even-numbered page footer
ehset even-numbered page header
epend page
foset footer
heset header
hldraw horizontal line
hxsuppress next page's headers/footers
iitalicize argument
ipbegin indented paragraph
ldreset localization and date registers and strings*
llset line length
lpbegin fully left-aligned paragraph
npbegin numbered paragraph
ofset odd-numbered page footer
ohset odd-numbered page header
pdoutput delayed text
ppbegin first-line indented paragraph
qquote argument
rset argument in roman
rereset tab stops
shbegin numbered section
smset argument at smaller type size
sxchange section depth
szset type size and vertical spacing
tpbegin title page
uunderline argument
uhbegin unnumbered section
xlset line length (local)
xpoutput index

Some macros are provided for “old” roff(1) compatibility. The “me Reference Manual” describes alternatives for modern documents.

aruse Arabic numerals for page numbers
blinsert space (even at page top; cf. sp)
ixset indentation without break
m1set page top to header distance
m2set header to text distance
m3set text to footer distance
m4set footer to page bottom distance
n1begin output line numbering
n2end or alter output line numbering
pabegin page
rouse Roman numerals for page numbers
skskip next page


$0section depth
$1first section number component
$2second section number component
$3third section number component
$4fourth section number component
$5fifth section number component
$6sixth section number component
$ccurrent column number
$ddelayed text number
$ffootnote number
$iparagraph base indentation
$lcolumn width
$mnumber of available columns
$pnumbered paragraph number
$scolumn spacing (indentation)
bidisplay (block) indentation
bmdistance from text area to page bottom
bsdisplay (block) pre/post space
btblock threshold for keeps
chcurrent chapter number
dfdisplay font
dvvertical spacing of displayed text (as percentage)*
esequation pre/post space
fffootnote font
fifootnote indentation (first line only)
fmfooter margin
fpfootnote type size in points
fsfootnote prespace
fufootnote undent (right indentation)
hmheader margin
iiindented paragraph indentation
noline numbering offset*
pfparagraph font
piparagraph indentation
popage offset
ppparagraph type size in points
psparagraph prespace
qilong quotation left/right indentation
qplong quotation type size in points
qslong quotation pre/post space
sfsection title font
sisection indentation per level of depth
soadditional section title offset
spsection title type size in points
sssection prespace
sxsuper/subscript line height increase*
tftitle font
tmdistance from page top to text area
tptitle type size in points
tvvertical spacing of text (as percentage)*
xsindex entry prespace
xuindex undent (right indentation)
y2year of the century*
yryear minus 1900
zsfloating keep pre/post space


#delayed text marker
$nconcatenated section number
*footnote marker
-em dash
<begin subscripting
>end subscripting
dwweekday name
lqleft double quotation mark
momonth name
rqright double quotation mark
waterm for “appendix” used by .$c*
wcterm for “chapter” used by .$c*
{begin superscripting
}end superscripting



implements the package.


implements refer(1) support for me.


is a wrapper enabling the package to be loaded with “groff -m me”.


Early roff macro packages often limited their names to a single letter, which followed the formatter's m flag letter, resulting in mm, ms, mv, mn, and so on. The “e” in “me” stands for “Eric P. Allman”, who wrote the macro package and the original technical papers documenting it while an undergraduate at the University of California.

See also

Two manuals are available in source and rendered form. On your system, they may be compressed and/or available in additional formats.


is “Writing Papers with Groff Using -me”, by Eric P. Allman, adapted for groff by James Clark.


is the “me Reference Manual”, by Eric P. Allman, adapted for groff by James Clark and G. Branden Robinson.

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

For preprocessors supported by me, see eqn(1), grn(1), pic(1), refer(1), and tbl(1).

groff(1), troff(1), groff(7)

Referenced By

groff(1), groff_tmac(5).

24 January 2024 groff 1.23.0