Работа в системе LaTeX




Overfull и underfull


Обычно абзацы делаются выровненными по правому краю; при необходимости промежутки между словами растягиваются или сжимаются, а в словах делаются переносы. При этом и для сжатия, и для растяжения промежутков между словами есть пределы, которые TeX старается не превышать.

Если это удается, то получается аккуратный абзац, но нам сейчас интереснее, что происходит в том случае, когда это не удается.

Прежде всего заметим, что "предел сжимаемости" строки не превышается TeX'ом ни при каких условиях2); что бы ни было, строки не станут более тесными, чем им позволяют параметры шрифта. Поэтому строки, которые не удалось ужать, остаются чересчур длинными (при этом, естественно, они выходят на поля документа). С другой стороны, предел растяжимости, за неимением лучшего, может быть превышен. При этом получается то, что полиграфисты называют жидкими, или разреженными строками:

\begin{flushleft} \tolerance=10000\hbadness=10000 \leavevmode \hbox to .6\hsize{Весьма и весьма разреженная строка.} \end{flushleft}

О каждой из этих двух неприятностей TeX сообщает в процессе трансляции (эти сообщения появляются на экране и, кроме того, записываются в log-файл - специальный файл с тем же именем, что у файла, который обрабатывался системой, и расширением log).

Предположим, вы получили строку, выходящую на поля (в нашем примере она отмечена черным прямоугольником):

\par\nopagebreak\smallskip\moveright 2em\vbox{ \typeout{Не обращай внимания на следующий Overfull!} \hyphenation{если}\fussy\tolerance=100 \advance\hsize-4.9em\overfullrule 2pt Еще одно правило относительно увеличения пробелов: если пробел задан как неразрывный, то он не увеличивается, невзирая ни на какие предшествующие знаки препинания. \typeout{} } \typeout{А теперь снова следи за Overfull'ами!} \smallskip\hyphenation{ес-ли} % восстановим...</p>

При этом выдается на экран и записывается в файл с расширением log сообщение наподобие такого:

Overfull \hbox (3.2673pt too wide) in paragraph at lines 8--13 []\OT1/cmr/m/n/10.95 Еще од-но пра-ви-ло от-но-си-тель-но уве-ли-че-ния про-бе-лов: если []

Давайте разберем, что в нем написано. Сначала идет надпись "Overfull\hbox", указывающая, что произошло " переполнение" (overfull) строки. В скобках указано, на какое именно расстояние строка выходит за край: на

3.2673
пункта. (Напомним, что пункт примерно равен одной трети миллиметра). Далее сказано, что переполнение произошло при верстке абзаца (слова "in paragraph"), а затем указаны номера строк исходного файла, в которых был записан этот абзац.




Содержание  Назад  Вперед