Размещение плавающих объектов на странице
Сейчас мы обсудим параметры, которыми руководствуется LaTeX при размещении плавающих объектов на странице.
Сразу же отметим, что все эти параметры относятся в равной мере к плавающим иллюстрациям и плавающим таблицам, и любое изменение этих параметров также затрагивает плавающие объекты всех типов.
Часть параметров, отвечающих за плавающие объекты, представляет собой LaTeX'овские счетчики, которым можно присваивать новые значения командой \setcounter:
- \topnumber Максимальное количество плавающих объектов, которое разрешается разместить вверху страницы (при двухколонном наборе и иллюстрациях/таблицах шириной в колонку — вверху колонки). Значение по умолчанию: .
- \bottomnumber Максимальное количество плавающих объектов, которое разрешается разместить внизу страницы (при двухколонном наборе и иллюстрациях/таблицах шириной в колонку — внизу колонки). Значение по умолчанию: .
- \totalnumber Максимальное количество плавающих объектов, которое разрешается разместить на странице (при двухколонном наборе и иллюстрациях/таблицах шириной в колонку — в колонке). Значение по умолчанию: .
- \dbltopnumber При наборе в две колонки: максимальное количество плавающих объектов шириной во всю страницу, которое разрешается разместить вверху страницы. Значение по умолчанию: .
Значение счетчика totalnumber не влияет на количество иллюстраций и/или таблиц на странице, специально для них предназначенной (таковая, как мы помним, выделяется, если в необязательном аргументе окружения {figure} или {table} присутствует буква p).
Вторая группа параметров регулирует уже не количество плавающих иллюстраций на странице, а величину места, ими занимаемого. Все эти параметры являются командами наподобие \arraystretch или \baselinestretch; чтобы менять значения параметров, надо их переопределять с помощью команды \renewcommand. Эти параметры таковы:
- \topfraction Максимальная доля страницы, которую могут занимать плавающие объекты, размещаемые вверху страницы. Значение по умолчанию: . Это означает, что плавающие иллюстрации и таблицы, размещаемые вверху страницы, могут занимать не более 70% страницы по высоте.
Если мы хотим уменьшить эту долю, скажем, до 50%, надо написать \renewcommand{\topfraction}{0.5} Ниже слова "доля страницы" также всюду означают "доля страницы по высоте". - \bottomfraction Максимальная доля страницы, которую могут занимать плавающие объекты внизу страницы. Значение по умолчанию: .
- \textfraction Минимальная доля страницы, которую должен занимать текст, а не плавающие объекты (к страницам, создаваемым LaTeX'ом специально для размещения плавающих объектов при обработке необязательного аргумента p, это не относится). Значение по умолчанию: .
- \floatpagefraction Этот параметр, напротив, относится именно к страницам, которые LaTeX создает при обработке необязательного аргумента p. Он указывает минимально возможную долю такой страницы, которую могут занимать размещаемые на ней плавающие иллюстрации и таблицы. Значение по умолчанию: (стало быть, специальная страница для плавающих иллюстраций, которую вы требуете с помощью необязательного аргумента p к окружению {figure}, не будет создана, пока эти иллюстрации занимают менее 50% высоты страницы текста).
- \dbltopfraction То же, что \topfraction, применительно к иллюстрациям (таблицам) шириной в целую страницу при двухколонном наборе. Значение по умолчанию: .
- \dblfloatpagefraction То же, что \floatpagefraction, применительно к иллюстрациям (таблицам) шириной в целую страницу при двухколонном наборе. Значение по умолчанию: .
- \textfloatsep Отступ между текстом и иллюстрациями (таблицами), размещаемыми вверху или внизу страницы.
- \ floatsep Отступ между двумя иллюстрациями (таблицами).
- \intextsep Отступ между текстом и иллюстрациями (таблицами), размещаемыми посреди страницы (при обработке необязательного аргумента h).
- \dbltextfloatsep При двухколонном наборе - отступ между текстом и иллюстрацией (таблицей), занимающей всю страницу по ширине.
- \dblfloatsep При двухколонном наборе - отступ между двумя иллюстрациями (таблицами), занимающими всю страницу по ширине.
По умолчанию плавающие объекты не отделены от текста ничем, кроме вышеперечисленных отбивок. Но можно сделать и так, чтобы иллюстрации (таблицы) отделялись от текста как-то иначе (линейками, например). Для этих целей предусмотрены следующие три команды:
- \topfigrule Разделитель между плавающим объектом, размещаемым вверху страницы (колонки), и остальным текстом.
- \botfigrule Разделитель между текстом и размещаемым внизу страницы (колонки) плавающим объектом.
- \dblfigrule То же, что \topfigrule, для случая, когда набор двухколонный, а плавающий объект занимает по ширине всю страницу.
Если вы хотите задать явные разделители между текстом и иллюстрациями (таблицами), то эти команды надо определить с помощью \newcommand.7). Определять эти команды нужно не произвольным образом: чтобы они правильно стыковались с LaTeX'овскими алгоритмами размещения плавающих объектов, нужно иметь в виду следующее:
- каждая из этих команда будет выполняться в те моменты, когда TeX находится в вертикальном режиме;
- по окончании работы каждой из этих команд TeX должен снова оказаться в вертикальном режиме;
- текст, генерируемый каждой из этих команд, не должен, с точки зрения TeX'а, занимать места по вертикали.
\newcommand{\botfigrule}{\hrule\vspace{-0.4pt} (вспомним, что линейка, генерируемая командой \hrule, имеет по умолчанию толщину 0.4pt). Впрочем, формальной правильности мало: если вы опробуете такое определение на практике, то увидите, что линейка вплотную прилегает к иллюстрации, что никуда не годится. Правильно действовать, например, так:
\newcommand{\botfigrule}{\vspace{-3pt}\hrule \vspace{2.6pt}} Теперь мы проводим линейку не прямо по верхней кромке иллюстрации, а на три пункта выше; заключительное \vspace{2.6pt} нужно для того, чтобы в сумме получилось нулевое вертикальное смещение.
С \topfigrule и \dblfigrule вы сможете теперь разобраться самостоятельно.
В заключение отметим, что разделители, определяемые \topfigrule и ей подобными командами, не обязаны быть именно линейками: необходимо только при их определении учитывать три перечисленных выше обстоятельства.