Overfull и underfull
Обычно абзацы делаются выровненными по правому краю; при необходимости промежутки между словами растягиваются или сжимаются, а в словах делаются переносы. При этом и для сжатия, и для растяжения промежутков между словами есть пределы, которые TeX старается не превышать.
Если это удается, то получается аккуратный абзац, но нам сейчас интереснее, что происходит в том случае, когда это не удается.
Прежде всего заметим, что "предел сжимаемости" строки не превышается TeX'ом ни при каких условиях2); что бы ни было, строки не станут более тесными, чем им позволяют параметры шрифта. Поэтому строки, которые не удалось ужать, остаются чересчур длинными (при этом, естественно, они выходят на поля документа). С другой стороны, предел растяжимости, за неимением лучшего, может быть превышен. При этом получается то, что полиграфисты называют жидкими, или разреженными строками:
О каждой из этих двух неприятностей TeX сообщает в процессе трансляции (эти сообщения появляются на экране и, кроме того, записываются в log-файл - специальный файл с тем же именем, что у файла, который обрабатывался системой, и расширением log).
Предположим, вы получили строку, выходящую на поля (в нашем примере она отмечена черным прямоугольником):
При этом выдается на экран и записывается в файл с расширением log сообщение наподобие такого:
Overfull \hbox (3.2673pt too wide) in paragraph at lines 8--13 []\OT1/cmr/m/n/10.95 Еще од-но пра-ви-ло от-но-си-тель-но уве-ли-че-ния про-бе-лов: если []Давайте разберем, что в нем написано. Сначала идет надпись "Overfull\hbox", указывающая, что произошло " переполнение" (overfull) строки. В скобках указано, на какое именно расстояние строка выходит за край: на
пункта. (Напомним, что пункт примерно равен одной трети миллиметра). Далее сказано, что переполнение произошло при верстке абзаца (слова "in paragraph"), а затем указаны номера строк исходного файла, в которых был записан этот абзац.Наконец, в этом сообщении приведен фрагмент неудачной строки вблизи ее конца (конца не в исходном тексте, а на печати){Загадочный набор символов, предшествующий фрагменту строки, характеризует текущий шрифт;}. Обратите внимание, что в некоторые слова вставлены дефисы: они показывают те места, в которых TeX в принципе мог бы сделать переносы. Если вглядеться повнимательнее, то станет ясна и причина катастрофы: в слове "если", которым заканчивается строка, дефиса не стоит вообще; значит, программа не смогла найти подходящего места для переноса и оказалась перед неприятным выбором: либо перенести это "если" целиком на другую строку (что, видимо, вызвало бы проблемы в других местах), либо оставить его на этой строке и создать overfull. Выбрано было второе (ниже мы объясним, как можно в какой-то мере управлять этим выбором).
Сообщения о разреженных строках выглядят так:
Underfull \hbox (badness 1142) in paragraph at lines 885--892 []\OT1/cmr/m/n/10.95 Некоторым со-че-та-ни-ям атри-бу-тов ни-ка-ко-го ре-аль-но-го шриф-та [] Главных элементов в этих сообщениях три:
- само слово Underfull, указывающее, что речь идет о разреженной строке;
- указание на строки исходного текста, в которых находится абзац с разреженной строкой (в нашем случае 885-892);
- численная характеристика того, насколько разрежена строка (по-английски это число называется badness). В нашем случае это число равно 1142; вскоре мы обсудим, что оно значит.