我目前在排版环境时遇到一个问题align
。我有一个相对较长的方程式列表,它们应该全部以单个字符为中心,但我希望在方程式之间插入文本,因此我使用了intertext
。由于我的大学强迫我使用 1.5 倍行距,所以我使用\usepackage[onehalfspacing]{setspace}
它。
问题出现的是,根据我的是否\intertext
有一行或多行,文本前的最后一个等式和文本本身之间的垂直距离似乎发生了变化。
这似乎是我使用的行距函数。如果没有行距命令,差异几乎可以忽略不计。使用\usepackage[onehalfspacing]{setspace}
或 \linespread{1.22}
,它们对于文本大致相同,从方程式基线到 第一行的基线,差异上升到 21% intertext
。
是否有其他命令可以引入 1.5 倍行距,而不会根据行数改变间距intertext
? 有什么方法可以强制垂直跳跃相等吗?
我曾经xpatch
将其修补\xxxdisplay(short)skip
为极低的值以更好地显示间距的差异。
使用两个\intertext
s 表示多行文本,公式和文本之间的间距是正确的,但是有一个巨大的两行文本之间的间隙。
梅威瑟:
\documentclass{scrreprt}
\usepackage{mathtools}
\usepackage{lipsum}
\usepackage{xpatch}
\xapptocmd\normalsize{%
\abovedisplayskip=-5pt
\abovedisplayshortskip=-5pt
\belowdisplayskip=-5pt
\belowdisplayshortskip=-5pt
}{}{}
\usepackage[onehalfspacing]{setspace}
%\linespread{1.22}
\begin{document}
\lipsum[1]
\begin{align*}
1 &= 1 \\
1 &= 1
\intertext{short intertext which will only span over one line}
1 &= 1 \\
1 &= 1
\intertext{longer intertext which will span more than one line demonstrating the vertical spacing issue adequately}
1 &= 1 \\
1 &= 1
\end{align*}
\end{document}
答案1
您不希望跳过显示的值,而是希望nodisplayskipstretch
选择setspace
。您可以在\intertext
和之间进行选择\shortintertext
。
\documentclass{scrreprt}
\usepackage{mathtools}
\usepackage[onehalfspacing,nodisplayskipstretch]{setspace}
\begin{document}
Some text which spans more than one line just to show
what happens; we want it to be quite long, so the line
above the display is not short
\begin{align*}
1 &= 1 \\
1 &= 1
\intertext{short intertext which will only span over one line}
1 &= 1 \\
1 &= 1
\intertext{longer intertext which will span more than one line demonstrating the vertical spacing issue adequately}
1 &= 1 \\
1 &= 1
\end{align*}
Some text which spans more than one line just to show
what happens; we want it to be quite long, so the line
above the display is not short
\begin{align*}
1 &= 1 \\
1 &= 1
\shortintertext{short intertext which will only span over one line}
1 &= 1 \\
1 &= 1
\shortintertext{longer intertext which will span more than one line demonstrating the vertical spacing issue adequately}
1 &= 1 \\
1 &= 1
\end{align*}
\end{document}
答案2
我找到了一种缓解此问题的方法 - 不使用\intertext
使用\noalign{\noindent foobar}
均匀垂直间距的结果,与行数无关。
然而,这有一个缺点:\intertext
减少换行后的行距,大概是为了更好地表明文本属于一起。我认为这也是第一行上方间距改变的原因。这仅在使用打印多行时发生\intertext
,并解释了为什么手动增加行距时问题会变得更糟。
现在很有趣的是,想知道是否有办法在 期间改变行距noalign
,但同样只能在行之间改变,而不是在行之前。
\\
MWE 具有固定的垂直间距,但在“文本间”中没有减小的行间距。请注意换行符之前的附加项,否则misplaced \noalign
会抛出一个,因为您会尝试\noalign
使用对齐字符来输入方程式&
:
\documentclass{scrreprt}
\usepackage{mathtools}
\usepackage{lipsum}
\usepackage{xpatch}
\xapptocmd\normalsize{%
\abovedisplayskip=-5pt
\abovedisplayshortskip=-5pt
\belowdisplayskip=-5pt
\belowdisplayshortskip=-5pt
}{}{}
\usepackage[onehalfspacing]{setspace}
%\linespread{1.22}
\begin{document}
\lipsum[1]
\begin{align*}
1 &= 1 \\
1 &= 1 \\
\noalign{\noindent short intertext which will only span over one line}
1 &= 1 \\
1 &= 1 \\
\noalign{\noindent longer intertext which will span more than one line demonstrating the fixed vertical spacing issue adequately}
1 &= 1 \\
1 &= 1
\end{align*}
\end{document}