我正在阅读 plain.tex。这是的定义\alloc@
:
\def\alloc@#1#2#3#4#5{\global\advance\count1#1 by 1
\ch@ck#1#4#2% make sure there’s still room
\allocationnumber=\count1#1
\global#3#5=\allocationnumber
\wlog{\string#5=\string#2\the\allocationnumber}}
我理解它的工作原理,除了设置 的那一行\allocationnumber
。TeXbook 说,你可以在调用后检查\allocationnumber
(即\count21
),以查看分配了什么号码。如果赋值给\allocationnumber
未标记为 ,这怎么可能呢\global
?
答案1
正如文本所述,您可以\allocationnumber
在调用后进行检查,这意味着您在调用后或多或少立即进行检查。引用的代码片段用其最后一行演示了这一点:
\allocationnumber
通过写入\wlog
日志文件。
\alloc@
是的,如果在 的调用和 的检查之间结束,则信息会丢失,\allocationnumber
因为\allocationnumber
会恢复到组开始时的值。
\global
会\allocationnumber
保留下来。
但是\newcount\mycnt \newdimen\mydim
如果您需要 ,那么\allocationnumber
您之后会做什么\mycnt
?它消失了,因为\allocationnumber
现在存储了 的数量\mydim
。它是来自不同计数寄存器(\count11
vs \count10
)的完全不相关的数字。因此,并没有多大帮助;在您使用或调用它的命令\global
后直接检索该数字。\alloc@