f

2013-11-24

表の行ごとに着色(ストライプ)[LaTeX]

LaTeXで表を作っていると行ごとに交互に色を変えて(ストライプをかけて)見やすくしたいときがある。これを実現する方法としてはxcolorパッケージで定義されている\rowcolorsコマンドがある。このコマンドを使えるようにするには、
\usepackage[table]{xcolor}
とするか
\documentclass[dvipdfmx,table]{jsarticle}
\usepackage{xcolor}
としてxcolorパッケージのオプションにtableをつけて読み込む。

\rowcolorsコマンドの使い方

\rowcolorsコマンドの書式は以下。
\rowcolors{<starting row index>}{<odd row color>}{<even row color>}
例: \rowcolors{2}{}{yellow!20}
  • 着色を2行目からにして、奇数行は無色、偶数行を黄色で着色。
    \documentclass[11pt]{article}
    \usepackage[table]{xcolor}
    \begin{document}
    \centering
    \rowcolors{2}{}{yellow!20}
    \begin{tabular}{|c|c|c|}
    \hline 
     &  & \tabularnewline
     &  & \tabularnewline
     &  & \tabularnewline
    \hline 
    \end{tabular}
    \end{document}
    
    rowcolorsの使い方で参照:http://texblog.org/tag/rowcolors/

rowcolorsの制御

rowcolorsによる着色を一時的にやめたり再開するには以下のコマンドを表のセル内で記述
\hiderowcolors
\showrowcolors
\hiderowcolors: このコマンド以降でrowcolorsの色を隠す。
\showrowcolors: \hiderowcolorsで隠した色を再開する。
参考

multicolumnでrowcolorを有効化

rowcolorsやrowcolorコマンドでの行の着色はmulticolumnコマンドで列を連結すると、連結した箇所では無効となる。これを回避するためにmulticolumnコマンドを再定義する。
%%% Activate \multicolumn color inheritance
\let\oldmc\multicolumn
\def\multicolumn#1#2#3{\oldmc{#1}{#2}{\ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi #3}}

標準でtabularとlongtableをストライプ

表が登場する度に毎回\rowcolorsコマンドを入力するのは面倒なので標準で表を作ったらストライプをかけてくれるように表(taublarとlongtable)の定義を変更する。
プリアンブルに以下の内容を書いて表を再定義
\usepackage[table]{xcolor}
​
% alternate rowcolors for all tables
\let\oldtabular\tabular
\let\endoldtabular\endtabular
\renewenvironment{tabular}{\rowcolors{2}{}{yellow!20}\oldtabular}{\endoldtabular}
​
% alternate rowcolors for all long-tables
\let\oldlongtable\longtable
\let\endoldlongtable\endlongtable
\renewenvironment{longtable}{\rowcolors{2}{}{yellow!20}\oldlongtable} {
\endoldlongtable}

0 件のコメント:

コメントを投稿