是否可以使用 groff 进行算术运算?
假设我想计算当前页面是哪一页,而我目前在第 2 页。我可以使用以下方法获取下一页的编号:
.PP
Next page is number \n[.pn]
这将编译为Next page is number 3
.
我怎样才能执行算术来渲染:
.PP
Current page is ((\n[.pn]-1))
进入Current page is 2
?
是否可以使用 groff 进行算术运算?
假设我想计算当前页面是哪一页,而我目前在第 2 页。我可以使用以下方法获取下一页的编号:
.PP
Next page is number \n[.pn]
这将编译为Next page is number 3
.
我怎样才能执行算术来渲染:
.PP
Current page is ((\n[.pn]-1))
进入Current page is 2
?
当前页码为
\n%
。要插入算术表达式的结果,我认为您需要先将其放入数字寄存器中。
这是一个宏(未经过详尽测试),它以表达式作为参数,将结果分配给(可能未使用的)名为 的寄存器
__
,然后对寄存器的内容进行插值。通过nroff运行后:
这似乎是一件很常见的事情,标准宏包中可能已经有一个类似的宏,但我不知道。
是的,
groff
可以进行算术运算。这记录在完整的 groff 手册中,该手册可在线获取或以 GNU 信息格式(使用info groff
,或pinfo groff
查看完整手册)......与许多 GNU 程序一样,手册页只是一个快速参考,完整的文档是信息格式。来自https://www.gnu.org/software/groff/manual/html_node/Expressions.html
顺便说一句,
info
是标准的 GNU Info 文档查看器。 pinfo是另一种查看器,它提供更“类似浏览器”的 UI,类似于文本 Web 浏览器,如lynx
. 我个人受不了info
,pinfo
改用。它可用于大多数发行版的预打包,源代码可在上面的 pinfo 链接中找到。