我经常使用\DeclarePairedDelimiter
该mathtools
包中的命令,并且几乎总是希望分隔符能够自动调整大小。因此,我切换了命令的星号和非星号版本的定义,如中所述这个问题问题是这样做会完全破坏可选的大小参数:
以下是 MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}
\makeatletter
\let\oldabs\abs
\def\abs{\@ifstar{\oldabs}{\oldabs*}}
\makeatother
\begin{document}
\[ \abs{\frac{1}{x}} \quad \abs*{\frac{1}{x}} \quad \abs[\Bigg]{\frac{1}{x}} \]
\end{document}
有没有办法在不破坏尺寸参数的情况下交换星型和非星型的定义?
答案1
您可以使用它\RenewDocumentCommand
来获得所需的行为。
\documentclass{article}
% \usepackage{amsmath} % loaded by mathtools
\usepackage{mathtools}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}
\NewCommandCopy{\oldabs}{\abs}
\RenewDocumentCommand{\abs}{som}{%
\IfBooleanTF{#1}
{\oldabs{#3}}
{%
\IfNoValueTF{#2}
{\oldabs*{#3}}
{\oldabs[#2]{#3}}%
}%
}
\begin{document}
\[ \abs{\frac{1}{x}} \quad \abs*{\frac{1}{x}} \quad \abs[\Bigg]{\frac{1}{x}} \]
\end{document}