\linebreak 命令各种强度的应用

\linebreak 命令各种强度的应用

这是一个由好奇心驱动的问题。

LaTeX\linebreak命令有五个选项,从 0 到 4,决定其强度。\linebreak[0]允许 TeX 在通常不会断行的地方断行,而\linebreak[4]强制他在输入命令的地方断行(因此等同于\linebreak)。

说实话,在我的 LaTeX 实践中,我从未使用过除 之外的任何命令变体\linebreak。因此,我想请您分享您使用其他可能性的经验。更准确地说:

  • 您能否指出在哪些情况下应用它是合理的\linebreak[i]i is not 4您能否解释一下为什么这样做?
  • 也许你们中的一些人制定了一些方便使用 LaTeX 排版的通用规则(类似于例如在单个字母和其后跟的单词之间放置不可断开的空格,如:)a~dog

我认为这可以算作一个 CW 问题,但我的声誉还不够,无法创建它。

答案1

整个 TeX 换行机制是通过最小化段落的不良程度(缺点,或多或少是惩罚的平方)来驱动的。因此,在某种程度上,能够注入不同强度的惩罚是很自然的,例如,您可以模拟数学中的行为,换行可能发生在惩罚默认为 500 ( \relpenalty) 的关系或惩罚默认为 700 ( \binoppenalty) 的运算符处。

然而,正如 egreg 对这个问题的评论,使用\linebreakat all 应该相当罕见,而且如果您想要手动控制,您往往会想要强制中断。此外,标准类中的值有点奇怪:

   0
   51 (`\@lowpenalty`)
  151 (`\@medpenalty`)
  301 (`\@highpenalty`)
10000

这些值在范围内(10000 是最大值)并不是完全均匀分布的,尤其是当缺点公式对这些值进行平方时。

这意味着,while\linebreak[0]可用于允许在通常不允许中断的地方中断,而\linebreak[4]可用于强制中断。并且\linebreak[1 or 2 or 3]偶尔可用作提示。很难找到任何一般情况,在选择使用 1、2 或 3 中的哪一个时可以有任何真正的高级逻辑,尽管显然很容易生成它们行为不同的测试用例,但这三个的惩罚都比数学运算符的惩罚要弱得多,并且比在连字符处中断的惩罚要高一点。(50 是连字符处中断的默认惩罚)。

在上文中,我并没有真正区分\linebreak\nolinebreak(唯一的区别是添加的惩罚的符号)对该段落的整体缺点计算的贡献(正或负)在任何一种情况下都有相同的问题。

相关内容