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

       

Борьба с переносами


Вероятно, читатель был шокирован тем, что в нашем примере с overfull'ом TeX не смог найти, где сделать перенос в слове " если". Дело, в частности, в том, что обычно TeX не делает переносов, при которых от слова отрываются две последние буквы. Это соответствует нормам английской орфографии, но для русского языка такое ограничение неуместно. Поэтому при работе с русскими текстами можно (и нужно) установить такой режим, в котором перенос двух последних букв допустим. Устанавливается этот режим с помощью изменения параметра \righthyphenmin. Значение этого параметра — целое число, равное наименьшему количеству букв в слове, которые можно переносить на следующую строку. Стало быть, если написать в файле

\righthyphenmin=2

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

\righthyphenmin=3

дабы не сделать неверных переносов в английских словах3)

Общее облегчение режима переносов с помощью \righthyphenmin может, тем не менее, не помочь преодолеть встретившийся вам overfull: не исключено, что TeX действительно не знает, как перенести какое-то слово. Таких слов не очень много, но они встречаются. Кроме того, TeX не делает автоматических переносов в словах, содержащих диакритические знаки (например, если в слове указано ударение или если буква ё задана в тексте как \"е)4), а также в словах, в которых присутствуют наряду с буквами цифры, знаки препинания (не в конце слова) и т.п. Далее, если в слове присутствует дефис, то TeX сможет сделать в нем перенос только на месте этого дефиса, но так, что "{генерал-" останется в конце строки, а "губернатор" начнет следующую строку). Что делать в таких случаях, когда автоматически вставляемых TeX'ом переносов не хватает?

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


Пусть, однако, улучшать изложение дальше некуда, а абзац все равно получается неудачный. Что еще можно сделать, чтобы избавиться от переполнения?

Если TeX не может перенести слово, перенос которого по правилам русского языка возможен, то есть два способа указать TeX'у на это обстоятельство.

Во-первых, существует "одноразовый" способ указать TeX'у места переносов в слове. Это делается с помощью команды \- таким, например, образом:

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

Во-вторых, если слово-исключение встречается в тексте неоднократно, имеет смысл указать это TeX'у "раз и навсегда" (в пределах данного документа). Для этого предназначена команда \hyphenation. В качестве ее аргумента указываются слово или слова, в которых дефисами обозначены разрешенные места переносов. Например:

hyphenation{вклю-чен об-ласть}" Теперь слова "включен" и "область" всегда будут переноситься так, как было указано (хотя бы и вопреки тому, что диктует алгоритм переноса). Если в слове, указанном в качестве аргумента команды \hyphenation, дефисов не поставить, то это будет означать, что переносить его вообще нельзя. Разумное место для команды \hyphenation — преамбула документа.

Слова, указанные в аргументе команды \hyphenation, должны быть разделены пробелами (конец строки — тоже пробел, так что слова можно располагать и в нескольких строках). Пустой строки в аргументе \hyphenation быть не должно. В качестве аргумента команды \hyphenation нельзя указывать слова с диакритическими знаками или небуквенными символами.

Слова в исходном тексте, в которые вставлены \-, будут переноситься именно там, где указано этими командами, невзирая на то, что говорит команда \hyphenation.



Иногда в тексте встречаются пары слов, объединенные знаком /,. По общим TeX'овским правилам такое "слово" перенесено быть не может. Если вместо символа / использовать команду \slash, то станет возможен перенос, при котором на одной строке останется первое слово и символ /, а на второй строке — второе слово:



Перенаправление ввода\slash вывода — одна из характерных черт систем типа UNIX\slash Linux.
Бывают случаи, когда избавиться от переполнения не помогают даже идеально расставленные переносы: например, если в конец строки попадает слово, которое переносить нельзя (скажем, " гвоздь"), или не допускающая переноса математическая формула. Что делать в таких случаях, рассказано в последующих разделах.


Содержание раздела