如果我想要使用的分隔符名称已由其他包声明,那么如何使用\DeclarePairedDelimiter
from引入配对分隔符?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\lvert
and \rvert\rvert
,例如
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
因此我在我的答复中采用了这一改变。
最后,安德鲁注意到,已经\norm
通过定义了\DeclarePairedDelimiter
,这个简单的方法将\let
不起作用,因为还定义了一个相关的宏。