表の最上段セルのカラー化
TeX ではかなり複雑な表でも自由に描くことができます。
しかし、カラー化となるとどうするのでしょうか?
書籍の表でたまに見られるように、表の最上段だけ背景に色を付けたいこともあるでしょう。
実は表の項目に網掛けをするパッケージもあるのですが、どうもいま一つです。
そこで今回は、右図のような表を作成するマクロを作ってみました。
![]() |
まず考え方から述べますと、表の横幅を正確に測り、\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}
できましたか?色の指定は自由ですからお好きな色を使ってください。
また、通常和書の表において、外側の罫線はそれ以外より太いものを使用しますが、
パラメータの変更でこれも可能です。挑戦してみてください。