如何在同一个“对齐”环境中拥有本地对齐组?

如何在同一个“对齐”环境中拥有本地对齐组?

对于以下内容,我需要找到一种更清晰的方法来拥有一个alignat环境并将前两行彼此对齐,同时将后两行彼此对齐,以便所有行的垂直间距保持一致。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools, nccmath}

\begin{document}
    \begin{fleqn}[0pt]
        \begin{alignat}{2}
            & a &&= b\\
            %
            & x &&= y
        \end{alignat}\vspace*{-2\baselineskip}
        \begin{alignat}{2}
            & a &&= b\\
            %
            & xxx &&= yyy
        \end{alignat}
    \end{fleqn}
\end{document}

答案1

您可以删除\belowdisplayskip\abovedisplayskip,但也要注意显示中的行间距要扩大\jot

\documentclass[twocolumn]{article}
\usepackage{mathtools, nccmath}

\begin{document}

\begin{fleqn}[14em]
\begin{alignat}{2}
  & a &&= b\\
  & x &&= y
\end{alignat}\par\nopagebreak
\vspace*{\dimeval{-\abovedisplayskip-\belowdisplayskip+\jot}}\noindent
\begin{alignat}{2}
  & a &&= b\\
  & xxx &&= yyy
\end{alignat}
\end{fleqn}

\end{document}

在此处输入图片描述

笔记。我使用twocolumn14em 只是为了将方程式移得更接近数字,以便在较小的图片中更好地显示对齐。

答案2

该解决方案(受到 TeXbook 附录 D 中的代码的启发)在每个alignat组后面都有一个语句,该语句以递归方式向上执行垂直列表并仅重新插入对齐产生的\hboxes 和\penaltys,同时从底部和顶部删除垂直空间。

\documentclass{article}
\usepackage{mathtools, nccmath}
\def\unpack{\unskip\unpenalty\unskip % remove space from bottom
  \count0=\lastpenalty\unpenalty
  \setbox0=\lastbox
  \ifhbox0{\unpack}\box0 \penalty\count0 \else
  \unskip\unskip\unpenalty\unskip\unskip\unskip % remove space from top
  \fi}
\begin{document}
\begin{fleqn}[0pt]
\vbox{
\begin{alignat}{2}
  & a &&= b\\
  & x &&= y
\end{alignat}
\par\unpack
\begin{alignat}{2}
  & a &&= b\\
  & xxx &&= yyy
\end{alignat}
\par\unpack
}
\end{fleqn}
\end{document}

输出

\vbox是必需的,因为\lastbox不能在主垂直列表上使用。

相关内容