Ручное управление разрывами строк
Иногда возникает необходимость повлиять на то, в каком месте TeX начинает новую строку. Для этой цели есть соответствующие команды, с одной из которых мы уже встречались — это "неразрывный пробел", запрещающий разрыв строки между двумя словами.
Иногда надо обеспечить, чтобы в каком-то слове не делалось переносов, причем не вообще никогда (тогда разумно применить команду \hyphenation), а только в данном месте. Можно добиться этого, например, с помощью команды \mbox, написав так:
Параметр \mbox{\textbf{filename}} задает имя файла. |
Команда \mbox имеет один обязательный аргумент: в фигурных скобках может находиться любой текст, укладывающийся в одну строку (в том числе, как вы заметили, с командами переключения шрифта и т.п.); TeX будет рассматривать содержимое \mbox как одну большую букву и тем самым, конечно, не сможет разорвать его между строками.
Вы уже встречались с командой \mbox, если прочли в предыдущей лекции раздел о включении текста в формулы; более подробно мы ее рассмотрим в лекции о "блоках".
Теперь посмотрим, что делать, если вам понадобилось насильно разорвать строку в каком-то месте, не начиная при этом нового абзаца. Для этого есть несколько способов, в зависимости от того, что вы хотите получить. Один из вариантов — воспользоваться командой \\ и получить возможно не доходящую до края, но не растянутую строку:
Эта строка\\ была разорвана. Справа осталось пустое место, но зато строка не разреженная. |
Можно также воспользоваться командой \linebreak; при этом оборванная строка будет выровнена по правому краю, даже если ради этого ее придется растянуть:
Эта строка была\linebreak разорвана. Она выровнена по правому краю, но для этого ее пришлось безбожно растянуть. |
Если строка действительно окажется разреженной, то вы получите сообщение об этом во время трансляции. Если абзац длинный, а команда \linebreak расположена не слишком близко к его началу, то скорее всего разреженных строк не будет.
Команда \\ допускает и необязательный аргумент: если в квадратных скобках указать какое-то расстояние (в TeX'овских единицах длины — то после оборванной строки будет оставлено это расстояние (по вертикали). Пример:
| Разорвем строку\\[5pt] и оставим место. |
\smallskipamount | маленький вертикальный пробел; |
\medskipamount | вертикальный пробел побольше; |
\bigskipamount | еще больше. |
У команды \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 иногда бывает полезна при разработке собственных макроопределений, о чем сейчас говорить преждевременно.