groff ms macros are an independent reimplementation,
using no AT&T code. Since they take advantage of the extended
groff, they cannot be used with AT&T
groff ms supports features described above
as Berkeley and Tenth Edition Research Unix extensions, and adds several
of its own.
groffms differ from the internals of AT&T ms. Documents that depend upon implementation details of AT&T ms may not format properly with
groffms. Such details include macros whose function was not documented in the AT&T ms manual.14
groffms is to detect and report errors, rather than to ignore them silently.
P2macros to bracket code examples;
groffms does not.
groffms 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.
groffms uses the same header and footer defaults in both
troffmodes as AT&T ms does in
troffmode; AT&T’s default in
nroffmode is to put the date, in U.S. traditional format (e.g., “January 1, 2021”), in the center footer (the
groffms 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
REmacros instead of the
VSin points, and did not support the use of scaling units with them.
groffms interprets values of the registers
FVSequal 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.
AUmacro supported arguments used with some document types;
groffms does not.
groffms, it does.
groffms use the default page offset (which also specifies the left margin), the
POregister 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.
groffms supports the
PNregister, but it is not necessary; you can access the page number via the usual
%register and invoke the
afrequest to assign a different format to it if desired.16
GWas setting the default column width and “intercolumn gap”, respectively, and which applied when
MCwas called with fewer than two arguments.
groffms instead treats
MCwithout arguments as synonymous with
2C; there is thus no occasion for a default column width register. Further, the
MINGWregister and the second argument to
MCspecify a minimum space between columns, not the fixed gutter width of AT&T ms.
QIregister; Berkeley and
GS is set to 1 by the
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
|• Missing Unix Version 7 ms Macros|