Позиционирование таблицы 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