"血をもって書け。そうすればあなたは、血が精神だということを経験するだろう。"

multirowで色付け実験

下の方にまとめて出力結果があります。

  • プリアンブル
\usepackage{graphicx,colortbl,multirow}
\setlength{\doublerulesep}{2pt}
\setlength{\arrayrulewidth}{1pt} 
\doublerulesepcolor{red}
\arrayrulecolor{blue}
  • 第1例:\multirowの基本的な使い方。
\begin{tabular}{|c|c|}
\hline
\multirow{2}{1zw}{A} & B \\ \cline{2-2}
& C \\ \hline
\end{tabular}
  • 第2例:素直に行に色付けする\rowcolorを使ってみる。左下のセルの塗りつぶしでテキストが上書きされる。右の行罫線も消えている。
\begin{tabular}{|c|c|}
\hline
\rowcolor{yellow}\multirow{2}{1zw}{A} & B \\ \cline{2-2}
\rowcolor{yellow}& C \\ \hline
\end{tabular}
  • 第3例:セルごとに色付けする\cellcolorを使っても同じ結果。
\begin{tabular}{|c|c|}
\hline
\multirow{2}{1zw}{\cellcolor{yellow}A} & \cellcolor{yellow} B \\ \cline{2-2}
\cellcolor{yellow}& \cellcolor{yellow} C \\ \hline
\end{tabular}

ではこれを何とかする方法はないのか。「multirow」「color」で検索。

\multirowをcolortblと一緒に使うとき、\multirowを含む列を色付けしたければ事前に対策を練らねばならない。colortblはそれぞれのセルを別々に色付けする。だから\multirowを正のnrows値と一緒に使うとcolortblがまず一番上のセルを塗り、それから\multirowがこのセルから初めてnrows個のセルを組版し、その後でcolortblが他のセルを塗るので、その領域のテキストは隠れてしまう。これはnrowsに負値をいれて\multirowを最終行に置くことで解決する。

http://www.ctan.org/tex-archive/macros/latex/contrib/multirow/の最後の段落。なるほど。行数に負値を入れるという発想はなかった。

  • 第4例:multirowの行数に負値を入れて最終行に置くと確かに左の列は解決。右の行罫線は\clineを二つ重ねても表示されない。\clineは自由度が低いようだ。
\begin{tabular}{||c||c||}
\hline
\hline
\cellcolor{yellow}& \cellcolor{yellow} B \\ \arrayrulecolor{blue} \cline{2-2}\cline{2-2}
\multirow{-2}{1zw}{\cellcolor{yellow}A} & \cellcolor{yellow} C \\ \hline\hline
\end{tabular}
  • 第5例:しかたないので行罫線を使うのはやめて、黒く塗った小さなセルを作って罫線とみなすことにする。ここから線の色とか黒にする。行数と行高をいじったことで左列にも影響が出る。
\doublerulesepcolor{black}
\arrayrulecolor{black}
\begin{tabular}{||c||c||}
\hline
\hline
\cellcolor{yellow}& \cellcolor{yellow} B \\ 
\cellcolor{yellow}\vspace{-1.4zw}& \cellcolor{black}\\ 
\multirow{-3}{1zw}{\cellcolor{yellow}A} & \cellcolor{yellow} C \\ \hline\hline
\end{tabular}
  • 第6例:左列を調整してようやく目的のものができる。
\begin{tabular}{||c||c||}
\hline
\hline
\cellcolor{yellow}& \cellcolor{yellow} B \\ 
\cellcolor{yellow}\vspace{-1.4zw}& \cellcolor{black}\\ 
\multirow{-3}{1zw}{\cellcolor{yellow}\vspace{-1.4zw}A} & \cellcolor{yellow} C \\ \hline\hline
\end{tabular}

f:id:satzz:20071208125811p:image
結論:

    • TeXで表の色組みはHTMLほど簡単にはいかないらしい。