2009-11-04 100 views
64

我有一个LaTeX文档,其中包含一个段落后跟4个表格,后面是第二个段落。我希望在两个段落之间出现4个表格,这是从read开始表格环境(例如\begin{table}[h])后我应该使用[h]选项开始的。LaTeX表格定位

使用这个前两个表会出现在预期的第1段之后,然而第2段随后显示,最后两个表出现在下一页。我如何让表格出现在正确的位置?

我试过各种东西来纠正定位,如使用[h!]但是这似乎没有任何效果。使用\clearpage之后,表具有使表出现在第二段之前的预期效果,但它会将最后两个表留在它们自己的页面上,并带有空格,但我希望在第二段之后立即开始表格。

Paragraph 1... 

\begin{table}[h] 
    table1... 
\end{table} 

\begin{table}[h] 
    table2... 
\end{table}[h] 
... 

Paragraph 2... 
+0

也许[!h]而不是[h!]? – Gacek 2009-11-04 14:31:44

+0

我也试过,它没有效果。 – 2009-11-04 14:50:24

+4

可选参数中(所有)字母的顺序不起作用。 – 2009-11-05 01:54:50

回答

122

做得更多一些谷歌搜索后,我遇到了浮动包,它可以让你避免乳胶从重新定位表。

在序言:

\usepackage{float} 
\restylefloat{table} 

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

+16

也许值得强调的是应该使用“H”而不是“h”。这就是我为自己观察到的。 – bikashg 2011-08-01 09:11:12

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可能会感兴趣。

2

如果你想有两个表下一对方你可以使用:(与float包加载)

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

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

7

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

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

P.S.阅读FAQ;这里的大多数答案都是在那里给出的建议的部分组合。

+1

浮动行为避免了留下空间,但将人物移开让阅读者的生活更加艰难。出于这个原因,重要设计师Edward Tufte建议整合文本和图表/表格 - 在他出版的书籍中,他没有用数字来表示表格。 “看表1”没有出现,因为表格就在那里。他只是把他们放在正确的地方 - 在句子中间。我想这意味着要做更多的工作来布置表格,但是对于读者来说更少的工作。 – Blaisorblade 2012-07-27 03:43:37

+0

@Blaisorblade - 当然,还有其他一些值得注意的例子,但我建议以这种方式编写一个文本对于大多数人来说比使用浮动更加困难。你正在谈论放弃99%的书籍设计以达到无法达到的最佳效果。考虑我在答案中提出的观点:'如果一张桌子不能放在文字下面怎么办?'在你的场景中不得不重新设计或重写,这在许多情况下是站不住脚的。 – 2012-07-28 02:10:00

+1

那么,我们同意最佳的是 - 是的,最常见的是几乎无法实现。在日常生活中,我通常也会坚持花车。但是我确实有内嵌小表格和数字,它的工作原理相当不错(只要我查看最终版本 - 这很容易,因为我的文档最多只有20页)。我只是把它看作是合理的权衡,而不是一件好事:-)。 – Blaisorblade 2012-07-28 15:21:46

4

下面是一个简单的解决方案,从Wikibooks

的placeins包提供命令\ FloatBarrier,其可以被用于防止浮子被移动了它。

我只是把\FloatBarrier之前和之后的每个表。

8

这个工作对我来说,

在与usepackage定义开始包括:

\usepackage{placeins} 

和之前并添加后:

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

这个地方的表正是您想要在文中。