Переполненный горизонтальный ящик

Линии, выходящие за пределы поля, и когда следует обратить на это внимание.

Переполненный горизонтальный ящик

Симптом

В журнале сообщается что-то вроде «Переполнение \hbox (слишком широкий на 14,2 пт) в абзаце в строках 87–92», а в PDF-файле одна строка этого абзаца выступает за правое поле. Документ по-прежнему компилируется, поскольку это скорее предупреждение, чем ошибка, но выступающая линия видна при печати, и рецензенты это замечают. В режиме черновика (\documentclass[draft]{...}) LaTeX помечает каждого нарушителя черным прямоугольником, что позволяет легко его обнаружить.

Почему это происходит

TeX разбивает абзацы на строки, взвешивая все возможные точки разрыва и выбирая расположение с наименьшей общей «плохостью», где «плохость» измеряет, насколько пробелы в строке должны были растянуться или сжаться. Иногда приемлемого соглашения не существует: длинный URL-адрес вообще не содержит точек останова, встроенные математические вычисления считаются почти неразрывными, или в длинном слове нет записи переноса. Вместо того, чтобы растягивать пробелы за пределы допуска и создавать видимые разрывы в линии, TeX позволяет линии работать долго и сообщает вам об этом. Переполненный блок — это то, что TeX отказывается сделать абзац уродливым иным способом.

Исправления, от лучших до самых грубых

Лучшее решение — редакционное. Перефразирование предложения, перемещение длинного слова из конца строки или разделение одного предложения на два обычно устраняют проблему без какого-либо кода и часто в любом случае улучшают прозу.

Для URL-адресов заключите адрес в \url{...} из пакета url или hyperref, чтобы его можно было разбивать на косые черты и точки, и загружайте пакет xurl, когда вам нужны разрывы практически на любом символе. Для широкой встроенной формулы либо отобразите ее, либо используйте разрываемую среду, например «multline» из «amsmath», когда само уравнение слишком длинное для строки.

Два улучшения на уровне преамбулы помогают во всем мире. Загрузка «микротипа» позволяет символам немного выступать вперед и немного расширяет шрифты, что устраняет многие незначительные случаи, даже не заметив вас. Правильная установка языка документа с помощью «babel» или «polyglossia» дает TeX правильные шаблоны расстановки переносов, поскольку слово, которое он не может расставить через перенос, является словом, которое он не может разбить.

Когда следует позаботиться

Число в предупреждении означает превышение. Все, что меньше 2 пт, невидимо для читателей и его можно смело игнорировать в черновике. Десятки моментов стоит исправить, прежде чем кто-нибудь увидит PDF-файл. Разумный рабочий процесс — игнорировать переполненные поля во время записи, затем просмотреть журнал один раз перед отправкой и исправить несколько оставшихся, сначала самые большие. Не поддавайтесь \sloppy и другим хакам с глобальными допусками: они заменяют несколько выступающих линий на свободные, неравномерные интервалы по всему документу.

Вернуться к Журнал грамотности