水平ボックスがいっぱいになりすぎた

余白に入り込むラインとケアするタイミング。

水平ボックスがいっぱいになりすぎた

症状

ログには、「段落 87 ~ 92 行目で \hbox がいっぱい (14.2pt が広すぎます)」のような内容が報告されており、PDF ではその段落の 1 行が右マージンにはみ出しています。これはエラーではなく警告であるため、文書は引き続きコンパイルされますが、はみ出した線は印刷で表示され、レビュー担当者は気づきます。ドラフト モード (\documentclass[draft]{...}) では、LaTeX は各違反者を黒い四角形でマークするため、見つけやすくなります。

なぜそれが起こるのか

TeX は、考えられるすべての区切りポイントを比較検討し、合計の「悪さ」が最も少ない配置を選択することによって、段落を行に分割します。ここで、悪さは、行上のスペースがどの程度伸縮する必要があるかを測定します。場合によっては、許容できる取り決めが存在しないことがあります。長い URL にブレークポイントがまったく含まれていなかったり、インライン計算がほぼ解読不可能なものとして扱われたり、長い単語にハイフネーションエントリがなかったりします。 TeX では、許容範囲を超えてスペースを引き延ばして目に見えて隙間のある線を生成するのではなく、線を長く伸ばしてそれについて知らせます。過剰なボックスは、別の方法で段落を醜くすることを TeX が拒否していることを示しています。

最善の修正から最も根本的な修正まで

最善の修正は編集です。文を言い換えたり、長い単語を行末から遠ざけたり、1 つの文を 2 つに分割したりすると、通常はコードなしで問題が解決され、とにかく散文が改善されることがよくあります。

URL の場合は、「url」または「hyperref」パッケージの「\url{…}」でアドレスをラップし、スラッシュとドットで改行できるようにし、ほぼすべての文字で改行が必要な場合は「xurl」パッケージをロードします。幅の広いインライン数式の場合、数式自体が行に対して長すぎる場合は、それを表示するか、amsmathmultline などの分割可能な環境を使用します。

プリアンブル レベルの 2 つの改善は、世界的に役立ちます。 「microtype」をロードすると、文字が部分的にはみ出し、フォントがわずかに拡大され、気付かないうちに多くの限界的なケースが解決されます。 babel または polyglossia を通じて文書言語を正しく設定すると、TeX に正しいハイフネーション パターンが与えられます。ハイフネーションできない単語は分割できない単語だからです。

いつケアするか

警告内の数値はオーバーシュートです。およそ 2 ポイント未満のものは読者には見えず、下書きでは無視しても安全です。他の人が PDF を見る前に、数十の点を修正する価値があります。賢明なワークフローは、書き込み中にいっぱいになったボックスを無視し、送信する前に一度ログをスイープし、残っている少数のボックスを大きいものから順に修正することです。 \sloppy やその他のグローバル許容ハックに抵抗してください。これらは、文書全体にわたってゆるく不均等な間隔を得るために、数行のはみ出しを引き換えます。

ログ読解 に戻る