![我是否需要关心坏盒子?](https://linux22.com/image/248095/%E6%88%91%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E5%85%B3%E5%BF%83%E5%9D%8F%E7%9B%92%E5%AD%90%EF%BC%9F.png)
当我从 LaTeX 源编译我的 PDF 时,我是否必须关心有关“坏框”的所有消息(当前为 28 条)?
我觉得 PDF 不错。
答案1
值得注意的是,TeX 在这里不做出价值判断。
这用户或者更可能是代表用户的类文件,放对框可能溢出的数量、短页面允许的拉伸量等进行限制。只有超出这些用户设置的限制时,TeX 才会发出警告。
因此,如果您设置了包含大量不可拆分大块的复杂材料,则意味着约束可能不正确。(它们主要针对以可以连字符连接的文本为主的副本而设计,并且有足够的单词间拉伸以获得紧密贴合的框。)
与其让 TeX 尝试满足无法实现的约束,然后抱怨无法满足,不如修改(放宽)约束。但在这样做之前,您应该确保它们确实是无法实现的,而不仅仅是用户错误阻止 tex 找到良好的布局。
根据要求添加了一些一般注释:
设置仅有的影响警告信息。
有几个设置只影响 TeX 发出的消息。例如,如果你知道一些框会超出 2pt(并且你不介意这一点),但你希望在框超出 1cm 时收到警告,那么设置
\hfuzz=2pt
这将使不排版有所不同,但会抑制对略微过满的框的警告。
\vfuzz
对于垂直盒子来说也是一样的。
相似的是\hbadness
哪些vbadness
是如何的衡量标准
坏的一个盒子通常表示必须拉伸多少白色空间。确切的数字通常不是那么重要,但 0 是好的,而 10000 是无限坏(TeX 的坏度计算会任意将任何非常糟糕的盒子强制到这个数量)。
该参数\tolerance
告诉 Tex 应允许多大的拉伸。TeX 会尝试以某种方式换行,以使不良程度保持在指定的容差以下。
良好的印刷质量表明您不应该忽略(或关闭)这些警告,但有时这样做是有意义的。例如,MathML 建议的 PDF 版本由 LaTeX 从主要为规范 HTML 版本设计的源自动设置。因为它有许多一行或两行的段落和许多缩进的表格和示例,所以右边距本来就很不均匀,所以偶尔让过大的示例突出来也没什么不好,它设置为
\hfuzz=20pt
\vfuzz=20pt
\hbadness=2000
\vbadness=\maxdimen
不影响好盒子排版的设置
TeX3 引入了一个参数\emergencystretch
,如果默认拉伸不能产生良好的断点,则可以更均匀地向段落添加额外的拉伸。有时将其设置为非零值可能会有所帮助。
确实影响排版的设置。
LaTeX 有一个命令\sloppy
可以设置更宽松的排版
\def\sloppy{%
\tolerance 9999%
\emergencystretch 3em%
\hfuzz .5\p@
\vfuzz\hfuzz}
容忍度的设置使其比可能想要的更加草率,可能值得尝试只设置
\emergencystretch
。
LaTeX 使用的默认繁琐设置是
\def\fussy{%
\emergencystretch\z@
\tolerance 200%
\hfuzz .1\p@
\vfuzz\hfuzz}
对于垂直分页,如果输出例程中出现未满框,您可能更喜欢使用\raggedbottom
而不是 ,
\flushbottom
因为这会在每页末尾添加可拉伸空间,因此不会出现未满页面(但短页将被默默接受)。当然,可以在这两个极端之间找到某种方法,即添加仅延伸有限量的粘合,而不是填充粘合。
以上是主要全球的设置,但是文档设计的每个方面都会影响这一点。特别是,如果显示元素(例如列表和显示的数学)之间的空间以及段落之间的空间有弹性这样 TeX 就更容易找到“好的”分页符,但这意味着不同页面上的行之间没有垂直对齐。尤其是对于使用双页跨页的书籍设计,设计师通常希望将文本保持在网格上,文本始终在固定位置对齐。这通常意味着您必须使所有垂直空间更加严格,这增加了 Tex 发出有关 vbox 过满或过满警告的可能性。
答案2
是的,你一定要照顾好他们。
Overfull \hbox
消息告诉您某条线超出了右边距;Underfull \hbox
消息告诉您某些行排版不佳(或者您错误地使用了\\
垂直空格(例如,\\
连续输入两个);Underfull \vbox
这些消息通常会告诉您页面排版不佳。
有多少坏事需要行动很难说,但我会绝不接受其中有一些的最终 PDF Overfull \hbox
。