Управление разрывами страниц
Как вы могли убедиться, TeX предоставляет широкие возможности для управления видом абзаца, местами разрывов строк и т.п. С разрывами страниц все обстоит не столь хорошо. Дело в том, что при верстке абзаца TeX сначала читает его целиком, а затем перебирает различные способы разбиения на строки и выбирает из них оптимальный. При разбиении на страницы такой подход невозможен: если читать сразу весь текст, а затем перебирать различные варианты разбиения его на страницы, то компьютеру не хватит памяти. Поэтому разбиение на страницы в TeX'е — процесс " одноразовый". Обработав очередной абзац, TeX проверяет, набралось ли уже достаточно строк, чтоб заполнить страницу. Если оказывается, что достаточно, он производит разрыв страницы, и при этом выбор обычно невелик (часто бывает возможно сместить место разрыва страницы на строчку - другую за счет того, что некоторые интервалы между строками можно слегка растягивать или сжимать; таковы обычно интервалы между абзацами, между текстом и выключными формулами, но не между строками внутри абзаца). Имея все это в виду, рассмотрим, какие команды предоставляет LaTeX для управления разрывами страниц.
Запрет разрыва страницы. Чтобы запретить разрыв страницы, используется команда \nopagebreak. Если поставить ее после конца абзаца, то разрыв страницы после этого абзаца будет запрещен. Если после конца абзаца присутствуют совместно как команда \nopagebreak, так и команда для дополнительных вертикальных промежутков, то команда \nopagebreak должна идти первой, в противном случае она не подействует.
Команда \nopagebreak может принимать необязательный аргумент — целое число от 0 до 4. Будучи снабжена этим аргументом, она не запрещает разрыв страницы в указанном месте, но делает его менее выгодным с точки зрения TeX'а (тем менее выгодным, чем больше аргумент). Команда \nopagebreak[4] означает полный запрет разрыва, как если бы команда была дана вообще без аргумента. Если аргумент равен 0, это означает только, что в данном месте страницу в принципе можно разорвать.
Принудительный разрыв страницы. Для принудительного разрыва страниц в LaTeX'е существует несколько способов. Первый и самый простой — команда \newpage. Под действием этой команды текущая страница завершается и дополняется снизу пустым пространством, если высота страницы получается меньше, чем надо.
Команда \clearpage также предназначена для принудительного разрыва страницы. Если пользоваться только теми средствами LaTeX'а, которые были описаны до этого момента в нашей книге, то она будет работать в точности так же, как \newpage. В том же случае, если к моменту подачи этой команды остались так называемые "плавающие" иллюстрации или таблицы , то перед выдачей новой страницы они будут, скорее всего, напечатаны.
Команда \cleardoublepage делает то же, что и \clearpage, но при этом в некоторых классах документов (в тех, которые предусматривают разное оформление страниц с четными и нечетными номерами — см. разд."Классы, пакеты и классовые опции" лекции 4 по поводу классовой опции twoside) новая страница обязательно имеет нечетный номер (если необходимо, при этом создается дополнительная пустая страница).
Если поставить подряд две команды \newpage (или \clearpage), то в печатном тексте чистая страница не получится. Чтобы создать чистую страницу, надо LaTeX немного обмануть: между двумя командами для разрыва страницы дать команду \mbox{}.
Наконец, существует команда \pagebreak, формально аналогичная команде \linebreak. Если дать ее без аргументов, то страница в этом месте будет разорвана; при этом не исключено, что будет сделана попытка выровнять ее по высоте с остальными страницами за счет растяжения тех вертикальных интервалов, которые можно растянуть — как правило, это интервалы между абзацами. (Команда \newpage такой попытки не делает.) Если дать команду \pagebreak с необязательным аргументом (целым числом от 0 до 4), то этот аргумент будет выражать степень желательности разрыва страницы в данном месте: если 0, то это всего лишь разрешение разорвать страницу, если 4, то разрыв обязателен, в остальных случаях степень желательности растет с ростом аргумента от 1 до 3.
Каждую из названных команд можно дать не только между абзацами, но и внутри абзаца; при этом разрыв страницы произойдет (или будет запрещен) после той строки, в которую попадает текст, соседствующий с этой командой.
Изменение высоты отдельной страницы. Иногда при окончательной отделке текста бывает необходимо немного увеличить или уменьшить размер отдельно взятой страницы (чтобы, например, втиснуть в нее еще одну строку, которая иначе окажется в одиночестве на следующей полосе). Для этого есть следующее средство: на той странице, размер которой надо увеличить на одну строку, поместить между абзацами команду
\enlargethispage{\baselineskip} Если надо увеличить размер на две строки, а не на одну, напишите в фигурных скобках 2\baselineskip вместо \baselineskip; можно также в аргументе команды \enlargethispage написать \baselineskip, -2\baselineskip, и т. п. В этом случае высота полосы уменьшится на одну, две и т.д. строки.
Добавим несколько TeX'нических подробностей. Во-первых, если текст набирается в две колонки, то команда \enlargethispage действует только на одну из них — на ту, в которую она попала. Во-вторых, при действии команды \enlargethispage увеличенная полоса может наложиться на строку с колонцифрой, если таковая предусмотрена стилем оформления документа. И наконец, в аргументе команды \enlargethispage может стоять не только кратное \baselineskip, но и любая длина, выраженная в TeX'овских единицах (скажем, 5mm).
Подробности о параметре \baselineskip и колонцифре — в следующей лекции. О двухколонном наборе будет рассказано в разд. "Набор в две колонки".
Висячие строки. Вообще говоря, не следует допускать, чтобы на страницу попадала только первая или только последняя строка абзаца. В TeX'е предусмотрены два параметра, влияющие на вероятность появления разрывов страницы в этих местах. Именно, параметр \clubpenalty определяет нежелательность разрыва страницы после первой строки абзаца, а \widowpenalty — перед последней. Чем выше значение этих параметров, тем с меньшей охотой TeX будет допускать такие разрывы (если, конечно, есть возможность выбора); значение 10000 означает, что разрыв полностью запрещен.По умолчанию и \clubpenalty, и \widowpenalty равны 150.