Using the ms
macros and eqn
, is there some way to number an equation in Groff automatically similar to LaTeX?
2 Answers
I don't see anything built-in to the ms
macros for this, but you can always use the base troff number registers.
Add to the start the file the definition and initialisation of your number register (starts at 0, increment by 1):
.nr myeqn 0 1
Then whereever you use it as
\n+[myeqn]
it will be incremented and replaced by the current value. Eg
.EQ
e sup {i pi} + 1 = 0
.EN
.sp -1
.tl ' ' '... \n+[myeqn]'
If you want to use the same number again it is \n[myeqn]
instead.
-
-
1It's in
man 7 groff
, and means three part title..tl 'a'b'c'
will puta
on the left,b
in the middle, andc
on the right edge of the line.– meuhCommented May 8, 2021 at 17:55
meuh's answer is correct but not quite idiomatic.
There is a simpler way to get the equation number set to the right of the equation than messing with sp
and tl
requests.
ms's EQ
macro accepts (optional) arguments, and if you give it a second argument, ms will set it to the right of the equation display for you.
.EQ [align [label]]
.EN Demarcate an equation to be processed by the eqn preprocessor.
The equation is centered by default; align can be C, L, or I to
(explicitly) center, left‐align, or indent it by \n[DI],
respectively. If specified, label is set right‐aligned.
The foregoing is from the groff_ms(7) page in groff Git. The version of the page in groff 1.22.4 is not as comprehensive.
So you can rewrite meuh's solution more briefly.
.nr myeqn 0 1
.\" ...stuff...
.EQ C \n+[myeqn]
e sup {i pi} + 1 = 0
.EN