next up previous
Next: 3. Набор математических формул Up: 2. Верстка текста Previous: 2.9.5 Таблицы

2.10 Плавающие объекты

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

Для решения этой проблемы любая иллюстрация или таблица, не умещающаяся на текущей странице, может `плавать', перемещаясь на следующую страницу в процессе заполнения текстом текущей. LATEX предлагает для плавающих объектов  два окружения, одно для таблиц и одно для иллюстраций. Чтобы полностью использовать их преимущества, важно примерно представлять, как LATEX обрабатывает плавающие объекты. Иначе они могут стать источником разочарования из-за того, что LATEX помещает их не туда, куда вы хотите.

Давайте вначале рассмотрим команды, предоставляемые LATEX для плавающих объектов.

Любой материал, включенный в окружения figure или table, трактуется как плавающий. Оба окружения имеют необязательный параметр \begin{figure}[спецификация размещения] или
\begin{table}[спецификация размещения]

называемый спецификацией размещения. Этот параметр используется для указания LATEX, куда можно перемещать плавающий объект. Спецификация размещения конструируется путем собирания в строчку ключей размещения плавающего объекта.


 
Таб.: Ключи размещения плавающего объекта
 


Ключ Разрешает помещать объект ...
h здесь же, в том самом месте текста, где он появился. Обычно используется для маленьких объектов.
t наверху страницы
b внизу страницы
p на специальной странице, содержащей только плавающие объекты.
! не рассматривать большинство внутренних параметров , которые могут предотвратить размещение этого объекта.



Например, таблицу можно начать следующей строкой:

\begin{table}[!hbp]

Спецификация размещения   [!hbp] позволяет LATEX разместить таблицу прямо по месту (h), или внизу той же страницы (b), или на выделенной странице (p), и все это -- даже если это будет смотреться не так уж хорошо (!). Если никакой спецификации размещения не задано, стандартные классы предполагают [tbp]. LaTeX размещает каждый встреченный плавающий объект в соответствии с заданной автором спецификацией. Если объект нельзя поместить на текущей странице, он откладывается, помещаясь в очередь иллюстраций  или в очередь таблиц 14. Когда начинается новая страница, LATEX проверяет, можно ли заполнить специальную страницу плавающими объектами из очередей. Если нет, то первый объект из каждой очереди считается только что встретившимся в тексте: LATEX снова пытается разместить их в соответствии с их спецификациями (за исключением `h', что уже невозможно). Новые встреченные в тексте плавающие объекты помещаются в соответствующие очереди. LATEX сохраняет порядок, в котором встретились плавающие объекты соответствующего типа. Поэтому иллюстрация, которую не удается разместить, отталкивает все дальнейшие иллюстрации к концу документа. Следовательно:

Если LATEX не размещает плавающие объекты, как вы этого ожидаете, то часто это только один объект устроил затор в одной из очередей.


После объяснения этих механизмов остается еще несколько замечания про окружения table и figure. Командой

$\backslash$caption{текст заголовка}

вы можете задать заголовок для объекта. Увеличивающийся номер и строка <<Рисунок>> или <<Таблица>> добавляются LATEX.

Две команды

$\backslash$listoffigures и $\backslash$listoftables

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

\caption[Короткий]{Дддддллллллиииинннннныыыыыыыыыыыыыыййй}

При помощи \label и \ref можно делать ссылки из вашего текста на плавающий объект.

Следующий пример рисует квадрат и вставляет его в документ. Подобную технику можно использовать, чтобы оставить в документе место под изображения, которые вы вставите позже.

Рисунок~\ref{white} является примером Поп-Арта.
\begin{figure}[!hbp]
\makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}}
\caption{Пять на пять сантиметров} \label{white}
\end{figure}

В этом примере15 LATEX будет очень сильно (!) стараться разместить иллюстрацию прямо по месту (h). Если это невозможно, он попытается разместить ее внизу страницы (b). Если ему не удастся поместить иллюстрацию на текущей странице, он выяснит, можно ли создать страницу плавающих объектов, содержащую эту иллюстрацию и, возможно, некоторые таблицы из очереди таблиц. Если для отдельной страницы материала еще не накопилось, LATEX начинает новую страницу и снова рассматривает иллюстрацию, как если бы она только что появилась в тексте.

В определенных случаях может быть необходимо использовать команду

$\backslash$clearpage или даже $\backslash$cleardoublepage

Она указывает LATEX немедленно разместить все плавающие объекты, остававшиеся в очередях, и затем начать новую страницу. $\backslash$cleardoublepage, помимо этого, начинает новую левостороннюю страницу.

Позже вы узнаете, как включать в ваши документы LATEX рисунки в формате POSTSCRIPT.