У меня есть документ 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...
[h!]
- правильная версия. Это эквивалент[H]
. Оба требуютfloat
пакета.Ответы:
После еще нескольких поисков в Google я наткнулся на пакет float , который позволяет запретить LaTeX изменять положение таблиц.
В преамбуле:
\usepackage{float} \restylefloat{table}
Затем для каждой таблицы вы можете использовать параметр
H
размещения (например\begin{table}[H]
), чтобы убедиться, что она не перемещается.источник
H
эквивалентенh!
(для получения дополнительной информации о параметрах мой ответ здесь )#+LATEX_HEADER: \usepackage{float} #+LATEX_HEADER: \restylefloat{table}
И затем,#+CAPTION: A table #+NAME: tab:table-label #+ATTR_LATEX: :placement [H] :center t <<actual table content>>
извините за плохое форматирование новой строки в комментариях.\restylefloat{table}
, чтобы использовать[H]
спецификатор позиционирования, неверно . Нужно только когда - либо работать ,\restylefloat{table}
если один был первым запустить пакет инструкций\floatstyle
,\floatplacement
или\floatname
. Обновите свой ответ, чтобы удалить ссылку на\restylefloat
. Если вам нужно больше доказательств того, что\restylefloat
регулярный запуск - не очень хорошая идея, посмотрите, что заголовок публикации и метка таблицы, двух таблиц, хранящихся рядом, назначены другой таблице .Это сработало для меня:
Вначале
usepackage
определения включают:\usepackage{placeins}
И до и после добавить:
\FloatBarrier \begin{table}[h] \begin{tabular}{llll} .... \end{tabular} \end{table} \FloatBarrier
Это поместит таблицу именно там, где вы хотите в тексте.
источник
Расположение стола
Доступные параметры
Стол легко разместить со следующими параметрами:
h
Разместите поплавок здесь , то есть примерно в том же месте, что и в исходном тексте (но не совсем в этом месте)t
Расположите вверху страницы.b
Расположите внизу страницы.p
Сделайте специальную страницу только для поплавков.!
Переопределить внутренние параметры, которые LaTeX использует для определения "хороших" позиций с плавающей запятой.H
Помещает поплавок точно в то место в коде LATEX. Требуется пакет float. Это в некоторой степени эквивалентноh!
.Если вы хотите использовать
H
(илиh!
) для точного позиционирования, убедитесь, что выfloat
правильно настроили пакет в преамбуле:\usepackage{float} \restylefloat{table}
пример
Если вы хотите разместить таблицу на той же странице, либо в точном месте, либо, по крайней мере, вверху страницы (что лучше всего подходит для латексного движка), используйте параметры
h
иt
вот так:\begin{table}[ht] table content ... \end{table}
Источники: Overleaf.com
источник
Что произойдет, если текст плюс таблицы плюс текст не умещается на одной странице? Пытаясь принудительно выполнить набор таким способом, вы, скорее всего, получите слишком короткие страницы; т. е. поскольку таблица не может по умолчанию разорвать страницу, она будет перенесена на следующую и оставит пробел на предыдущей странице. Вы заметите, что никогда не увидите этого в опубликованной книге.
Плавающее поведение - хорошая вещь! Я рекомендую использовать
[htbp]
настройки по умолчанию для всех таблиц и рисунков, пока ваш документ не будет готов; только после этого следует подумать о точной настройке их точного размещения.PS Прочтите FAQ ; большинство других ответов здесь представляют собой частичные комбинации рекомендаций, данных там.
источник
[htbp]
и отсутствием вообще?[ht]
лучше, чем[htbp]
Вот простое решение из Викиучебника :
Я просто ставлю
\FloatBarrier
до и после каждого стола.источник
Если вы хотите, чтобы две таблицы были рядом друг с другом, вы можете использовать: (с
float
загруженным пакетом)\begin{table}[H] \begin{minipage}{.5\textwidth} %first table \end{minipage} \begin{minipage}{.5\textwidth} %second table \end{minipage} \end{table}
У каждого будет свой заголовок и номер. Другой вариант -
subfigure
пакет.источник
Вы можете добавить это в свою преамбулу и при необходимости изменить значения:
%------------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.
источник
Чтобы разместить заголовки над плавающими таблицами, расположенными в [H], вставьте в преамбулу следующее:
\usepackage{float} \floatstyle{plaintop} \restylefloat{table}
источник