Arithmetic
格羅夫算術
是否可以使用 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.
這似乎是一件很常見的事情,標準宏包中可能已經有一個類似的宏,但我不知道。