如何防止内联数学公式溢出到边距?

如何防止内联数学公式溢出到边距?

当我用 LaTeX 编译文档时,文档中数学模式中的某些公式(介于 之间$ $)会进入超出所有文本的右边距区域。有没有办法解决这个美观问题?

答案1

如果你的公式一开始就不太长,那么你可以使用

\sloppy

在你的段落开头:

The lineshape of the imaginary part of the susceptibility
(e.g. $\mathrm{\mathfrak{Im}}\left(\left.\chi_{\phi\phi}\left(\omega\right)\right|_{B=B_{0}}\right)$
or $\mathfrak{Im}\left(\left.\chi_{\phi\phi}\left(B\right)\right|_{\omega=\omega_{0}}\right)$)
for sufficiently small damping and a symmetric excitation measurement
projection ...

生产 In-text formula reaching out of text margins

然而

\sloppy The lineshape of the imaginary part of the susceptibility
(e.g. $\mathrm{\mathfrak{Im}}\left(\left.\chi_{\phi\phi}\left(\omega\right)\right|_{B=B_{0}}\right)$
or $\mathfrak{Im}\left(\left.\chi_{\phi\phi}\left(B\right)\right|_{\omega=\omega_{0}}\right)$)
for sufficiently small damping and a symmetric excitation measurement
projection ...

生产

In-text formula within text margins at the cost of inconsistent whitespaces

如果你的公式太长,一行写不下,有几种方法可以引入\newline在公式中引入 s。例如在内联数学模式中允许在“,”处换行吗?

答案2

LaTeX 可以在内联公式中换行,但是它只在某些特定位置这样做。您\allowbreak也可以在允许的地方插入。

如果您想允许内联数学公式中的某些符号(例如逗号)换行,这里有一个解决方案:允许在内联数学模式中在“,”处换行

一般来说,当我注意到内联数学由于过长而出现换行问题时,我会考虑使用来显示它\[ ... \]

答案3

您有三个选择,其中两个已经提到过:

  1. 允许在等式内有更多换行符。

  2. 将方程式排版在单独的行上,即不使用数学环境,而是使用来自额外软件包(如 amsmath)的方程式、displaymath 或它们的变体。如有必要,强制或允许换行。

  3. 您描述的问题与公式没有直接关系。LaTeX 根据一组规则排版文本(和内联数学)。LaTeX 在单词(或您的情况下的公式部分,通常是块)之间插入空格以获得对齐的文本布局。可以使用的空格量有一个上限。您的公式是一个大块。它不能分成两行,因为不允许换行。但是,它也不能移动到下一行,因为这会导致上一行出现太多空白。在 LaTeX 语言中,发生了“过满的水平盒”,您应该使用上面提到的技术之一来修复它。但是,您也可以在相关段落之前的任意位置使用命令告诉 LaTeX 对空格的限制较少\sloppy

答案4

正如您所注意到的(让您很懊恼!),TeX(和 LaTeX)不会在任何地方中断内联数学表达式。首选的断点是等号和二进制关系符号(例如加号和减号)。您必须查看代码并决定是否可以 (i) 将一些较长的公式分解为较小的部分和/或 (ii) 将它们设置为单独一行的显示数学格式。

如果所讨论的公式很长,比如说,长于行长的三分之一,那么后一种方法可能特别有用。要将公式放在单独的行上,您有几种选择。最古老的方法,由 Knuth 在 TeXbook 中指出,是将所讨论的公式括在双美元$$符号 ( ) 中。然而,这种方法理所当然地被贬低现在已经没有任何理由使用它了;参见这个问题列出其所有缺点。 不应$$使用 ,而应使用 (a)\[\]控制字(LaTeX 的默认机制)或 (b) 命令\begin{equation*}\end{equation*};您需要加载amsmath包才能使用后一种方法。 这两种方法都会生成一个未编号的方程(或方程片段——公式中的任何地方都不需要等号),单独占一行。

我喜欢选项 (b) 的原因是它非常明显地吸引了人们的注意力,使得相关公式意外进入显示模式的可能性大大降低(至少对我来说!)。此外,如果您决定要将方程式从未编号形式更改为编号形式,只需从字符串中删除星号即可equation*;相反(从编号形式变为未编号形式)同样可行。

相关内容