对齐环境中的 rcase 对齐问题

对齐环境中的 rcase 对齐问题

我希望所有方程式都沿着“=”符号正确对齐。但我得到的结果是:考虑这个 MWE

\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{mathtools}

\begin{document}  
\begin{align}
        \begin{aligned}
            a &= b + c + d\\
            e &= f\\
            \begin{rcases}
                g &= h\\
                i &= j  
            \end{rcases}
            \quad \forall k < l
        \end{aligned}
    \end{align} 
\end{document}

结果是: 在此处输入图片描述

是否存在一个全局解决方案来修复对齐并消除 rcases 环境中左表达式和“=”符号之间的多余空格?

先感谢您!

答案1

下面自动执行rcases-like 构造和其余aligned环境之间的间距校正:

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}

\newlength{\mylen}

\begin{document}

\begin{equation}
  \settowidth{\mylen}{$\displaystyle hijk = {}$\,}
  \begin{aligned}
    a &= b + c + d \\
    e &= g         \\
      &\phantom{{}={}}
      \hspace*{-\dimexpr\mylen+\nulldelimiterspace}
        \left.\begin{aligned}
          hijk &= l \\
             m &= n
        \end{aligned}\right\}
        \quad \forall k < l
  \end{aligned}
\end{equation}

\end{document} 

rcases这个想法是使用在方程对齐的 RHS 上设置-like 构造aligned,然后将其向左移动正确的量,以使等号对齐。\mylen是正确的长度,相当于 -like 构造的最长 LHS rcases,加上适当间距的=\,(由 插入aligned)。

答案2

这里有三种方法:使用\MoveEqLeftfrom mathtools(通过反复试验)、使用array环境和bigdelim包以及使用blkarray

无关amsmath:加载时无需加载mathtools(或empheq)。这是自动的。

\documentclass{scrreprt}
\usepackage{array, bigdelim}
\usepackage{blkarray}
\usepackage{mathtools}

\begin{document}

\begin{align}
        \begin{aligned}
            a &= b + c + d\\
            e &= f\\
             \MoveEqLeft[0.8]\begin{rcases}
            \begin{aligned}
                g & = h\\
                i & = j
            \end{aligned}
            \end{rcases}
            \quad \forall k < l
        \end{aligned}
    \end{align}
\bigskip
\begin{equation}
        \begin{array}{r @{}>{{}}l@{}l}
            a &= \mathrlap{b+ c + d}\\
            e &= f\\
                g & = h & \,\rdelim\}{2}{*}[\quad$ \forall k < l $]\\
                i & = j
        \end{array}
    \end{equation}
\bigskip

    \begin{equation}
        \begin{blockarray}{r @{}>{{}}l}
            a &= \mathrlap{b+ c + d}\\
            e &= f\\
        \begin{block}{r @{}>{{}}l\Right{\}}{\quad$ \forall k < l $}}
                g & = h \\
                i & = j \\
        \end{block}
        \end{blockarray}
    \end{equation}

\end{document} 

在此处输入图片描述

答案3

使用该nicematrix包:

\documentclass{article}
\usepackage{nicematrix}
\usetikzlibrary{decorations.pathreplacing,
                calligraphy}
\tikzset{
B/.style = {decorate,
            decoration={calligraphic brace, amplitude=4pt,
            raise=2mm},% for mirroring of brace
            thick,
            pen colour=black}
        }

\usepackage[active,displaymath, tightpage]{preview}% don't use in real document!
\setlength\PreviewBorder{1em}

\begin{document}
    \begin{equation}
    \setlength\arraycolsep{1pt}
\begin{NiceArray}{RL}%
    [code-after={\tikz\draw[B]  (3-2.north east) -- 
                    node[right=7mm] {$\forall k < l$}
                                (4-2.south east);
                }
    ]
a & = b + c + d  \\
e & = f          \\
g & = h          \\
i & = j           
\end{NiceArray}
    \end{equation}
\end{document}

在此处输入图片描述

注意:为了获得最终效果,您需要至少编译两次文档。

答案4

如果您不介意手动调整间距以便它们在左侧正确排列,您可以执行以下操作:

\documentclass{article}
\usepackage{mathtools}
\begin{document}  
\begin{equation}
    \begin{aligned}
        a &= b + c + d\\
        e &= f\\
          & \mkern-15mu \begin{rcases} \begin{aligned}
                g &= h\\
    i &= j  \end{aligned}
        \end{rcases}
        \quad \forall k < l
    \end{aligned}
\end{equation} 
\end{document}

为了保持正确的间距, 的内部rcases再次被包裹起来,aligned以便术语之间的间距与 外部的间距相同rcases。整个东西放在对齐点的右侧,然后手动向左移动,以便等号对齐。当然,移动的量取决于所涉及的实际表达式,因此您必须手动操作。

相关内容