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

       

Ручное управление разрывами строк


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

Иногда надо обеспечить, чтобы в каком-то слове не делалось переносов, причем не вообще никогда (тогда разумно применить команду \hyphenation), а только в данном месте. Можно добиться этого, например, с помощью команды \mbox, написав так:

Параметр \mbox{\textbf{filename}} задает имя файла.

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

Вы уже встречались с командой \mbox, если прочли в предыдущей лекции раздел о включении текста в формулы; более подробно мы ее рассмотрим в лекции о "блоках".

Теперь посмотрим, что делать, если вам понадобилось насильно разорвать строку в каком-то месте, не начиная при этом нового абзаца. Для этого есть несколько способов, в зависимости от того, что вы хотите получить. Один из вариантов — воспользоваться командой \\ и получить возможно не доходящую до края, но не растянутую строку:

Эта строка\\ была разорвана. Справа осталось пустое место, но зато строка не разреженная.

Можно также воспользоваться командой \linebreak; при этом оборванная строка будет выровнена по правому краю, даже если ради этого ее придется растянуть:

Эта строка была\linebreak разорвана. Она выровнена по правому краю, но для этого ее пришлось безбожно растянуть.

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


Команда \\ допускает и необязательный аргумент: если в квадратных скобках указать какое-то расстояние (в TeX'овских единицах длины — то после оборванной строки будет оставлено это расстояние (по вертикали). Пример:



Разорвем строку\\[5pt] и оставим место.
При использовании команды \\ с необязательным аргументом бывает удобно вместо расстояния в явном виде указать один из следующих параметров:

\smallskipamount маленький вертикальный пробел;
\medskipamount вертикальный пробел побольше;
\bigskipamount еще больше.
Точный размер этого пробела зависит от класса документа (и " классовых опций"); на с. 146 изображена величина соответствующих пробелов в стандартных классах со шрифтом кегля 11.5) ; если бы мы написали \\* или \\*[расстояние], то эффект был бы тот же, что и без звездочки, и к тому же было бы запрещено заканчивать страницу на оборванной строке.

У команды \linebreak с необязательным аргументом} также может присутствовать необязательный аргумент. При этом команда \linebreak[n] указывает, что в данном месте желателен переход на новую строку, причем
указывает "силу" этого желания (
должно быть целым числом от 0 до 4). Если
, то это полностью равносильно \linebreak без необязательного аргумента, если
, то это означает только, что строку в данном месте разрешается разорвать (так что применять эту команду с аргументом 0 между словами обычно бессмысленно); когда
возрастает от 1 до 3, команда \linebreak[n] "усиливает давление" на TeX'овский алгоритм верстки абзаца, делая для него разрыв в указанном месте все более выгодным, невзирая на возможное появление разреженных строк.

Есть также команда\nolinebreak, действующая противоположно; она также может принимать необязательный аргумент — целое число от 0 до 4. Будучи заданной с аргументом 4, эта команда запрещает разрыв строки в указанном месте. Когда ее необязательный аргумент возрастает от 1 до 3, TeX начинает рассматривать разрыв строки в указанном месте как все менее желательный, даже невзирая на то, что из-за отказа от этого разрыва могут появиться разреженные строки.Команда \nolinebreak[0] равносильна, как это ни странно, команде \linebreak[0]. Команду \nolinebreak надо давать непосредственно после слова и до пробела, иначе она не сработает.

Для простых приложений, о которых идет речь в этой лекции, команда \nolinebreak, как правило, не нужна: чтобы запретить разрыв, гораздо удобнее "неразрывный пробел". Команда \nolinebreak иногда бывает полезна при разработке собственных макроопределений, о чем сейчас говорить преждевременно.


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