我想将原始参数重新定义为宏,并使宏在某些情况下表现得与原始参数相同。
\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
你为什么要这么做一开始就很令人怀疑。