我知道我可以将控制序列重新定义为空或\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
。