上下文:我正在使用回忆录类,并且尝试使用thmbox
包。但环境在和leftbar
中都有定义。memoir
thmbox
所以我试图取消定义一个环境,但我只能找到如何取消定义一个命令。通过使用
\let\command\undefined
因此我可以通过以下方式取消定义环境
\let\env\undefined
\let\endenv\undefined
但我不知道这是否是正确的方法。有没有更好的方法?
\documentclass{memoir}
% Work by adding these two lines.
\let\leftbar\undefined
\let\endleftbar\undefined
\usepackage{thmbox}
\begin{document}
Hello.
\end{document}
答案1
是的,可以这样做。
另一种方法是使用\relax
,因为 LaTeX 也认为这是“未定义的”。例如,如果加载了memoir
包,则“取消定义”某些环境:framed
\AtBeginPackage{framed}{%
\let\framed\relax \let\endframed\relax
\let\shaded\relax \let\endshaded\relax
\let\leftbar\relax \let\endleftbar\relax
\let\snugshade\relax \let\endsnugshade\relax}
也可以用不同的名称保留原来的含义:
\let\memoirleftbar\leftbar
\let\endmemoirleftbar\endleftbar
\let\leftbar\undefined
\let\endleftbar\undefined
替代方案\undefined
:
LaTeX 内核使用
\@undefined
(但在序言中,\makeatletter
并且\makeatother
是需要的):\makeatletter \let\leftbar\@undefined \let\endleftbar\@undefined \makeatother
有时我会使用类似的东西
\UnDeFiNeD
。