如何将宏参数分配给 groff 中的数字寄存器?

问题描述 投票:0回答:1

给定 2 个数字寄存器,将其嵌入到文档中效果很好:

.nr weeks 12
.tm start is \n[weeks] weeks away.

预期值被打印到控制台。

将此代码移至函数似乎不起作用:

.de set_weeks
.  nr weeks \\$1
.  tm start is \n[weeks] weeks away.
..

还有

.br
.set_weeks 6
.br

打印“距离开始还有 0 周。”,这是意料之外的。

groff / troff 手册并没有说你不能这样做,但在过去我只传递了需要解释为字符串的参数。

groff
1个回答
0
投票

也就是说,因为

\n[weeks]
是在宏定义时评估的。要在执行时对其进行评估,请添加另一个
\

作为演示:

.nr weeks 3
.de set_weeks
.  nr weeks \\$1
.  tm start is \n[weeks] weeks away.
..
.de set_weeks2
.  nr weeks \\$1
.  tm start is \\n[weeks] weeks away.
..
.br
.set_weeks 6
.set_weeks2 6
.br

给出输出:

start is 3 weeks away.
start is 6 weeks away.
© www.soinside.com 2019 - 2024. All rights reserved.