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



         

Размещение плавающих объектов на странице - часть 4


Если вы хотите задать явные разделители между текстом и иллюстрациями (таблицами), то эти команды надо определить с помощью \newcommand.7). Определять эти команды нужно не произвольным образом: чтобы они правильно стыковались с LaTeX'овскими алгоритмами размещения плавающих объектов, нужно иметь в виду следующее:

  1. каждая из этих команда будет выполняться в те моменты, когда TeX находится в вертикальном режиме;
  2. по окончании работы каждой из этих команд TeX должен снова оказаться в вертикальном режиме;
  3. текст, генерируемый каждой из этих команд, не должен, с точки зрения TeX'а, занимать места по вертикали.

Поэтому будет неправильно, если вы, решив отделять текст от иллюстраций линейкой, определите \botfigrule просто как \hrule: первое и второе условия при этом выполнены будут, а вот третье — нет, в результате чего LaTeX собьется со счета при решении вопроса о размещении иллюстраций. Формально правильным было бы такое решение:

\newcommand{\botfigrule}{\hrule\vspace{-0.4pt}

(вспомним, что линейка, генерируемая командой \hrule, имеет по умолчанию толщину 0.4pt). Впрочем, формальной правильности мало: если вы опробуете такое определение на практике, то увидите, что линейка вплотную прилегает к иллюстрации, что никуда не годится. Правильно действовать, например, так:

\newcommand{\botfigrule}{\vspace{-3pt}\hrule \vspace{2.6pt}}

Теперь мы проводим линейку не прямо по верхней кромке иллюстрации, а на три пункта выше; заключительное \vspace{2.6pt} нужно для того, чтобы в сумме получилось нулевое вертикальное смещение.

С \topfigrule и \dblfigrule вы сможете теперь разобраться самостоятельно.

В заключение отметим, что разделители, определяемые \topfigrule и ей подобными командами, не обязаны быть именно линейками: необходимо только при их определении учитывать три перечисленных выше обстоятельства.




Содержание  Назад  Вперед