取消定义 leftbar 环境以消除 memoir 类和 thmbox 包中的多个定义

取消定义 leftbar 环境以消除 memoir 类和 thmbox 包中的多个定义

上下文:我正在使用回忆录类,并且尝试使用thmbox包。但环境在和leftbar中都有定义。memoirthmbox

所以我试图取消定义一个环境,但我只能找到如何取消定义一个命令。通过使用

\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

相关内容