我需要存储和使用大量整数(有点“编程TeX
”),但我知道 TeX 可同时使用的计数器数量有限(最多 256 个)。如何使用宏处理这些数字?我需要基本的数字运算和比较。
答案1
pdftex
如今,如果您使用(或),则没有真正的限制pdflatex
,因为引擎有 32768 个计数寄存器。唯一的问题是说服分配宏使用整个集合。在 LaTeX 中,这是通过加载(尽早,即在 之后立即\documentclass
)etex
包来实现的。
如果使用小于“8000 = 32768的常量,则可以方便地将它们存储为\mathchardef
:
\mathchardef\myconst=12000
\myconst
允许您在 TeX 期望的每个地方使用<number>
(作为其语法规则的一部分)。
笔记。诸如此类的技巧
\mathchardef\myconstant=\numexpr \myconstant + 1 \relax
没有工作。这是因为 TeX 在分配期间采取了安全预防措施。当有人说
\mathchardef\myconstant=...
令牌\myconstant
暂时设置为\relax
,因此无法在以下情况下使用\numexpr
。在这种情况下,必须使用临时存储箱:
\mathchardef\myconstant=42
...
\mathchardef\mytempconstant=\myconstant
\mathchardef\myconstant=\numexpr\mytempconstant+1\relax
然而,这样的计算效率相当低。