The groff
ms macros are an independent reimplementation,
using no AT&T code. Since they take advantage of the extended
features of groff
, they cannot be used with AT&T
troff
. groff
ms supports features described above
as Berkeley and Tenth Edition Research Unix extensions, and adds several
of its own.
groff
ms differ from the internals of
AT&T ms. Documents that depend upon implementation
details of AT&T ms may not format properly with
groff
ms. Such details include macros whose function was
not documented in the AT&T ms
manual.14
groff
ms is to detect and
report errors, rather than to ignore them silently.
P1
/P2
macros to bracket code
examples; groff
ms does not.
groff
ms does not work in GNU troff
’s
AT&T compatibility mode. If loaded when that mode is enabled,
it aborts processing with a diagnostic message.
groff
ms uses the same header and footer defaults in both
nroff
and troff
modes as AT&T ms does in
troff
mode; AT&T’s default in nroff
mode is to
put the date, in U.S. traditional format (e.g., “January 1, 2021”),
in the center footer (the CF
string).
groff
ms macros, including those for paragraphs,
headings, and displays, cause a reset of paragraph rendering parameters,
and may change the indentation; they do so not by incrementing or
decrementing it, but by setting it absolutely. This can cause problems
for documents that define additional macros of their own that try to
manipulate indentation. Use the ms RS
and RE
macros instead of the in
request.
PS
and VS
in points, and did not support the use of
scaling units with them. groff
ms interprets values of
the registers PS
, VS
, FPS
, and FVS
equal to
or larger than 1,000 (one thousand) as decimal fractions multiplied
by 1,000.15 This threshold makes use of a
scaling unit with these parameters practical for high-resolution
devices while preserving backward compatibility. It also permits
expression of non-integral type sizes. For example, ‘groff
-rPS=10.5p’ at the shell prompt is equivalent to placing ‘.nr PS
10.5p’ at the beginning of the document.
AU
macro supported arguments used with
some document types; groff
ms does not.
groff
ms,
it does.
groff
ms use the default page offset (which also
specifies the left margin), the PO
register must stay undefined
until the first ms macro is called.
This implies that ‘\n[PO]’ should not be used early in the document, unless it is changed also: accessing an undefined register automatically defines it.
groff
ms supports the PN
register, but it is not
necessary; you can access the page number via the usual %
register and invoke the af
request to assign a different format
to it if desired.16
CW
and
GW
as setting the default column width and “intercolumn gap”,
respectively, and which applied when MC
was called with fewer
than two arguments. groff
ms instead treats MC
without arguments as synonymous with 2C
; there is thus no
occasion for a default column width register. Further, the MINGW
register and the second argument to MC
specify a minimum
space between columns, not the fixed gutter width of AT&T
ms.
QI
register; Berkeley and groff
ms do.
\n[GS]
¶The register GS
is set to 1 by the groff
ms
macros, but is not used by the AT&T ms package.
Documents that need to determine whether they are being formatted with
groff
ms or another implementation should test this
register.