我使用\allowbreak
来将长表达式换行到多行。出于某种原因,以这种方式换行的连续数学行总是没有任何行间距。我还没有找到任何可以增加间距的 等。有什么建议吗\setstretch
?\linespread
编辑:下面添加了示例。这会产生具有大量间距的文本段落,但数学表达式的两行却粘在一起。我猜这是一致的,因为数学表达式的两个基线之间的距离至少是文本的两个基线之间的距离。
因此,提出我的问题的更好方式是:在下面的例子中,如何确保数学行不会粘在一起,而是在它们之间留出一点垂直空间,而不会改变文本行的行距?
\documentclass{article}
\usepackage{lipsum}
\everymath{\displaystyle\allowbreak}
\linespread{2.0}
\begin{document}
\lipsum[1]
$\frac{1}{c_s^{2}} \partial_{t}{\psi_{1}}
\partial_{t}{\rho_{0}}+\frac{1}{c_s^{2}} \partial_{t}{\rho_{0}}
\partial_{i}{\psi_{1}} v^{(0)}_{i}+\frac{1}{c_s^{2}}
\partial_{t}{\partial_{t}{\psi_{1}}} \rho_{0}+\frac{1}{c_s^{2}}
\partial_{t}{v^{(0)}_{i}} \partial_{i}{\psi_{1}}
\rho_{0}+\frac{1}{c_s^{2}} \partial_{t}{\partial_{i}{\psi_{1}}}
\rho_{0} v^{(0)}_{i}+\frac{1}{c_s^{2}} \partial_{t}{\psi_{1}}
\partial_{i}{\rho_{0}} v^{(0)}_{i}+\frac{1}{c_s^{2}}
\partial_{i}{\partial_{t}{\psi_{1}}} \rho_{0}
v^{(0)}_{i}$
\lipsum[1]
\end{document}
答案1
TeX 将确保基线间距相等,除非一行中最深的对象和下一行中最高的对象之间的距离小于\lineskiplimit
(默认值 0pt)。虽然这不是完全的事实,但对于这种情况来说已经足够了。
在您的文档中,由于基线之间的距离设置为 24pt \linespread{2}
。
最深的物体是\frac{1}{c_s^2}
,也是最高的物体。它的深度为 9.33168pt,高度为 13.20952pt。
将这些相加,我们得到 22.54120pt,这小于基线之间的通常距离,因此不会添加额外的空间,并且基线之间的距离为 24pt。
只是做实验,尝试做\linespread{1.8}\lineskip=30pt
,你会看到
我\noindent
在公式前面添加了内容,以避免出现与当前问题无关的过满框。
现在深度和高度的总和大于基线跳过,因此\lineskip
插入胶水以拉开它们之间的距离(默认值为 1pt)。
与其他软件不同,TeX 不会通过在行间插入固定量的粘连来实现行距:这将导致根据上行或下行的存在而产生不同的行距。相反,它会在基线之间保持恒定的距离,直到可能为止。
\lineskiplimit
\lineskip
你可以做的是增加:的值
\lineskip=6pt
\lineskiplimit=18pt
你得到
这绝对是错的。但文档是你的;请调整值以适应。如果你还想让“rutrum”和公式之间的距离更大,请将 的值设得更大\lineskiplimit
。
问题出在声明中
\everymath{\displaystyle}
(请注意,这\allowbreak
根本没有任何作用,因为它只是在每个数学公式的开头插入一个零惩罚,这是无用的,甚至是坏的。)这样的声明是破坏文档外观的最佳方法之一。
仅用于比较,这里是没有可怕声明的输出,它看起来相当不错(考虑到双倍行距的糟糕情况)。