我希望所有方程式都沿着“=”符号正确对齐。但我得到的结果是:考虑这个 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
这里有三种方法:使用\MoveEqLeft
from 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
。整个东西放在对齐点的右侧,然后手动向左移动,以便等号对齐。当然,移动的量取决于所涉及的实际表达式,因此您必须手动操作。