我对 的某种用法感到困惑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}
我希望两个等号=
对齐,两个by
s 对齐(左)。但是,我不希望中间有大片空白。我希望第一行的长文本与第二行的长公式重叠。(我试图用图片上的箭头来表示这一点。)
如果有人能帮我找到解决方案,那就太好了!如果他们能解释一下就更好了为什么/如何它有效——总的来说我确实有点挣扎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}
考虑到这是一个相当不寻常的布局(因为解释性文字通常出现在右侧),您必须决定更改哪一行。