如何清除 TeX 内存中用户定义的控制序列?

如何清除 TeX 内存中用户定义的控制序列?

我知道我可以将控制序列重新定义为空或\relax,如下例所示。但是,这样做并不能阻止使用该控制序列,因为它仍然已定义。

为了在我的代码中添加一些保护措施,我想清除 TeX 内存中用户定义的控制序列,这样,如果我随后使用该控制序列,就会出现通常的错误Undefined control sequence。我该怎么做?

\documentclass{article}
\begin{document}
\newcommand\foo{foo}
\renewcommand\foo{}
\foo % no error
\end{document}

答案1

诀窍是将宏绑定到未定义的东西。传统上,宏\undefined是未定义的(!),因此您可以简单地执行

\let\foo\undefined

如果由于某些(可能是错误的)原因您或某些包定义\undefined那么此技巧将不起作用。

无论如何,如果您稍后想手动检查是否\foo已定义,则可以使用 LaTeX 的\@ifundefined测试来检测是否\foo未定义或者 \relax

相关内容