\alloc@ 是否会全局改变 \allocationnumber?

\alloc@ 是否会全局改变 \allocationnumber?

我正在阅读 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。它是来自不同计数寄存器(\count11vs \count10)的完全不相关的数字。因此,并没有多大帮助;在您使用或调用它的命令\global后直接检索该数字。\alloc@

相关内容