暂时取消定义“已加星标”的命令

暂时取消定义“已加星标”的命令

我想暂时取消定义一个命令。原因是我需要使用一个特定的类文件,该文件使用 \@namedef 定义方程式*,而且我也很想使用 amsmath 包,因为它特别定义了对齐环境,但它也定义了方程式*环境,所以这会导致编译时出错。

我已经找到了如何暂时禁用不带星号的命令,即通过执行

\makeatletter
\let\oldequation\equation
\let\equation\@undefined
\makeatother

然后加载 amsmath 包。

由于我不太明白的原因,这对等式*不起作用,但显然最后的*开始了一个新的词素。

那么我该如何实现方程式*的类似结果呢?类和样式文件不在我的控制范围内。

答案1

就像\makeatletter在本地写@一封信一样,您也可以在本地写*一封信。

\catcode`\*=11
\makeatletter
\let\oldequation*\equation*
\let\equation*\@undefined
\let\oldendequation*\endequation*
\let\endequation*\@undefined
\makeatother
\catcode`\*=12

相关内容