LaTeX 中 badness 和 penalty 有什么区别?
坏和惩罚是一样的吗?
不良程度和惩罚的数值在什么范围内?
答案1
正如评论中提到的,这两项都是 TeX 实现的一部分。在 TeX 的框惩罚粘合模型中,惩罚被列为核心概念,而坏处与框有关。
坏性和惩罚是两个不同的概念,但它们具有相同的尺度,即当它们对缺点计算。例如,缺点用于对段落的不同换行符集进行排名。正如一条评论所述,在此计算中使用了平方的坏度和惩罚值。坏度始终为正数(最高为 10000 或人为的),惩罚值在 -10000 到 10000 范围内,当它们用于缺点公式时,它们会保留其符号。
坏处是 TeX 根据所需的拉伸或收缩量与可用的拉伸或收缩量之比计算得出的结果。这适用于水平(段落)或垂直(页面)计算。用户无法直接影响此计算;只能使用 为TeX 执行的\pretolerance
第一遍和\tolerance
后续遍历指定上限,以查找段落中的换行符。普通 TeX 使用值 100 和 200,但 LaTeX 中的某些命令(例如\sloppy
)会更改\tolerance
。(还有更多参数用于表示不良程度,例如\hbadness
和 ,\vbadness
它们是有关框过满的警告消息的下限。)
惩罚是 TeX 根据用户可以操作的参数添加到分隔符中的内容,或者用户直接将其输入到输入源中。例如,段落中的两个参数称为\hyphenpenalty
(在 TeX 插入的连字符处分隔)和
\exhyphenpenalty
(在输入中出现的连字符处分隔);还有更多,例如在数学模式中。对于分页符,例如,\brokenpenalty
如果页面上的最后一行以连字符结尾,则应用该参数。还有更多。
用户可以使用命令 输入惩罚\penalty
。粘连处的断行没有参数驱动的惩罚,其惩罚为 0。因此,\penalty
如果要对粘连处的断行进行不同处理,用户必须通过 指定一个值。通常在单词之间使用波浪符号来防止粘连处的断行,因为它包含 10000 的惩罚(不允许断行)。另一方面,即使没有粘连或连字符,TeX 也允许以小于 10000 的惩罚进行断行。
一个参数\linepenalty
具有特殊含义:它被添加到段落中行的粗细程度中;因此它与换行没有直接关系。(在许多情况下,它有助于保持段落中的行数较少。)