“overfull hbox” 是什么意思?(为什么一行的末尾有一个黑色标记?)

“overfull hbox” 是什么意思?(为什么一行的末尾有一个黑色标记?)

我经常看到 TeX 输出带有警告overfull hbox, badness 10000。这个消息是什么意思?

答案1

引用菲尔·米勒为了完整起见,答案是:

此消息表示文档中的一行太长,无法容纳在页面的水平空间内,而 TeX 无法找到将其分开的好方法。这通常会导致文本超出页边距,甚至可能超出页面的边缘。常见原因是长单词没有正确的连字符信息和显示的方程式很长。

这些警告也可能通过手动中断工作而发生,-如评论所述塞巴斯蒂安。可以通过导入包\usepackage{hyphenat}并使用其命令\hyp{}来断词(即,hyphenated\hyp{}word而不是)来解决这个hyphenated-word问题。但很容易注意到,\hyp{}一直打字可能会很烦人。下面是babel包简写。参见问题如何创建快捷方式“= 或 \hyp{} 的替代方案?,了解~=速记的用法。因此,您可以这样写hyphenated~=word,而不是hyphenated\hyp{}word

Badboxes 警告也可能是由断线引起的,正如\\另一个\hbox问题所示:如何停止 \newsavebox 向我提供坏盒子警告或如何使用 \setbox 来获得更好的名称?

您可以控制如何overfull hbox, badness配置这些乳胶参数的工作,解释如下:

  1. badness是一个从 0 到 10000 的整数,用于衡量任何给定框中的间距质量。 https://en.wikibooks.org/wiki/TeX/definition/badness

  2. \tolerance一个参数,告诉 TeX 在没有错误的情况下可以允许多少不良程度。[number] 的范围是 0 到 10000,没有单位。 https://en.wikibooks.org/wiki/TeX/tolerance

  3. TeX 基元\pretolerance是一个整数参数,用于 TeX 的换行算法(如下所述)。数量是 -1 到 10000 之间的整数。

    如果\pretolerance是 0 到 10000 之间的整数,则 TeX 的换行算法首先尝试拆分没有连字符的段落。在此尝试中,TeX 会尽量降低每行的不良程度。如果 TeX 可以拆分段落,使得任何行的不良程度都不超过\pretolerance,则 TeX 会接受它。如果这不可能,TeX 将重新尝试拆分段落,并允许使用连字符。在第二次尝试中,将使用整数参数 \tolerance 而不是\pretolerance。如果 TeX 在第二次尝试中失败,则会在日志文件中报告错误。

    如果\pretolerance-1,那么 TeX 将绕过第一次尝试断开没有连字符的段落。 https://en.wikibooks.org/wiki/TeX/pretolerance

关于这些问题,有更多有关换行的相关信息:

  1. \fussy、\sloppy、\emergencystretch、\tolerance、\hbadness 是什么意思?
  2. \tolerance 和 \badness 之间有什么区别?
  3. 为什么 Latex 可以自动为某些单词添加连字符,而其他单词却不能?
  4. 段落中间有较长的空白

连字:

  1. 让 TeX 尝试不使用连字符进行断行是否仍然值得?
  2. 如何添加全局连字规则?
  3. 如何手动设置单词的拆分位置?

坏盒子:

  1. 我是否需要关心坏盒子?
  2. 如何避免在整个文档中使用 \sloppy 来修复 \hbox 过满的问题?
  3. 水平盒子过满--如何修复?

目录:

  1. 修复目录中的水平盒子过满的问题,删除过多的点
  2. 回忆使用 mathptmx 时目录中神秘的溢出水平盒子
  3. 使用回忆录文档类时,目录条目的 \hbox 过满警告
  4. titletoc:章节标题右侧不齐
  5. 如何在回忆录中将目录排版得参差不齐?
  6. 目录:章节标题右侧不齐

各种各样的:

  1. \vbox 未满
  2. \hspace*{\fill} 和 \hfill 有什么区别?
  3. 如何抑制“Underfull \vbox (badness 10000) ... while \output is active”?
  4. https://texfaq.org/FAQ-overfull(La)TeX 使行溢出
  5. https://texfaq.org/FAQ-paraparam为什么它会忽略段落参数?

答案2

然而,第一个答案并没有真正帮助人们解决问题。看一下:

https://texfaq.org/FAQ-overfull

http://en.wikibooks.org/wiki/LaTeX/Text_Formatting#Hyphenation

了解\tolerance\pretolerance\hyphenpenalty以及它们如何影响过满/不足行为。此外,如果您手动修复文档,可以使用 添加连字词典条目,\hyphenation或使用 在单词中添加自由连字符\-

答案3

此消息表示文档中的一行太长,无法容纳在页面的水平空间内,而 TeX 无法找到将其分开的好方法。这通常会导致文本超出页边距,甚至可能超出页面的边缘。常见原因是长单词没有正确的连字符信息和显示的方程式很长。

答案4

如果您想确切知道溢出发生的位置,请添加以下行:

\documentclass[draft]{article}

它会在那里放置一个真正的黑匣子,这样诊断起来就容易得多。

在此处输入图片描述

注意:草稿模式下,所有图像都不会显示。

相关内容