重新定义原始参数

重新定义原始参数

我想将原始参数重新定义为宏,并使宏在某些情况下表现得与原始参数相同。

\tracingcommands = 1
\the\tracingcommands
\ifnum\tracingcommands > 0 true\fi

\let\oldtracingcommands\tracingcommands
\def\tracingcommands{\afterassignment\temp\count255}
\def\temp{\oldtracingcommands\count255 \domore}
\def\domore{}

\tracingcommands = 1 % success
\the\tracingcommands % failure
\ifnum\tracingcommands > 0 true\fi % failure

在运行上述示例时,最后两行失败了。如何解决这些问题?

答案1

您可以这样做,只要您在上下文\the中使用该命令即可<number>

\let\textracingcommands\tracingcommands
\def\tracingcommands{\tctoks={\tcgobble}\afterassignment\tcdo\textracingcommands}
\def\tcdo{DONE}
\def\tcgobble#1#2#3#4{\the}
\newtoks\tctoks
\tctoks={\tcgobble}

\tracingcommands=3

\the\tracingcommands

\ifnum\the\tracingcommands<2 SMALL\else BIG\fi

\bye

你为什么要这么做一开始就很令人怀疑。

在此处输入图片描述

相关内容