Позиционирование таблицы LaTeX
У меня есть документ LaTeX, который содержит абзац, за которым следуют 4 таблицы и второй абзац. Я хочу, чтобы 4 таблицы появлялись между двумя абзацами, что из того, что я прочитал, означает, что я должен использовать опцию [h] после начала среды таблицы (например, \begin{table}[h]
).
Используя это, первые две таблицы появляются после пункта 1, как и ожидалось, однако затем отображается пункт 2, а последние две таблицы появляются на следующей странице. Как сделать так, чтобы таблицы отображались в правильном месте?
Я пытался исправить положение, например, используя [h!]
это, похоже, не имеет никакого эффекта. Использование \clearpage
после таблиц дает желаемый эффект отображения таблиц перед вторым абзацем, но затем оставляет две последние таблицы на их собственной странице с множеством пробелов, когда я предпочитаю, чтобы второй абзац начинался немедленно после столов.
Paragraph 1...
\begin{table}[h]
table1...
\end{table}
\begin{table}[h]
table2...
\end{table}[h]
...
Paragraph 2...
Ответы
Ответ 1
После выполнения еще нескольких поисковых запросов я столкнулся с пакетом float, который позволяет вам запретить LaTeX переставлять таблицы.
В преамбуле:
\usepackage{float}
\restylefloat{table}
Затем для каждой таблицы вы можете использовать опцию размещения H
(например, \begin{table}[H]
), чтобы убедиться, что она не будет изменена.
Ответ 2
Это сработало для меня:
В начале определения использования usepackage
включают в себя:
\usepackage{placeins}
И до и после добавить:
\FloatBarrier
\begin{table}[h]
\begin{tabular}{llll}
....
\end{tabular}
\end{table}
\FloatBarrier
Это размещает таблицу именно там, где вы хотите в тексте.
Ответ 3
Что произойдет, если текст плюс таблицы плюс текст не помещается на одну страницу? Стараясь таким образом набрать набор, вы, скорее всего, столкнетесь со слишком короткими страницами; то есть, поскольку таблица по умолчанию не может перерыть страницу, она будет перенесена на следующую и оставит пробел на странице раньше. Вы заметите, что это никогда не увидите в опубликованной книге.
Плавающее поведение - хорошая вещь! Я рекомендую использовать [htbp]
как значение по умолчанию для всех таблиц и цифр до тех пор, пока ваш документ не будет завершен; только тогда следует подумать о тонкой настройке их точного размещения.
P.S. Прочтите FAQ; большинство других ответов здесь - частичные комбинации советов, приведенных там.
Ответ 4
Здесь простое решение, от Wikibooks:
Пакет placeins предоставляет команду \FloatBarrier, которая может использоваться для предотвращения перемещения поплавков по ней.
Я просто кладу \FloatBarrier
до и после каждой таблицы.
Ответ 5
Вы можете добавить это в свою преамбулу и при необходимости изменить значения:
%------------begin Float Adjustment
%two column float page must be 90% full
\renewcommand\dblfloatpagefraction{.90}
%two column top float can cover up to 80% of page
\renewcommand\dbltopfraction{.80}
%float page must be 90% full
\renewcommand\floatpagefraction{.90}
%top float can cover up to 80% of page
\renewcommand\topfraction{.80}
%bottom float can cover up to 80% of page
\renewcommand\bottomfraction{.80}
%at least 10% of a normal page must contain text
\renewcommand\textfraction{.1}
%separation between floats and text
\setlength\dbltextfloatsep{9pt plus 5pt minus 3pt }
%separation between two column floats and text
\setlength\textfloatsep{4pt plus 2pt minus 1.5pt}
В частности, интерес может представлять значение\floatpagefraction.
Ответ 6
Если вы хотите иметь две таблицы рядом друг с другом, вы можете использовать: (при загрузке пакета float
)
\begin{table}[H]
\begin{minipage}{.5\textwidth}
%first table
\end{minipage}
\begin{minipage}{.5\textwidth}
%second table
\end{minipage}
\end{table}
У каждого будет свой заголовок и номер.
Другой вариант - пакет subfigure
.
Ответ 7
Позиционирование стола
Доступные параметры
Таблица может быть легко размещена со следующими параметрами:
-
h
Разместите поплавок здесь, т.е. примерно в той же точке, в которой он находится в исходном тексте (однако, не совсем точно) -
t
Положение вверху страницы. -
b
Положение внизу страницы. -
p
Разместите на специальной странице только для поплавков. -
!
Переопределите внутренние параметры, которые LaTeX использует для определения "хороших" позиций с плавающей точкой. -
H
Размещает поплавок точно в том месте, в котором указан код LATEX. Требуется пакет с плавающей точкой. Это несколько эквивалентно h!
,
Если вы хотите использовать H
(или h!
) Для точного позиционирования, убедитесь, что вы правильно установили пакет float
в преамбуле:
\usepackage{float}
\restylefloat{table}
пример
Если вы хотите разместить таблицу на той же странице, либо в точном месте, либо, по крайней мере, в верхней части страницы (что лучше всего подходит для латексного движка), используйте параметры h
и t
следующим образом:
\begin{table}[ht]
table content ...
\end{table}
Источники: Overleaf.com