使用ms
宏 和eqn
,是否有某种方法可以像 LaTeX 一样自动对 Groff 中的方程进行编号?
答案1
我没有看到任何内置的宏ms
,但你总是可以使用基本的 troff数字寄存器。
将数字寄存器的定义和初始化添加到文件的开头(从 0 开始,递增 1):
.nr myeqn 0 1
然后无论你在哪里使用它
\n+[myeqn]
它将增加并替换为当前值。例如
.EQ
e sup {i pi} + 1 = 0
.EN
.sp -1
.tl ' ' '... \n+[myeqn]'
如果您想再次使用相同的号码,则可以\n[myeqn]
。
答案2
meuh的答案是正确的,但不是相当惯用的。
有一种更简单的方法可以将方程编号设置在方程右侧,而不是搞乱sp
和tl
请求。
多发性硬化症的EQ
宏接受(可选)参数,如果你给它第二个参数,多发性硬化症将为您将其设置在方程显示的右侧。
.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.
前述内容摘自格罗夫_MS(7) groff Git 中的页面。页面的版本在格罗夫1.22.4 并不那么全面。
所以你可以更简短地重写 meuh 的解决方案。
.nr myeqn 0 1
.\" ...stuff...
.EQ C \n+[myeqn]
e sup {i pi} + 1 = 0
.EN