\pdfprimitive
pdfTeX 版本 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>}
对于不可扩展的。