Alignat 的正确使用——部分重叠

Alignat 的正确使用——部分重叠

我对 的某种用法感到困惑alignat。(我知道网上有很多关于该用法的资料,但即使如此,我还是无法解决这个问题。)

让我给出一个 MWE。

\documentclass[]{article}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\begin{document}

\begin{alignat*}{2}
    &\text{by some long reference... ... ...},
&\quad
    a &= b;
\\
    &\text{by Lem1},
&\quad
    a_1 + a_2 + a_3 - b_2 - b_3 &= b_1.
\end{alignat*}

\end{document}

图像

我希望两个等号=对齐,两个bys 对齐(左)。但是,我不希望中间有大片空白。我希望第一行的长文本与第二行的长公式重叠。(我试图用图片上的箭头来表示这一点。)

如果有人能帮我找到解决方案,那就太好了!如果他们能解释一下就更好了为什么/如何它有效——总的来说我确实有点挣扎alignat,并且想学到更多!

答案1

默认情况下,的右边缘与\text{by some long reference... ... ...},的左边缘接触\quad a_1 + a_2 + a_3 - b_2 - b_3,因此会产生不必要的水平的空格。

解决这个问题的一种方法是将过长的部分放入一个盒子中,并为该盒子指定一个较窄的宽度(例如,下面的盒子很0pt宽;也就是说,盒子不占用任何空间):

\documentclass{article}

\usepackage{amsmath}

\begin{document}

Make the second line exactly separated by a \verb|\quad|:
\begin{alignat*}{2}
    &\makebox[0pt][l]{by some long reference... ... ...,}
&\quad
    a &= b;
\\
    &\text{by Lem1},
&\quad
    a_1 + a_2 + a_3 - b_2 - b_3 &= b_1.
\end{alignat*}
Or make the first line exactly separated by a \verb|\quad|:
\begin{alignat*}{2}
    &\text{by some long reference... ... ...,}
&\quad
    a &= b;
\\
    &\text{by Lem1},
&\quad
    \makebox[0pt][r]{$\displaystyle a_1 + a_2 + a_3 - b_2 - b_3$} &= b_1.
\end{alignat*}

\end{document}

两个对齐解决方案

考虑到这是一个相当不寻常的布局(因为解释性文字通常出现在右侧),您必须决定更改哪一行。

相关内容