在多行方程中缩放绝对值括号

在多行方程中缩放绝对值括号

我无法正确缩放绝对值括号。

MWE 看起来像这样

\newcommand{\abs}[1]{\left| #1 \right|}
\begin{align*}
 &\abs{x y} \cr
 \abs{&x y} \cr
 \abs{&x \cr &y}
\end{align*}

产生的输出在第一种情况下给出了正确的括号 |xy| 但在所有其他情况下仅显示第一个(正确缩放的)括号,而不显示第二个括号,即 |xy 。

解决这个问题的正确方法是什么?

答案1

使用\DeclarePairedDelimiter和,您可以。如果您使用带星号的版本,此代码中定义的命令会在分隔符前面添加一对隐式。或者,您可以使用可选参数微调垂直规则的大小:, , &c \MTkillspecial。:mathtools\ abs\left \right\abs[\big]\abs[\Big]

\documentclass{article}
\usepackage{mathtools, xparse}

\usepackage{xcolor}

\newcommand\MTkillspecial[1]{% helper macro
\bgroup
\catcode`\&=9
\let\\\relax%
\scantokens{#1}%
\egroup
}

\DeclarePairedDelimiter\abs\lvert\rvert
\reDeclarePairedDelimiterInnerWrapper\abs{star}{
\mathopen{#1\vphantom{\MTkillspecial{#2}}\kern-\nulldelimiterspace\right.}
#2
\mathclose{\left.\kern-\nulldelimiterspace\vphantom{\MTkillspecial{#2}}#3}}


\begin{document}

\begin{align*}
         & \color{red}\abs*{\color{black}x y} \\
  \abs*{ & \color{red}x\color{black} y} \\
  \abs*{ & \color{red}x \\ &\color{red}y\color{black} }
\end{align*}

\end{document} 

在此处输入图片描述

相关内容