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