Overfull / Underfull \hbox

Overfull \hbox 警告表示某一行无法正常断开,因而超出了右边距Underfull \hbox 则相反,表示某一行过于松散(空白被拉得太大)。常见原因是不可断开的长内容:长 URL、长单词、代码字符串。本页说明原因和处理方法。

两种警告的区别

Overfull \hbox (X pt too wide) 表示文字伸出了右边距(在 draft 模式下会在页边看到黑色标记),这是实际可见的问题。Underfull \hbox (badness N) 表示 TeX 无法很好断行,只能把空白拉得过大,是“太松”的警告,紧急度较低。两者都会用 “in paragraph at lines A--B” 指出相关行范围。

常见原因

  • 无法断开的长单词、长 URL、代码字符串或型号。
  • 栏宽太窄(双栏、表格内部等)。
  • \\ 强行制造了很短的末行。

解决方法

  • 改写 是最干净的办法;常常改一个词就能解决。
  • URL\url{...}url / hyperref),让它在合适位置断开。
  • 加载 microtype:细微的字符 protrusion 和字宽伸缩会显著减少 overfull/underfull。几乎没有成本,值得默认加入。
  • 顽固单词可用 \-(可选连字符)或 \hyphenation 例外允许断开;也确认语言设置是否正确(babel),见“行与分页”。
  • 局部用 \sloppy / sloppypar 放宽词间距。
  • 很小的问题可用 \hbadness / \hfuzz 提高阈值,只隐藏警告而不改变输出。
latex
\usepackage{microtype}   % overfull/underfull を大幅に減らす / cuts them dramatically
\usepackage{hyperref}    % \url{} を提供 / provides \url
...
\url{https://example.com/very/long/path}   % 適切な位置で折る / breaks sensibly