LaTeX表定位

Jar*_*ell 86 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...
Run Code Online (Sandbox Code Playgroud)

Jar*_*ell 157

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

在序言中:

\usepackage{float}
\restylefloat{table}
Run Code Online (Sandbox Code Playgroud)

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

  • 也许值得强调的是,应该使用"H"而不是"h".这就是我自己观察到的. (20认同)
  • 抱歉,需要运行“\restylefloat{table}”才能使用“[H]”定位说明符的说法是**错误**。仅当第一次运行包指令“\floatstyle”、“\floatplacement”或“\floatname”时,才应运行“\restylefloat{table}”。请更新您的答案以*删除*对“\restylefloat”的引用。如果您需要更多证据来证明定期运行 `\restylefloat` 不是一个好主意,请参阅发布[两个并排放置的表格的表格标题和标签被分配给另一个表格](https:// tex.stackexchange.com/q/564403/5001)。 (3认同)
  • 如果有人使用组织模式,请将其放在顶部: ```#+LATEX_HEADER: \usepackage{float} #+LATEX_HEADER: \restylefloat{table}``` 然后, ```#+CAPTION: A table #+NAME: tab:table-label #+ATTR_LATEX: :placement [H] :center t <<实际表格内容>> ``` 请原谅注释中糟糕的换行格式。 (2认同)

win*_*rrr 30

工作台定位

可用参数

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

  • h将浮动放在此处,即大约在它出现在源文本中的同一点(但是,不完全在该位置)
  • t位于页面顶部
  • b位于页面底部
  • p只为花车放置一个特殊的页面
  • ! 覆盖 LaTeX 用于确定“良好”浮动位置的内部参数。
  • H将浮点数精确地放置在 LATEX 代码中的位置。需要浮动包。这在某种程度上相当于h!.

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

\usepackage{float}
\restylefloat{table}
Run Code Online (Sandbox Code Playgroud)

例子

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

\begin{table}[ht]
    table content ...
\end{table}
Run Code Online (Sandbox Code Playgroud)

资料来源:Overleaf.com

  • 对我来说,“H”适用于将桌子放置在**精确的位置**,但“h!”则不然。在这种情况下,不确定“H”是否等同于“h!”。 (2认同)

Don*_*lio 19

这对我有用:

开头的usepackage定义包括:

\usepackage{placeins}
Run Code Online (Sandbox Code Playgroud)

在添加之前和之后:

\FloatBarrier
\begin{table}[h]
    \begin{tabular}{llll}
      .... 
    \end{tabular}
\end{table}
\FloatBarrier
Run Code Online (Sandbox Code Playgroud)

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


Wil*_*son 7

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

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

PS阅读常见问题 ; 这里的大多数其他答案是给出的部分建议组合.

  • 浮动行为避免了留下空间,但将人物移开会让读者的生活变得更加困难。因此,重要的设计师爱德华·塔夫特(Edward Tufte)建议将文本和图形/表格结合起来——在他出版的书籍中,他不按数字引用表格。“参见表 1”不会出现,因为该表就在那里。他只是把它们放在正确的位置——句子的中间。我想这意味着需要做更多的工作来布置表格,但为读者做更少的工作。 (2认同)

小智 6

这是来自Wikibooks的简单解决方案:

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

我只是\FloatBarrier在每张桌子前后放。


小智 6

就我而言,我遇到了一个问题,即在我插入的段落之后没有立即显示表格,所以我只是进行了更改

\begin{table}[]
Run Code Online (Sandbox Code Playgroud)

\begin{table}[ht]
Run Code Online (Sandbox Code Playgroud)


Cro*_*ley 5

如果你想有两个相邻的表,你可以使用:(float加载包)

\begin{table}[H]
 \begin{minipage}{.5\textwidth}
  %first table
 \end{minipage}
 \begin{minipage}{.5\textwidth}
  %second table
 \end{minipage}
\end{table}
Run Code Online (Sandbox Code Playgroud)

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