在多个对齐环境中对齐等号

在多个对齐环境中对齐等号

我的文档中有多个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),并在两者之间进行额外的临时对齐(无论出于何种原因)。这种方法的原理是分别确定左侧和右侧的最长项,并将它们作为\phantoms 添加到具有较短边的方程中。\mathllap\mathrlap(来自mathtools) 提供了一种将较短的一边在视觉上隐藏在放置位置上方的方法\phantom

当在两个对齐之间插入的内容在\intertext或下失败时,这种方法可能会有所帮助\shortintertext

相关内容