The .mso macro (as provided with the -mg option) is intended to emulate the groff .mso request, but it fails on an important aspect of this: maintaining the top margin of the first page.
Consider a simple input file:
.tm Top: vertical position is \n(nl
Hello.
.tm First line of output: vertical position is \n(nl
If the troff command line specifies a macro package that sets a default top margin, such as ms, this margin is reflected in the stderr output:
Top: vertical position is -1
First line of output: vertical position is 72000
In groff, loading a macro package first thing with .mso (instead of specifying it on the command line) retains this behavior. But Heirloom troff's .mso macro does not; this modified input file:
.tm Top: vertical position is \n(nl
.mso s
.tm After .mso: vertical position is \n(nl
Hello.
.tm First line of output: vertical position is \n(nl
prints to stderr:
Top: vertical position is -1
After .mso: vertical position is 0
First line of output: vertical position is 0
Thus the top margin set by the ms package is not respected on the first page of output. This is also true of the me and mm packages.
The
.mso
macro (as provided with the-mg
option) is intended to emulate the groff.mso
request, but it fails on an important aspect of this: maintaining the top margin of the first page.Consider a simple input file:
If the troff command line specifies a macro package that sets a default top margin, such as
ms
, this margin is reflected in the stderr output:In groff, loading a macro package first thing with
.mso
(instead of specifying it on the command line) retains this behavior. But Heirloom troff's.mso
macro does not; this modified input file:prints to stderr:
Thus the top margin set by the
ms
package is not respected on the first page of output. This is also true of theme
andmm
packages.