Arithmetic

格羅夫算術

  • July 29, 2019

是否可以使用 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%

要插入算術表達式的結果,我認為您需要先將其放入數字寄存器中。

這是一個宏(未經過詳盡測試),它以表達式作為參數,將結果分配給(可能未使用的)名為 的寄存器__,然後對寄存器的內容進行插值。

Current page is \n%.
.br
.\" EI - eval and interpolate
.\" $1 is an expression to evaluate
.\" $2 (optional) is a string to append to the interpolated expression,
.\"    without any intervening whitespace
.de EI
.nr __ \\$1
\&\\n(__\\$2
..
.nr x 4
4 times 3 minus 5 is
'EI (\nx*3-5)
\&.
.br
Here there's no space before the period:
'EI (\nx*3-5) .
.br

通過nroff執行後:

Current page is 1.
4 times 3 minus 5 is 7 .
Here there's no space before the period: 7.

這似乎是一件很常見的事情,標準宏包中可能已經有一個類似的宏,但我不知道。

引用自:https://unix.stackexchange.com/questions/532631