在 Groff 中制作编号方程

在 Groff 中制作编号方程

使用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的答案是正确的,但不是相当惯用的。

有一种更简单的方法可以将方程编号设置在方程右侧,而不是搞乱sptl请求。

多发性硬化症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

相关内容