从本地组获取全局令牌寄存器的值

从本地组获取全局令牌寄存器的值

给出以下示例代码:

\documentclass{article}

\newtoks\foo
\foo={foo}

\begin{document}
\the\foo,
\begingroup
\foo={bar}
\the\foo
\the\global\foo  % <-- fails
\endgroup
\end{document}

这失败了

! You can't use `\global' after \the.

我的问题很简单,是否有可能得到本地组中的全局值\foo?我猜不是,有什么建议的替代方案吗(尤其是考虑到速度和解析完成后清理临时内存)?

一些背景信息:我想做的是在 LaTeX 中编写一个更复杂的解析器,其中我使用全局标记寄存器来存储输入字符串的其余部分。为了构建最终结果,我需要维护一个子表达式列表,为此我将整个解析器包装到一个本地组中,以获得一个临时标记寄存器列表。解析时使用的寄存器数量会增加和减少。

对于较大的输入,现在可能会发生使用的本地寄存器的数量与用于输入的全局令牌寄存器的数量发生冲突的情况。因此,我的想法是以某种方式确保每当我需要访问输入字符串时,只读取/写入全局寄存器。

相关内容