1 ページを超える表

繰り返されるロングテーブルのヘッダーとフッター。

1 ページを超える表

通常の「テーブル」環境はフロートであり、フロートは単一ページに収まる必要があります。これに 60 行を与えると、LaTeX はそれを float ページに押し込んでオーバーフローさせるか、永久に延期します。これを修正するのが「longtable」パッケージです。このパッケージは、スプレッドシートの印刷と同じように、複数のページにまたがって各ページにヘッダーを繰り返す表を植字します。

\usepackage{longtable,booktabs}
\begin{longtable}{ll}
\toprule
Key & Value \\
\midrule
\endfirsthead
\toprule Key & Value \\ \midrule \endhead
\bottomrule \endfoot
a & 1 \\
% ... many rows
\end{longtable}

ヘッダー ブロックの仕組み

longtable は、実際のデータ行の前に最大 4 つの宣言ブロックで始まります。 \endfirsthead より上のすべては、テーブルの先頭に一度印刷されるヘッダーです。 \endfirsthead\endhead の間はすべて、後続の各ページの先頭に繰り返されるヘッダーです。そのため、この例では同じ「キーと値」行が 2 回表示されます。 \endfoot で終わるブロックは、テーブルが触れるすべてのページの下部に印刷されます。ここでは、終了の \bottomrule だけが表示されます。合計行など、最終行の下にのみ表示される資料用の \endlastfoot もあります。継続のヒントが必要な場合、一般的なパターンは、フット ブロックに \midrule \multicolumn{2}{r}{Continued on next page} \\ があり、実際の \bottomrule が最後のフットにあることです。

宣言の後にデータ行が来ます。通常の「表形式」とまったく同じように、セル間に「&」を挟み、各行の最後に「\」を入れて記述します。 「booktabs」ルールは変更されずに機能します。置き換えるものについては、3 つのルール テーブル を参照してください。

float ではありません、そしてそれが何を意味するか

最も重要な動作上の違いは、「longtable」は float ではないという一文で説明されています。ソース内で指定した場所から正確に開始され、ページが分割された場所で中断され、[htbp] 引数は必要ありません。これにより、キャプションの仕組みも変わります。 「table」環境で「longtable」をラップしません。代わりに、テーブル自体の中に、first-head ブロックの最初の行として \caption{...}\\ を配置すると、他のテーブルと同じ順序で番号が付けられます。

信頼する前に知っておくべき 2 つのこと

まず、列幅はグローバルに決定されるため、LaTeX では列の移動が停止するまでに数回のコンパイル パスが必要になる場合があります。レイアウトが安定するまでコンパイルを続けます。次に、「longtable」は 2 列レイアウト内では使用できないため、ほとんどの会議テンプレートでは使用できません。これらの文書では、表を縮小するか、複数の部分に分割するか、または 1 列の付録に移動することが現実的な選択肢となります。

フロート手術 に戻る