2009-11-04 189 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 

這個地方的表正是您想要在文中。