我的文档中有多个align
环境,由一小段文字隔开:
\begin{align*}
foo &= something very very long compared to the other align
\end{align*}
explanation what I shall do now
\begin{align*}
foo' &= foo + short
\end{align*}
由于第二篇中的文本align
相当短,所以=
符号没有对齐,这是可以预料到的。
有没有什么办法可以让两个等号对齐?
答案1
来自amsmath
文档:
该命令
\intertext
用于在多行显示结构中间简短插入两行文本中的一行...其显著特点是保留对齐,如果您只是结束显示然后随后重新启动它,则不会发生这种情况。\intertext
可能仅出现在\\
或\\*
命令之后。
因此你的例子将是:
\begin{align*}
foo &= something very very long compared to the other align \\
\intertext{explanation what I shall do now}
foo' &= foo + short
\end{align*}
该breqn
包还可以通过其环境实现此功能dsuspend
。
(编辑时添加)从评论来看,似乎有几种不同的方法可以实现此效果。因此,为了帮助您选择,以下是我所知道的所有方法的示例。任何了解更多信息的人都可以直接添加到此答案中,或者发表评论,然后我会添加它。结果如下:
下面是生成该代码的代码:
\documentclass{article}
\thispagestyle{empty}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{breqn}
\begin{document}
\paragraph{Two aligns}
\begin{align*}
\begin{vmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{vmatrix}
&= a e i + b f g + c d h - a f h - b d i - c e g
\end{align*}
%
Whilst for \(2 \times 2\) we have:
%
\begin{align*}
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
&= a d - b c
\end{align*}
\paragraph{One align, intertext preceeded by \textbackslash\textbackslash}
\begin{align*}
\begin{vmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{vmatrix}
&= a e i + b f g + c d h - a f h - b d i - c e g \\
%
\intertext{Whilst for \(2 \times 2\) we have:}
%
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
&= a d - b c
\end{align*}
\paragraph{One align, intertext not preceeded by \textbackslash\textbackslash}
\begin{align*}
\begin{vmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{vmatrix}
&= a e i + b f g + c d h - a f h - b d i - c e g
%
\intertext{Whilst for \(2 \times 2\) we have:}
%
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
&= a d - b c
\end{align*}
\paragraph{One align, shortintertext (mathtools)}
\begin{align*}
\begin{vmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{vmatrix}
&= a e i + b f g + c d h - a f h - b d i - c e g
%
\shortintertext{Whilst for \(2 \times 2\) we have:}
%
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
&= a d - b c
\end{align*}
\paragraph{Using dsuspend from breqn}
~
\begin{dgroup*}
\begin{dmath*}
\begin{vmatrix}
a & b & c \\
d & e & f \\
g & h & i
\end{vmatrix}
= a e i + b f g + c d h - a f h - b d i - c e g
\end{dmath*}
\begin{dsuspend}
Whilst for \(2 \times 2\) we have:
\end{dsuspend}
\begin{dmath*}
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
= a d - b c
\end{dmath*}
\end{dgroup*}
\end{document}
答案2
我还想提供一个(e)plain 版本:
\input eplain % merely for the command below
\leftdisplays % for making the picture smaller
$$ \def\vmatrix#1{\left|\matrix{#1}\right|}
\eqalignno{
\vmatrix{a&b&c\cr d&e&f\cr g&h&i} &= aei + bfg + cdh - afh - bdi - ceg \cr
\noalign{\hbox{Whilst for $2 \times 2$ we have:}} % break away from the align
\vmatrix{a&b\cr c&d} &= ad - bc
}
$$
\bye
答案3
以下示例显示了一种手动实现方程 (1) 和 (2) 之间所需对齐的方法:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
Given that
\begin{equation}
\text{Long left-hand side} = \mathrlap{a}
\phantom{\text{Long right-hand side}.}
\end{equation}
where
\[
b = \text{Some weird definition},
\]
it should be clear that
\begin{equation}
\phantom{\text{Long left-hand side}}
\mathllap{c} = \text{Long right-hand side}.
\end{equation}
\end{document}
上述示例尝试对齐两个方程((1)和(2),并在两者之间进行额外的临时对齐(无论出于何种原因)。这种方法的原理是分别确定左侧和右侧的最长项,并将它们作为\phantom
s 添加到具有较短边的方程中。\mathllap
和\mathrlap
(来自mathtools
) 提供了一种将较短的一边在视觉上隐藏在放置位置上方的方法\phantom
。
当在两个对齐之间插入的内容在\intertext
或下失败时,这种方法可能会有所帮助\shortintertext
。