2019 年 8 月更新

2019 年 8 月更新

我已经嵌套收集并根据对齐

\begin{gather}
       \sum\limits_{i=1}^n i + \text{expression} = \dfrac{n(n-1)}{2} \label{l1}\\
       \begin{align}
            a+\text{expression}&=b \\ %\label{l2} doesnt work
            c&=d+\text{expression} \\
            e+\text{long expression}&=f-\text{expression}
       \end{align}
 \end{gather}

得到如下输出: 在此处输入图片描述

问题在于不可能单独标记所有方程。这个问题与在 我如何得到这种奇怪的对齐?,除了我的问题中第一行需要居中

谢谢你的帮助。

答案1

官方指南中明确提到了使用aligninside的可能性。gatheramsmath

然而,看起来有一个错误\label;这些错误似乎是无害的,因为标签尽管被正确吸收了,所以我想应该可以解决这个问题。

与此同时,你可以用amsmath低级黑客手段将线居中:

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\begin{align}
\multispan{2}\hfill$\displaystyle
  \sum_{i=1}^n i + \text{expression} = \dfrac{n(n-1)}{2}
$\hfill \label{l1}\\
a+\text{expression}&=b \label{l2} \\
c&=d+\text{expression} \label{l3} \\
e+\text{long expression}&=f-\text{expression}
\end{align}

\eqref{l1} and \eqref{l2} and \eqref{l3}

\end{document}

它适用于当前的显示,但不能保证普遍适用。

在此处输入图片描述

2019 年 8 月更新

事实证明,这个问题本质上只是表面问题:

\documentclass{article}
\usepackage{amsmath}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\endalign}{\restorealignstate@}{\global\let\df@label\@empty\restorealignstate@}{}{}
\makeatother

\begin{document}

\begin{gather}
  \sum_{i=1}^n i + \text{expression} = \frac{n(n-1)}{2} \label{l1}\\
  \begin{align}
    a+\text{expression}&=b \label{l2} \\
    c&=d+\text{expression} \\
    e+\text{long expression}&=f-\text{expression}
  \end{align}
\end{gather}

\eqref{l1} and \eqref{l2}

\end{document}

在此处输入图片描述

答案2

这里有两种方法可以对齐集合中的方程式。第一种方法是使用\phantom\mathllap\mathrlap。第二种方法是使用保存框和\mathmakebox。诀窍是将最长的表达式放在 的左侧和右侧,=并使所有内容具有相同的宽度。

注意:要使最后一行起作用,需要在 之外定义保存框gather

当然,我很难将其中任何一个称为优雅。

\documentclass{article}
\usepackage{mathtools}

\begin{document}
\begin{gather}
       \sum\limits_{i=1}^n i + \text{expression} = \dfrac{n(n-1)}{2} \label{l1}\\
       \phantom{e+\text{long expression}}\mathllap{a+\text{expression}}
         =\mathrlap{b}\phantom{f-\text{expression}} \label{l2} \\
       \phantom{e+\text{long expression}}\mathllap{c}
         =\mathrlap{d+\text{expression}}\phantom{f-\text{expression}} \\
       e+\text{long expression}=f-\text{expression}
\end{gather}

\eqref{l1} and \eqref{l2}

\sbox0{$\displaystyle e+\text{long expression}$}%
\sbox1{$\displaystyle f-\text{expression}$}%
\begin{gather}
       \sum\limits_{i=1}^n i + \text{expression} = \dfrac{n(n-1)}{2} \\
       \mathmakebox[\wd0][r]{a+\text{expression}}
         =\mathmakebox[\wd1][l]{b} \\
       \mathmakebox[\wd0][r]{c}
         =\mathmakebox[\wd1][l]{d+\text{expression}} \\
       \usebox0=\usebox1
 \end{gather}

\begin{equation}
       \sum\limits_{i=1}^n i + \text{expression} = \dfrac{n(n-1)}{2} \label{l1}
\end{equation}
\vspace{\dimexpr \smallskipamount-\abovedisplayskip-\belowdisplayskip}%
\begin{align}
a+\text{expression}&=b \\ %\label{l2} doesnt work
            c&=d+\text{expression} \\
            e+\text{long expression}&=f-\text{expression}
\end{align}

\end{document}

演示

相关内容