LaTeXテーブルの配置


98

LaTeX文書に、1つの段落の後に4つの表が続き、2番目の段落が含まれています。2つの段落の間に4つのテーブルを表示したいのですが、これは、読んだ内容から、テーブル環境(たとえば\begin{table}[h])を開始した後で[h]オプションを使用する必要があることを意味します。

これを使用すると、最初の2つのテーブルは段落1の後に期待どおりに表示されますが、段落2が表示され、最後の2つのテーブルが次のページに表示されます。テーブルを正しい場所に表示するにはどうすればよいですか?

使用など、位置を修正するためにさまざまなことを試みまし[h!]たが、効果がないようです。\clearpageテーブルの後に使用すると、2番目の段落の前にテーブルが表示されるという望ましい効果がありますが、最後の2つのテーブルは、2番目の段落を直後に開始したい場合に、空白の負荷がかかる独自のページに残ります。テーブル。

Paragraph 1...

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

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

Paragraph 2...

私も試してみましたが効果がありませんでした。
Jared Russell、

6
オプションの引数の(すべての)文字の順序は影響しません。
ウィルロバートソン、

@Gacek、ウィル・ロバートソンが正しいに違いない。mintaka.sdsu.edu/GF/bibliog/latex/floats.htmlによれば、「角括弧内の引数は、フロートを置くことができる場所をLaTeXに伝えます。それらの順序は重要ではありません。」
Waldir Leoncio 2013

これは少しだけ関連していますが、知っておくことが重要だと思います。[h]オプションは単独では使用しないでください。実際、新しいLaTeXバージョンでは[ht]に自動的に置き換えられます。それもあなたの問題だったのかもしれません。このガイドの詳細については、セクション17.2「図の配置」を参照してください
vauhochzett 2018

@Gacek [h!]は正しいバージョンです。これはと同等[H]です。どちらもfloatパッケージが必要です。
winklerrr

回答:


171

さらにググリングを行った後、LaTeXがテーブルを再配置できないようにするfloatパッケージを見つけました。

前文:

\usepackage{float}
\restylefloat{table}

次に、各テーブルに対してH配置オプション(例:)を使用して、テーブル\begin{table}[H]が再配置されないようにします。


22
おそらく、「h」ではなく「H」を使用する必要があることを強調する価値があります。それを自分で観察しました。
bikashg

@bikashg Hh!(パラメーターの詳細については、ここで私の答えを確認してください)と同等です
winklerrr

1
誰かがorg-modeを使用している場合は、これを上に配置 します。#+LATEX_HEADER: \usepackage{float} #+LATEX_HEADER: \restylefloat{table} 次に、#+CAPTION: A table #+NAME: tab:table-label #+ATTR_LATEX: :placement [H] :center t <<actual table content>> コメントの不適切な改行フォーマットを許します。
Gaurav

23

これは私のために働きました:

はじめに、usepackage定義は次のとおりです。

\usepackage{placeins}

そして追加前と追加後:

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

これにより、テキスト内の目的の場所にテーブルが正確に配置されます。


これは本当に便利なパッケージです。共有してくれてありがとう!
John David

11

テーブルの配置

利用可能なパラメータ

次のパラメータを使用して、テーブルを簡単に配置できます。

  • hフロートをここに配置します。つまり、フロートをソーステキストとほぼ同じ位置に配置します(ただし、スポットには正確ではありません)。
  • tページの上部に配置します。
  • bページの下部に配置します。
  • pフロート専用の専用ページを設置。
  • ! LaTeXが「適切な」フロート位置を決定するために使用する内部パラメータを上書きします。
  • HフロートをLATEXコードの正確な位置に配置します。floatパッケージが必要です。これはやや同等h!です。

正確な配置のためにH(またはh!)を使用したい場合floatは、プリアンブルでパッケージが正しく設定されていることを確認してください:

\usepackage{float}
\restylefloat{table}

テーブルを同じページ、つまり正確な場所または少なくともページの上部(latexエンジンに最適なもの)に配置する場合はh、次のtようなパラメーターを使用します。

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

出典:Overleaf.com


7

テキストと表とテキストが1ページに収まらない場合はどうなりますか?この方法で組版を強制しようとすると、ページが短くなりすぎてしまう可能性が高くなります。つまり、テーブルはデフォルトではページを分割できないため、次のページにプッシュされ、前のページにギャップが残ります。出版された本ではこれを見たことがないことに気づくでしょう。

フローティング動作は良いことです![htbp]ドキュメントが完成するまで、すべての表と図のデフォルト設定として使用することをお勧めします。そのときだけ、その正確な配置を微調整することを考えるべきです。

PS よくある質問をお読みください。ここでの他のほとんどの答えはそこに与えられたアドバイスの部分的な組み合わせです。


1
フローティング動作はスペースを離れることを回避しますが、数字を遠ざけると、読者の生活が困難になります。このため、重要な設計者であるエドワード・タフテは、テキストと図/表を統合することを推奨しています-彼の出版された本では、番号で表を参照していません。「See Table 1」は、表がそこにあるだけなので表示されません。彼はちょうどそれらを正しい場所に配置します-文中。それは、テーブルをレイアウトするためにより多くの作業をすることを意味しますが、読者にとってはより少ない作業です。
Blaisorblade、2012

@Blaisorblade —もちろん、そのような注目すべき例は他にもありますが、そのような方法でテキストを書くことは、フロートを使用するよりも桁違いに難しいことを提案します。あなたは達成不可能な最適のためにブックデザインの99%を捨てることについて話している。私の回答で述べたポイントを考えてみましょう。「テーブルがテキストの下に収まらない場合はどうなりますか?」あなたのシナリオでは、再設計または書き換えが必要であり、これは多くの状況で受け入れられません。
ウィルロバートソン

1
まあ、私たちは最適なものについて同意します-そして、はい、ほとんどの場合、それは実際には達成不可能です。日々の生活の中で、私は通常、山車にもこだわります。しかし、小さな表や図はインラインで配置しており、かなりうまく機能します(最終版を確認するとすれば、これは簡単です(最大20ページのドキュメントがあるためです)。私はフローティングを良いものではなく合理的なトレードオフとして見ています:-)。
Blaisorblade、2012

[htbp]もないのとは対照的に、設定の違いは何ですか?
Waldir Leoncio 2013

@WaldirLeoncio少なくとも私にとっては、デフォルトでは[ht]なく、デフォルトでは何も[htbp]
MrJonas

7

Wikibooksの簡単な解決策は次のとおりです。

placeinsパッケージには、\ FloatBarrierコマンドが用意されており、フロートがその上に移動するのを防ぐために使用できます。

私は\FloatBarrierすべてのテーブルの前後に置くだけです。


4

2つのテーブルを隣り合わせにしたい場合は、次のコマンドを使用できます(floatパッケージをロードした状態)。

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

それぞれに独自のキャプションと番号があります。別のオプションはsubfigureパッケージです。


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は重要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.