coffee break

某の情報系大学院生

LaTeX 表作成

実験レポートで必要な表がTeXで描くにはちょっと複雑だった(初心者感想)
必要な情報がいろんなサイトに散らばってたのでまとめておく

必要なパッケージ

  • multirow

easyTeXをインストールして使ってる人ならデフォルトで入ってるはずなので特に気にすることはない

サンプルコード

まずはシンプルな表から
この表ならmultirowパッケージを使う必要はない
f:id:mildtech:20170529094309p:plain

\begin{table}[htbp]
\centering
\caption{サンプル表1}
\begin{tabular}{|c|c|c|c|} \hline
セル1 & セル2 & セル3 & セル4 \\ \hline
セル5 & セル6 & セル7 & セル8 \\ \hline
\end{tabular}
\end{table}

特に解説することもないだろう
下のリンクを見れば上の表で何をしてるかはわかる
一言付け加えるなら,表一列打ち込みが終わったら改行コマンド"\\"を打たないとコンパイルエラーを食らう
http://www.latex-cmd.com/fig_tab/table01.html

本題,上のリンクに載っていない複雑な表の描き方
f:id:mildtech:20170529115907p:plain


解説
  • 横のセルを結合したいとき

\multicolumn{結合したいセル数}{セルの書式設定}{セルの内容}
上のサンプル表でいうセル2.セルの書式設定は基本的にはc|がいいと思う.詳しくはさっき挙げたURLを参考に.
2つのセルを1つのセルとみなしているので&は一つ減る


  • 縦のセルを結合したいとき

\multirow{結合したいセル数}{*}{セルの内容}
上のサンプル表でいうセル3とセル6がこれ.
二番目の項の*てなんだよと思うかもしれないが,こう書くことでTeX側が勝手に最適な位置にセル内容を表示してくれる.一応説明すると列幅を指定するための項らしい.下手にいじらないのが吉.
結合先のセルは空白にしなきゃいけない.別に何か書いててもエラーにはならないしちゃんとその内容も表示されるけど文字が重なる.


  • 長方形型にセルを結合したいとき

\multicolumn{結合したいセル数}{セルの書式設定}{\multirow{結合したいセル数}{*}{セルの内容}}
上のサンプルでいうセル4がこれ.要するにmulticolumnのセル内容のところにmultirowをそのままぶち込むだけ.
ちなみにmultirowのセル内容にmulticolumnをぶち込んでみたらTeXに怒られた.上記の方法じゃないとだめらしい.
この形に結合するとコードが読みづらくなってコンパイルエラー食らったときに原因が分かりづらくなるので要注意.


  • 特定のセルにだけ下線を引く方法

\cline{x - y}
x,yはそれぞれ下線を引きたいセルの列番号を入れる.サンプルだとセル7からセル3,セル4に下線を引きたいと思ったら,セル7の列番号は3,セル4は結合されてるが結合前の状態を考えて列番号は6.だから\cline{3-6}と書く.もし\cline{3-5}とかいたらセル4の右半分には下線が引かれない.

複数指定したいときは以下のように書く
\cline{任意の列番号 - 飛ばすセルの一つ前の列番号} \cline{飛ばすセルの1つ後の列番号 - 任意の列番号}
ただ横に並べただけ.セル一個だけに下線を引きたいときはサンプルみたいに\cline{1-1}と,同じ列番号を指定してやればいける.
残念ながら\cline{1-1}{3-6}のように書くことはできない.


ちなみに\labelコマンドを使う場合は\captionより下の行に書くと正しく作動するらしい.別にどこに書いてもエラーにはならないけど,参照したときに番号が狂うバグが起きることが多々ある.


これだけ知っていれば基本的にどんな表でも描けるようになるはず