LaTeX表定位

问题描述 投票:82回答:7

我有一个LaTeX文档,其中包含一个段落,后跟4个表格,后跟第二个段落。我希望4个表格出现在两个段落之间,从我的read开始意味着我应该在开始表格环境后使用[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...
latex
7个回答
152
投票

在做了一些谷歌搜索后,我遇到了浮动包,它可以防止LaTeX重新定位表。

在序言中:

\usepackage{float}
\restylefloat{table}

然后,对于每个表,您可以使用H放置选项(例如\begin{table}[H])以确保它不会重新定位。


16
投票

这对我有用:

开头的usepackage定义包括:

\usepackage{placeins}

在添加之前和之后:

\FloatBarrier
\begin{table}[h]
    \begin{tabular}{llll}
      .... 
    \end{tabular}
\end{table}
\FloatBarrier

这会将表格准确放置在文本中的所需位置。


7
投票

如果文本加表格加文本不适合单个页面会发生什么?通过尝试以这种方式强制排版,您很可能最终得到的页面太短;也就是说,因为一个表不能默认突破一个页面,它将被推送到下一个页面,并在之前的页面上留下空隙。你会注意到你从未在出版的书中看到这一点。

漂浮的行为是一件好事!我建议在文档完成之前使用[htbp]作为所有表格和数字的默认设置;只有这样才能考虑微调它们的精确位置。

附:阅读FAQ;这里的大多数其他答案是给出的部分建议组合。


5
投票

这是一个简单的解决方案,来自Wikibooks

placeins包提供了命令\ FloatBarrier,可用于防止浮动在其上移动。

我只是在每张桌子之前和之后放上\FloatBarrier


3
投票

您可能希望将此添加到前导码中,并根据需要调整值:

 %------------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可能是有意义的。


3
投票

如果你想让两个表彼此相邻,你可以使用:(加载了float包)

\begin{table}[H]
 \begin{minipage}{.5\textwidth}
  %first table
 \end{minipage}
 \begin{minipage}{.5\textwidth}
  %second table
 \end{minipage}
\end{table}

每个人都有自己的标题和编号。另一个选择是subfigure包。


2
投票

Table Positioning

可用参数

可以使用以下参数轻松放置表格:

  • h将浮动放置在这里,即大致与源文本中出现的相同点(但不是完全在现场)
  • t位于页面顶部。
  • b位于页面底部。
  • p只为漂浮物放置一个特殊页面。
  • !覆盖LaTeX用于确定“良好”浮动位置的内部参数。
  • H将浮动放置在LATEX代码中的精确位置。需要float包。这有点等同于h!

如果您想使用H(或h!)进行精确定位,请确保在序言中正确设置了float包:

\usepackage{float}
\restylefloat{table}

如果您想将表放在同一页面上,无论是在确切位置还是至少在页面顶部(最适合乳胶引擎),请使用参数ht,如下所示:

\begin{table}[ht]
    table content ...
\end{table}

资料来源:Overleaf.com

© www.soinside.com 2019 - 2024. All rights reserved.