给定 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 手册并没有说你不能这样做,但在过去我只传递了需要解释为字符串的参数。
也就是说,因为
\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.