\let 将控制序列重新定义为原始序列

\let 将控制序列重新定义为原始序列

\pdfprimitivepdfTeX 版本 1.40.0 引入了手册中描述如下的原语。

如果以下控制序列已被重新定义或未定义,则此命令执行以下控制序列的原始含义。如果以下控制序列未定义且从未是原始的,则不会发生任何事情,也不会引发任何错误。如果控制序列最初是可扩展的,则\pdfprimitive扩展任一。否则\pdfprimitive不扩展。

(我认为“either”应该是“too”。)

有没有办法将\let控制序列恢复为原始版本?就像是

\let\input\relax
\pdfletprimitive\input\input

这个想法是\input可以恢复到其原始含义(至少在本地)。显然

\let\input\pdfprimitive\input

不会像

\expandafter\let\expandafter\input\pdfprimitive\input

是行不通的。

答案1

不,恐怕不行。当您将原始定义\let\def原始定义更改为某物时,原始含义不再可用作可访问令牌。\pdfprimitive可用于访问原始的内部定义,但这与“重新生成”可访问令牌不同。您可以获得的最接近的方法是

\def\<primitive>{\pdfprimitive\<primitive>}

对于可扩展基元或

\protected\def\<primitive>{\pdfprimitive\<primitive>}

对于不可扩展的。

相关内容