我想重新定义一个宏参数。这是我迄今为止尝试过的方法:
\def#1{$#1$}
但是它引发了这个严重的错误,我不知道如何修复。
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.66 \def#
1{$#1$}
有人有什么想法吗?
我的实际目标是做以下事情:
\def#1{\noexpand{{#1}}
但它抛出了同样的错误。我这样做只是为了防止#1
以后在宏中扩展。
答案1
从你的帖子中很难猜测你的意图,但我想你的意思是这样的,它在本地重新定义给出的命令#1
(\TeX
这里)以确保安全\edef
。
\def\LocallyMakeSafe#1{%
\edef\tmpA{#1}%
\immediate\write20{aaa: \meaning\tmpA}%
{%
\def#1{\noexpand#1}% local \protect
\edef\tmpB{#1}%
\immediate\write20{bbb: \meaning\tmpB}%
}%
}
\LocallyMakeSafe\TeX
\bye
生成显示前后效果的日志\def#1
aaa: macro:->T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX
bbb: macro:->\TeX