Где на самом деле приземляются поплавки
htbp, почему здесь принудительно часто не получается, сдвигая окружение ближе к тексту.
Где на самом деле приземляются поплавки
Цифры и таблицы в LaTeX являются числами с плавающей запятой, а это означает, что позиция кода в исходном коде является подсказкой, а не инструкцией. LaTeX перемещает плавающие элементы, чтобы страницы были равномерно заполнены, чтобы избежать полупустых страниц и соблюдать типографские ограничения, например, какая часть страницы может быть изображениями. Это самый большой культурный шок, исходящий от текстового процессора, и понимание системы размещения экономит часы борьбы с ним.
Что означает htbp
Каждая среда с плавающей запятой принимает необязательный список аргументов, куда LaTeX может его поместить:
\begin{figure}[htbp] % here, top, bottom, page of floatsКаждая буква – это разрешение. h позволяет использовать плавающую точку «здесь», в том месте текста, где появляется код. t разрешает верхнюю часть страницы, b разрешает нижнюю часть страницы, а p позволяет использовать специальную плавающую страницу, содержащую только рисунки и таблицы. LaTeX оценивает их примерно в этом порядке для каждой создаваемой страницы, выбирая первое место, которое удовлетворяет его внутренним правилам относительно интервалов и баланса страниц. Буквы предоставляют варианты, а не выражают ранжированные пожелания, поэтому перечисление всех четырех дает LaTeX больше возможностей для размещения плавающего элемента где-нибудь близко и разумно. Если вы полностью опустите аргумент, по умолчанию будет [tbp] без h, поэтому пустая цифра так часто переходит в начало следующей страницы.
Почему принудительное использование «здесь» имеет неприятные последствия
Написание [h] само по себе кажется очевидным решением, но обычно это ухудшает ситуацию. Если поплавок не помещается в оставшееся пространство на текущей странице, а h — единственное предоставленное вами разрешение, LaTeX не сможет разместить его на этой странице или законно разместить его на любой другой. Таким образом, он перемещает float вперед, страница за страницей, ожидая места, удовлетворяющего h. Поплавки также должны оставаться в порядке, поэтому каждая последующая фигурка выстраивается в очередь за застрявшей, и вся куча часто вываливается в конце главы. Добавление восклицательного знака, например [h!], указывает LaTeX ослабить некоторые из правил интервалов, но он не может создать несуществующее пространство.
Привычки, которые действительно работают
Во-первых, оставьте [htbp] по умолчанию и откажитесь от идеального пиксельного размещения во время черчения, потому что каждый добавляемый или удаляемый абзац все равно перетасовывает страницы. Во-вторых, поместите среду рисунка в исходном коде рядом с абзацем, который впервые на него ссылается, поскольку LaTeX начинает поиск дома с этого момента, а число с плавающей запятой может перемещаться позже, но никогда раньше, чем его код. В-третьих, пишите свою прозу, ссылаясь на цифры по номерам, как в «На рисунке 3 показан конвейер», а не «на рисунке ниже», чтобы текст оставался правильным, где бы ни приземлился поплавок.
Если плавающее значение все равно оказывается где-то неприемлемым, есть более сильные инструменты, в том числе плавающие барьеры и размещение [H], описанное в фигуре, выходящей за пределы раздела. Обращайтесь к ним в конце написания, когда текст станет стабильным, а не во время его написания.