表の最上段セルのカラー化

TeX ではかなり複雑な表でも自由に描くことができます。
しかし、カラー化となるとどうするのでしょうか?

書籍の表でたまに見られるように、表の最上段だけ背景に色を付けたいこともあるでしょう。
実は表の項目に網掛けをするパッケージもあるのですが、どうもいま一つです。

そこで今回は、右図のような表を作成するマクロを作ってみました。

hyou.jpg (8371 バイト)

まず考え方から述べますと、表の横幅を正確に測り、\multicolumn の引数に文字列の代わりに
\colorbox を入れます。これで表の横幅に等しい、カラーの帯ができます。
次に、1段目(カラーの帯)を2段目に重なるように行間を調整してできあがりです。
単純な考え方ですが、Simple is the best. なのです。さあやってみましょう。

最初に使いたい色を指定しておきましょう。

\definecolor{Orange}{cmyk}{0.00,0.61,0.87,0.00}%%%オレンジ
\definecolor{yl}{cmyk}{0.00,0.00,1.00,0.00}%黄色
\definecolor{lg}{cmyk}{0.00,0.00,0.00,0.30}%薄いグレイ

とりあえず3色にしましょう。ちなみに、使える色は1つの表につき1色です。

\setlength{\tabcolsep}{0mm}%一旦セルと文字のスペースを 0 に
\newlength{\yokodimen}%表の横幅測定用
\def\nagasa#1{\settowidth{\yokodimen}{\xkanjiskip0pt#1}}%%ここで横幅測定
\setlength{\fboxsep}{0pt}%%fboxの罫線と文字の空きを 0 に

上ではパラメータを設定しています。
正確に横幅を測定するために \tabcolsep や \fboxsep は 0 にします。
\nagasa で表の横幅を計ります。

\def\colocell#1#2{%
\multicolumn{#1}{#2}{%
  \begin{minipage}{\yokodimen}%
   \colorbox{Orange}%
    {\vbox to\Cht{\hrule height 0pt depth 0pt %%
     width \yokodimen}}%
\end{minipage}%
}\\[-5.5mm]}%

\multicolumn の中に \colorbox を入れています。色はオレンジにしてみましょう。
オレンジの帯は \vbox に入れて高さは \Cht とします。 \hrule height 0pt depth 0pt は
実際には出力されません。支柱の働きをします。 オレンジの帯の横幅は \yokodimen です。
この値は \nagasa で測定されます。
-5.5mm  は2段めのセルに重ねるための値です。

\addtolength{\Cht}{0.5mm}%%カラーボックスの高さを決める
\addtolength{\Cht}{6.4pt}

誤差のないように微調整を行います。

\def\cell#1{%
\vbox{{\hrule height 0pt depth 0pt width6pt}}%
#1\vbox{{\hrule height 0pt depth 0pt width6pt}}}

#1はセルの要素です。 左右に6ptの空きを入れ表に余裕を与えます。

上記をすべてつなげて mymacro にコピーして完了です。

使い方はまず、\nagasa{} のなかに、表の各列の最長の要素を改行なしで入れて行きます。
これで表の横幅を測定します。
続いて、12×列数の長さを \yokodimen に加えます。これは各セルに 6pt の空きを入れているためです。
\addtolength{\yokodimen}{12×列数pt} 3 列なら 36pt です。

次に tabular 環境を普通に書き、\multicolumn の代わりに \colocell{列数}{配置} とします。
そして、セルの要素を \cell{} で書いて行きます。
以上です。ではやってみましょう。

\documentclass[a4j,10pt]{jbook}

\usepackage[usenames]{color}
\usepackage{mymacro}
\usepackage{multicol}


%%%%%% TEXT START %%%%%%
\begin{document}

\nagasa{山梨県次郎東京都中央区日本橋a-b-c03-1234-5678}
\addtolength{\yokodimen}{36pt}%12×3

\begin{tabular}{lll}
\colocell{3}{c}%3列、各要素中央に
\hline
\cell{\bf 氏名} & \cell{\bf 住所} & \cell{\bf 電話番号} \\
\hline
\cell{山梨県次郎} & \cell{山梨県甲府市} & \cell{123-456-7890}\\
\hline
\cell{日本太郎} & \cell{東京都中央区日本橋a-b-c} & \cell{03-1234-5678}\\
\hline
\end{tabular}

\end{document}

できましたか?色の指定は自由ですからお好きな色を使ってください。
また、通常和書の表において、外側の罫線はそれ以外より太いものを使用しますが、
パラメータの変更でこれも可能です。挑戦してみてください。