【TeX】行列や表で部分的に罫線を引く・複数のセルを結合する方法【cline・multicolumn・multirow】

TeX

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のそもそもの使い方について詳しい説明

コメント

タイトルとURLをコピーしました