つれづれなる備忘録

日々の発見をあるがままに綴る

Texによる文書作成6 ~ 表の作成

 今回はLaTeX文書の作成方法として文中に表を作成する方法について紹介したい。

1. 表の作成方法

 文中に表を作成するにはtable環境内に\begin{tabular}~\end{tabular}としてセルの中身や罫線を設定していく。 4行4列の表を作成するにはbegin{tabular}{lcrc}などとする。{lcrc}は列数とセルごとに左寄せl,中央寄せc, 右寄せrを設定しており、1列目は左、2列目は中央、3列目は右、4列目は中央寄せに設定している。 セルの中身を記述し、&で列を区切り、\\で改行する。罫線を設定しない一番単純な表のLaTeXコマンドは以下のようになる。

\begin{table}[htb]
\centering
 \caption{スペック比較:罫線なし}
  \begin{tabular}{lcrc}
    機種 & ディスプレイ & 値段 & CPUコア \\
    iphone12 pro & 6.1" & 106,800円 & A14 Bionic \\
    iphone12 & 6.1" & 85,800円 & A14 Bionic \\
    iphone12 mini & 5.4" & 74,800円 & A14 Bionic
  \end{tabular}
\end{table}

なお[htb]は図の挿入と同様に表の挿入位置を指定し、\centeringは表をページ中央に配置、\captionは表のキャプションを指定している。 上のLaTeXコードを実行すると以下の表が得られる。

"罫線なしの表"
罫線なしの表

2. 表の罫線作成方法

 次に表に罫線を入れる方法について紹介する。縦の罫線については\begin{taular}{|l||c|r|c|}とすればよい。1本の罫線は|,2重罫線は||として指定する。 次に横の罫線は改行のコマンド\\の後に\hlineを入れる。2重罫線の場合は\hline \hlineとする。

\begin{table}[htb]
\centering
  \caption{スペック比較:罫線あり}
  \begin{tabular}{|l||c|r|c|}  \hline
    機種 & ディスプレイ & 値段 & CPUコア \\ \hline \hline
    iphone12 pro & 6.1" & 106,800円 & A14 Bionic \\ \hline
    iphone12 & 6.1" & 85,800円 & A14 Bionic \\ \hline
    iphone12 mini & 5.4" & 74,800円 & A14 Bionic \\ \hline
  \end{tabular}
\end{table}

上のLaTeXコードを実行すると以下の表が得られる。

"罫線ありの表"
罫線ありの表

2. セルの垂直結合

 次はセル同士を結合する方法について示す。ここでは罫線を引くか引かないかという形でセルを結合する。まず垂直方向にセルを結合するために罫線を引く場所を制御する。 そのために\hlineの代わりにcline{開始セル番号-終了セル番号}を用いると開始から終了までのセルに罫線が引かれて、それ以外は引かれない。また1セルだけ罫線を引く場合は開始と終了を同じセル番号のすればよい。 以下はCPUコアのA14 Bionicは共通なので4列目は罫線を引かない。(これだけだと各行に\cline{1-3}のみ記載すればよい)またディスプレイの6.1"は共通なので2行目の設定は1列目と3列目だけ罫線を引くために\cline{1-1} \cline{3-3}とする。全体的には以下のようなLaTeXコードになる。

\begin{table}[htb]
\centering
  \caption{スペック比較:セル垂直結合}
  \begin{tabular}{|l||c|r|c|}  \hline
    機種 & ディスプレイ & 値段 & CPUコア \\ \hline \hline
    iphone12 pro & 6.1" & 106,800円  &\\ \cline{1-1} \cline{3-3}
    iphone12 &  & 85,800円 & A14 Bionic \\ \cline{1-3} 
    iphone12 mini & 5.4" & 74,800円 & \\ \hline
  \end{tabular}
\end{table}

"セルの垂直結合"
セルの垂直結合

3. セルの水平結合

 今度はセルを水平方向に結合する方法を示す。水平方向に結合したセルを定義するには\multicolumn{結合数}{書式}{セルの中身}を使用する。書式は例えば|c|のように左・中央・右寄せの指定と罫線|を指定する。 以下の表はバージョンという列を増やして5列4行の表にして、3行目の1列目と2列目だけを水平結合したセルにするLaTeXコードを示す。

\begin{table}[htb]
\centering
  \caption{スペック比較:セル水平垂直結合}
  \begin{tabular}{|l|c|c|r|c|}  \hline
    機種 & バージョン &ディスプレイ & 値段 & CPUコア \\ \hline \hline
    iphone12 & pro & 6.1" & 106,800円  &\\ \cline{1-2} \cline{4-4}
     \multicolumn{2}{|c|}{iphone12} &   & 85,800円 & A14 Bionic \\ \cline{1-4}
    iphone12 & mini & 5.4" & 74,800円 & \\ \hline
  \end{tabular}
\end{table}

"セルの水平結合"
セルの水平結合

4. multirowパッケージの利用

 罫線の設定で垂直にセルを結合すると、ディスプレイ 6.1"が結合数が偶数だとどうしても上寄りか下寄りになってしまい見栄えが悪い。そこでmultirowパッケージを利用してmultirowコマンドを用いてセルを垂直に結合する。ちなみにmulticolumnはデフォルトで使えるコマンドなので特にパッケージの指定は必要ない。multirowコマンドを利用するにはまず、プリアンブル領域で\usepackage{multirow}とする。multirowmulticolumnとほぼ同様の使い勝手でmultirow{結合数}{書式}{セルの中身}という形で使用する。なお書式はコンパイラによる自動設定を利用した方がエラーになることが少なく{*}を指定する。 以下はディスプレイ6.1"のセルに対してmultirowコマンドでセルを垂直結合したLaTeXコードを示す。

\begin{table}[htb]
\centering
  \caption{スペック比較:セル水平垂直結合(multirow)}
  \begin{tabular}{|l|c|c|r|c|}  \hline
    機種 & バージョン &ディスプレイ & 値段 & CPUコア \\ \hline \hline
    iphone12 & pro & \multirow{2}{*}{6.1"} & 106,800円  &\\ \cline{1-2} \cline{4-4}
     \multicolumn{2}{|c|}{iphone12} &   & 85,800円 & A14 Bionic \\ \cline{1-4}
    iphone12 & mini & 5.4" & 74,800円 & \\ \hline
  \end{tabular}
\end{table}

ディスプレイの6.1"が縦方向中央に表示されており、2行の結合でもより自然に表示できている。

"multirowを利用したセル垂直結合"
multirowを利用したセル垂直結合

5. その他表の挿入方法

 上で紹介したようにセル数が少ない場合はよいが、セル数が増えてくるとLaTeXコードで記述しようとするとかなり面倒になる。さらにセルの結合が入ると何列目に罫線を引くとか、multirowやmulticolumnをどこに入れるかなど複雑になってくる。そこで1つの方法としてはエクセルなどで表を作成して、図としてLaTeX文書内に挿入するという手がある。ただしセル内を修正する場合、エクセルの修正→画像ファイルという手順を踏まないといけない。

他の方法としては、(個人的には利用していないが) ExcelからLaTeXコードに変換するツールがある。いろいろなツールがあるが、セル結合まで対応しているものとしてExcel2latexというものもある。

Excel2LaTeXの詳細情報 : Vector ソフトを探す!

6. まとめ

 今回はLaTeX上で表を作成する方法やセル結合の方法について紹介した。