array環境やtabular環境で、行列や表全体に罫線を引く際は「\begin{array}{c|c|c}」のように「|」を挿入したり、\hlineを用いればよかった。この記事では部分的に罫線を引く方法についてまとめる。
また、部分的に縦の罫線を引くには「multiclomn」(複数のセルを結合するコマンド)を用いるので、multicolumnやmultirowのそもそもの使い方についても書いておく。
部分的に罫線を引く
部分的に横の罫線を引くには「\cline」を用いる。
\cline{a-b}でa列目からb列目に罫線(横線)を引く。
※tabular環境でも同じように引くことができる。
$$\left(\begin{array}{ccc}
a & b & c\\ \cline{1-2}
d & e & f\\ \cline{2-3}
g & h & c
\end{array}\right)$$
縦の罫線を引くときは「\multicolumn{1}{|c}{text}」を使うのがスタンダード
2つめの入力は「|c」でtextの左側に、「|c|」で両側、「c|」で右側に縦の罫線をひく。
※multicolumnは元々複数の列を結合する際に用いるコマンド。使い方は次の節を参照。
$$\left(\begin{array}{ccc}
a & \multicolumn{1}{|c}{b} & c\\
d & \multicolumn{1}{|c|}{e} & f\\
g &\multicolumn{1}{c|}{h} & i
\end{array}\right)$$
「|c」は「|r」や「|l」に変更すれば右寄せや左寄せになる
$$\left(\begin{array}{ccc}
a& \multicolumn{1}{|r}{bbb}&c\\
d& \multicolumn{1}{|r|}{e}&f\\
g&\multicolumn{1}{l|}{h}&i
\end{array}\right)$$
階段行列を書きたいときなどに使える
$$\left(\begin{array}{rrrrrrrrrrrrr}
&&\multicolumn{1}{|c}{c_1} & * & \cdots & * & \cdots & \cdots & \cdots & & & \\ \cline{3-5}
&& & & & \multicolumn{1}{|c}{c_2} & * & \cdots & \cdots & \cdots & & & \\ \cline{6-7}
&& & & & & & \ddots & \ddots & & & \\
&& & & & & & & & & \\
&& & & & & & & & & \multicolumn{1}{|c}{c_r} & * & \cdots \\ \cline{11-13}
&& & {\huge \text{0}} & & & & & & & & \\
& & & & & & & & & & \\
&& & & & & & & & &
\end{array}\right)$$
mulicolumnのそもそもの使い方(複数のセルを結合する)
multicolumnはarrya環境やtabular環境で複数のセルを横方向に結合するコマンド。
\multicolum{num}{pos}{text}の形で用いる。
num:結合するセルの個数
pos:rまたはcまたはlでtextを配置する位置
$$\left(\begin{array}{ccc}
\multicolumn{2}{c}{ab}& c\\
d& e & f\\
\multicolumn{3}{c}{ghi}
\end{array}\right)$$
multirowの使い方(複数のセルを縦方向に結合する)
縦方向にセルを結合したいときはmultirowを用いる。multicolumnは何もしなくても使えるが、multirowはプリアンブルでパッケージを宣言しておく必要がある。
使い方はmulticolumnとほぼ同様だが、2つ目の引数は{*}(自動設定)としておかなかいとエラーがでる(これは環境によるかもしれない)。また、数式モードで記述してもmulirow内ではtextモードになってしまうので、必要なら$マークなどでくくる。
\usepackage{multirow} %プリアンブルで書いておく
$$\left(\begin{array}{c|cc}
\multirow{3}{*}{adg} & b & c\\
& e & \multirow{2}{*}{fi}\\
& h &
\end{array}\right)$$
補足:vlineは線がずれるので注意
行列で部分的に縦線を引くには「\vline」だと書いているサイトがちらほらあるが、vlineは線がずれるし、文字に寄ってしまう。
%良くない例
\left(\begin{array}{ccc}
a& \vline b&c\\
d& \vline e&f\\ \cline{2-3}
g&h&i
\end{array}\right)
vlineはそもそもarray環境やtabular環境固有のコマンドではなく、単なる文章中で縦線を書くためのもので、罫線をひくためのものではない。最初これに困っていたのだが、同じ悩みをtex.stackexchangeというサイトで質問している方がいて解決した。
参考サイト
Controlling position for \vline
tex.stackexchange.comという質問サイト(英語)
LaTeX の MultiRow MultiColumn のお気持ちを理解する
multicolumnのそもそもの使い方について詳しい説明
コメント