表を組むための土台が **tabular 環境** です。\begin{tabular}{ccc} の {ccc} のように、まず 列指定 で「列が何本あり、各列をどう揃えるか」を宣言し、本文ではセルを **& で区切り、行末を \\ で閉じていきます。横罫線は \hline** で引きます。このページでは、この三つの約束ごとと、l・c・r・p{幅} という基本の列指定、そして「表の中身」を作る tabular と「図表として配置する」table 環境の違いを見ていきます。
tabular 環境とは
tabular は、行と列からなる表を組むための環境です。最大の特徴は、\begin{tabular} の直後に 必須の引数(列指定) を取ること。\begin{tabular}{ccc} と書けば「中央揃えの列が 3 本」という意味になり、ここで宣言した列の本数と揃え方が、表全体の骨格を決めます。本文の各行は、宣言した列数だけのセルを & でつないで書きます。
表の中では、三つの記号が役割を持ちます。**&(アンパサンド) は同じ行のなかでセルとセルを区切る 列区切り。\\(バックスラッシュ二つ) は行の終わりを示す 行末(改行)。そして \hline は、その位置に表の幅いっぱいの 横罫線** を一本引きます。最終行のあとの \\ は省略できますが、最終行の下に罫線を引きたいときは \\ で行を閉じてから \hline を置きます。
\begin{tabular}{ccc}
\hline
A & B & C \\
D & E & F \\
\hline
\end{tabular}この例は、3 列・2 行の表を組み、上下を一本ずつの横罫線で囲みます。各セルの中身(A〜F)は列指定 c に従っていずれも中央に揃います。& の前後の空白は無視されるので、ソースでは見やすいように空白で位置をそろえてかまいません。
なお \begin{tabular} には、列指定の前に角括弧で 垂直位置の任意引数 を渡せます(\begin{tabular}[t]{…} で表の上端、[b] で下端を、周囲の行のベースラインに合わせる)。既定では表の上下方向の中央が行に揃います。
基本の列指定
列指定の引数は、列ごとに一文字を並べて書きます。基本は四つ。**l は左揃え、c は中央揃え、r は右揃えで、いずれも 内容の自然な幅 に列が広がります。これらは行内で 折り返しません**——セルの中身が長いと、列はその一行の長さまで横に伸び、表が紙幅を超えてはみ出すことがあります。
四つめの **p{幅} は性質が違います。これは指定した 幅の段落ボックス(parbox) として組まれる列で、中身が幅を超えると 自動で折り返し**、複数行になります。長い文章を含む列には p{幅} を使います。幅は p{5cm} のような絶対値のほか、本文幅に対する p{0.3\linewidth} のような指定もできます。p 列の中身は既定で上端揃え・両端揃えで組まれます。
| 列指定 | 揃え方 | 折り返し |
|---|---|---|
l | 左揃え | しない(自然な幅) |
c | 中央揃え | しない(自然な幅) |
r | 右揃え | しない(自然な幅) |
p{幅} | 上端・両端揃え | する(指定幅で折り返す) |
これより込み入った列指定——複数列をまたぐ **\multicolumn**、列を繰り返す *{n}{…}、array パッケージの m{幅}(縦中央)・b{幅}(下端)や >{…} による列前処理など——は「列指定の詳細」のページで扱います。まずは l・c・r・p{幅} の四つを押さえれば、ほとんどの表は組めます。
罫線——横罫線と縦罫線
横罫線は **\hline** で引きます。行と行のあいだ(または表の上下端)に置き、表の幅いっぱいに一本の線を渡します。\hline を二つ続けて **\hline\hline と書くと、二本の平行な罫線(二重罫線**)になります。表の途中の特定の列だけに罫線を引きたいときは、\cline{2-3} のように列番号の範囲を指定する \cline を使います。
縦罫線は、列指定のなかに **|(縦棒)** を挟んで作ります。{|l|c|r|} と書けば、3 列の左右と各列のあいだに縦線が入り、\hline と組み合わせれば全セルが格子(罫線で囲まれたマス目)になります。|| とすれば二重の縦罫線です。
\begin{tabular}{|l|c|r|}
\hline
左 & 中央 & 右 \\
\hline
1 & 2 & 3 \\
\hline
\end{tabular}ただし、罫線の引きすぎは避けるのが定石 です。とくに縦罫線や二重罫線は、専門的な組版では推奨されません。booktabs パッケージの作者は「縦罫線は使わない、二重罫線も使わない」と明言しており、学術論文の表は横罫線を数本だけ引く簡素なものが標準です。見やすい表組みと、\toprule・\midrule・\bottomrule を使う流儀は「罫線とプロ品質の表」のページで詳しく扱います。
行末と行間の調整
行末の \\ には 任意引数 を付けられます。\\[2pt] のように長さを角括弧で添えると、その行の下に 追加の縦の空き が入ります(負の値で詰めることも可能)。罫線の上下が窮屈に見えるときや、行ごとに余白を持たせたいときに使います。
なお \\ は本来 改行命令 で、表の行末だけでなく、後述する数式の行列や align などの整列環境でも「行の区切り」として同じ働きをします。だから「& で桁を区切り、\\ で行を改める」という感覚は、表だけでなく数式の整列にもそのまま通じます。
行全体の高さを一律に広げたいなら、\renewcommand{\arraystretch}{1.3} で行間の倍率を変える方法があります。列と列のあいだの空き(既定で片側 6pt)は \tabcolsep という長さで制御します。これらの細かな寸法調整も「列指定の詳細」「罫線とプロ品質の表」で扱います。
tabular と table 環境の違い
よく混同されますが、**tabular と table はまったく別物** です。tabular は 表そのもの(行と列の中身) を組む環境で、テキストモードのどこにでも置けます——段落の途中、箇条書きの項目内、図のキャプションの中、さらには $…$ の外なら脚注の中にも書けます。tabular 自身は キャプションも番号も配置の調整も持ちません。
一方 **table は 浮動体(フロート)** の環境で、なかに tabular を入れて使います。table が与えるのは、**\caption{…} による見出しと自動の通し番号(「表 1」など)、\label{…} と \ref{…} による相互参照、そして [htbp] のような配置指定** で「ページのどこに置くか」を LaTeX に委ねる仕組みです。表が大きくて改ページにまたがりそうなときも、フロートにしておけば LaTeX が適切な位置へ送り出します。table 環境の詳しい使い方(キャプション・番号・配置)は別ページに譲ります。
\begin{table}[htbp]
\centering
\caption{四半期ごとの売上}
\begin{tabular}{lrr}
\hline
四半期 & 売上 & 前年比 \\
\hline
Q1 & 1{,}200 & +5\% \\
Q2 & 1{,}350 & +8\% \\
\hline
\end{tabular}
\end{table}この例では、外側の table が「表 1: 四半期ごとの売上」という番号付きキャプションと配置を受け持ち、内側の tabular が中身を組みます。\centering で表を左右中央に置いています。要点は、**中身は tabular、見出しと配置は table** と役割が分かれていること。tabular だけでも表は組めますが、論文や報告書で「表◯」と参照したいなら table で包みます。
完全な例
最後に、ここまでの要素を組み合わせた tabular の例を示します。1 列目は左揃えの見出し、2 列目は折り返す p{幅} 列、3 列目は右揃えの数値という構成です。
\begin{tabular}{l p{5cm} r}
\hline
項目 & 説明 & 価格 \\
\hline\hline
りんご & 蜜入りの大玉。贈答にも使われる人気の品種です。 & 380 \\
みかん & 甘くて手で剥ける小ぶりの柑橘。 & 120 \\
\hline
\end{tabular}この表は 3 列で組まれます。1 列目「項目」は内容の自然な幅で左に、3 列目「価格」は右に揃います。2 列目「説明」は **幅 5cm の p 列** なので、長い説明文は 5cm の幅で自動的に折り返り、そのセルだけが複数行になります(結果として行の高さも内容に合わせて伸びます)。見出し行の下は \hline\hline で二重罫線、表の上端と下端は \hline の一本罫線です。l や r の列で同じ長文を入れると折り返さずに横へ伸びてしまう——そこが p{幅} との決定的な違いです。