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



Команда \sloppy и параметр \emergencystretch


Существует простой и грубый способ раз и навсегда избавиться от переполнений. Для этого достаточно включить в преамбулу файла команду \sloppy — больше сообщений о слишком длинных строках вы, скорее всего, не увидите. Для черновых распечаток команды \sloppy, помещенной в преамбулу, чаще всего бывает достаточно. При изготовлении оригинал-макета, однако же, доверяться ей полностью было бы рискованно, так как иногда в этом режиме могут появиться недопустимо разреженные строки. Разумнее задать эту команду не в преамбуле, а перед концом того абзаца, в котором произошел overfull (см. ниже по поводу того, как это сделать), и посмотреть, что из этого получится.

Чтобы отменить действие команды \sloppy, надо либо вернуться в обычный режим с помощью команды \fussy, либо давать команду \sloppy внутри группы, с тем, чтобы этот режим кончился по выходе из группы. В любом случае необходимо понимать, на какие участки текста распространяется действие команд типа \sloppy, влияющих на вид абзаца. Правило таково:

режим верстки абзаца определяется в тот момент, когда TeX читает пустую строку, завершающую абзац.

В частности, если вы решили дать команду \sloppy внутри группы, то для того чтобы она подействовала на абзац, необходимо, чтобы закрывающая фигурная скобка шла после пустой строки, завершающей абзац. Вот пример того, как надо действовать в таких случаях:

Черепаховый суп — изысканное деликатесное и диетическое блюдо {\sloppy }

А вот — типичная ошибка начинающего:

{\sloppy Черепаховый суп — изысканное деликатесное и диетическое блюдо}

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

Для более тонкого управления выбором между разреженными строками и overfull'ами используется параметр со значеним длины \emergencystretch. Его точный смысл мы объясним ниже, а для начала скажем, что если установить его значение равным примерно 20-30 пунктам, т.е. написать, например,

\emergencystretch=25pt

то в случае, когда без переполнений сверстать абзац не удается, TeX попробует сделать все строки абзаца более разреженными (тем более разреженными, чем больше величина этого параметра). Точную величину \emergencystretch надо подбирать экспериментально.




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