\DeclarePairedDelimiter 的名称已定义

\DeclarePairedDelimiter 的名称已定义

如果我想要使用的分隔符名称已由其他包声明,那么如何使用\DeclarePairedDelimiterfrom引入配对分隔符?mathtools

例如:

\documentclass{minimal}

\usepackage{mathtools}
\usepackage{physics}

\DeclarePairedDelimiter{\norm}{\lvert\lvert}{\rvert\rvert}

\begin{document}
I do not even need to use $\norm{v}$ to have an error.
\end{document}

请注意,与这个问题或者另一个问题我想知道如何覆盖现有的宏,使其成为包中的配对分隔符mathttools,而不是如何使用\newcommand已经定义的名称来制作(在后一种情况下,例如,\renewcommand)。

请注意,问题不在于您应该如何排版范数运算符。

physics人们可能想要将包中的命令重新定义为成对分隔符的原因mathtools是成对分隔符可以在两条不同的行上打开和关闭。

答案1

正如我在评论中指出的那样,可以使用 取消声明宏,例如\norm\let\norm\relax然后,可以将其声明为好像它尚不存在。警告是在重新声明标准 LaTeX(或包定义)符号时要小心,以免破坏其他内容。

\documentclass{minimal}

\usepackage{mathtools}
\usepackage{physics}
\let\norm\relax
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

\begin{document}
I do not even need to use $\norm{v}$ to have an error.
\end{document}

在此处输入图片描述

正如 campa 所指出的,使用\lVert\rVert 强烈最好使用\lvert\lvertand \rvert\rvert,例如

\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

因此我在我的答复中采用了这一改变。

最后,安德鲁注意到,已经\norm通过定义了\DeclarePairedDelimiter,这个简单的方法将\let不起作用,因为还定义了一个相关的宏。

相关内容