Overfull \hbox は、行をうまく分割できず 右マージンをはみ出した という警告、Underfull \hbox は逆に 行が間延びした(空きを引き伸ばしすぎた)という警告です。たいていの原因は、折れない長いもの——長い URL、長い単語、コード文字列。このページは理由と対処を扱います。
2 つの警告の違い
Overfull \hbox (X pt too wide) は、文字が右マージンを越えて飛び出した状態です(draft モードだと余白に黒い罫線が出ます)。見た目に直結する実害です。Underfull \hbox (badness N) は、TeX がうまく折れず空きを伸ばしすぎた「間延び」の警告で、緊急度は低め。どちらも「in paragraph at lines A--B」で該当の行範囲を示します。
主な原因
- 分割できない長い語・長い URL・コード文字列・型番。
- 段が狭い(2 段組みや表の中など)。
\\で短い最終行を強制した。
対処
- 言い換え が一番きれい——一語直すだけで解けることが多い。
- URL は
\url{...}(url/hyperref)で、適切な位置に折らせる。 - microtype を読み込む——文字の微妙な突き出しと字幅伸縮で 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