使用 \DeclarePairedDelimiter 定义的宏后上标太高

使用 \DeclarePairedDelimiter 定义的宏后上标太高

我有一个绝对值的宏(使用\DeclarePairedDelimiterfrom mathtools):

\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}

这对于调整栅栏的大小等非常有用。但我使用时上标位置\abs{x}^2太高了。请参阅以下内容:

PDF 输出

知道这是不是个错误吗,或者我该如何修复它? 编辑:上述行为似乎是由于DeclarePairedDelimiter调用\mathclose/创建子公式而导致的。我不知道这是否是一种设计选择——但我当然想知道是否有一种简单的方法可以解决这个问题。

这是上述内容的代码。

\documentclass{minimal}
\usepackage[active,tightpage]{preview}
\usepackage{varwidth,mathtools}
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\begin{document}
  \begin{preview}\begin{varwidth}{360pt}
    The superscript following \verb'\abs{x}' is higher than that following \verb'\lvert x\rvert'.
    Here is an example:

    \begin{center}
      \verb'\abs{x}^2 \lvert x\rvert^2' produces $\abs{x}^2 \lvert x\rvert^2$.
    \end{center}
    The same happens in displayed math:
    \begin{equation*}
      \abs{x}^2 \lvert x\rvert^2
    \end{equation*}
  \end{varwidth}\end{preview}
\end{document}

提前致谢。

答案1

这是 mathtools 中的设计选择。并非所有用户都知道\rvert比 更好|,所以我们会帮助他们,如果有人想将其用作)(分隔符对,它也会对我们有所帮助。除了在\vpahntom围栏后重复围栏材料外,我不知道还有更好的方法。

但是,在这种情况下,由于您使用了正确的左栅栏和右栅栏,因此有一个出路:

\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\reDeclarePairedDelimiterInnerWrapper{\abs}{nostar}{#1#2#3}

答案2

DeclarePairedDelimiter产生一个子公式。编辑正如@Daleif 建议的那样,这是由于DeclarePairedDelimiter调用\mathclose右括号造成的。

这相当于使用括号({和),它们也会产生数学子公式,有时会导致对齐问题。(顺便说一句,这就是为什么在数学模式下}通常没有相邻的括号)。{}

请参阅以下示例:

\documentclass{minimal}
\usepackage{amsmath,mathtools}
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\begin{document}

    \begin{gather}
      \left|x\right|^2 \lvert x\rvert^2 \\
      \abs{x}^{2} \lvert x\rvert^{2} \\
      {|x|}^{2} \lvert x\rvert^{2} 
    \end{gather}
\end{document}

制作:

在此处输入图片描述

您可以清楚地看到第二个示例(即您的文本)和子公式产生相同的对齐。

看起来指数是应用于整个子公式的,而不是作为变量的指数。

相关内容