LaTeX で色を扱う標準的な道具が **xcolor** パッケージです。古い color パッケージを置き換える上位互換で、文字や背景に色を付けるだけでなく、red!50!blue のような 色式(color expression) で色そのものを混ぜ合わせられるのが最大の特徴。このページでは、読み込み方からモデル・色名・混色までを順に見ていきます。

パッケージを読み込む

色を使うには、プリアンブルで \usepackage{xcolor} と書くだけです。作者は Uwe Kern(2003〜2021 年、現在は LaTeX Project が保守)で、ドライバに依存せず PDF でも DVI でも同じように色が出るよう設計されています。古い文書では \usepackage{color} を見かけますが、新規に書くなら xcolor を選んでください。混色(色式)や色名の追加セットは color には無く、xcolor だけの機能です。

素のままでも 19 色の基本色名が使えますが、オプションを付けると 定義済みの色名セット が追加で読み込まれます。dvipsnames は PostScript(dvips)由来の 68 色、svgnames は SVG 1.1/CSS の約 151 色、x11names は X11 由来の約 317 色。さらに table オプションを付けると **colortbl** が一緒に読み込まれ、表のセルや行に色を塗れるようになります(詳しくは「色のついた表」のページへ)。

latex
\usepackage{xcolor}                 % 基本(19 色)/ basics (19 colours)
\usepackage[dvipsnames]{xcolor}     % + 68 色 / + 68 PostScript names
\usepackage[svgnames]{xcolor}       % + 約151色 / + ~151 SVG names
\usepackage[x11names]{xcolor}       % + 約317色 / + ~317 X11 names
\usepackage[dvipsnames,table]{xcolor} % 色名 + 表の着色 / names + colortbl

オプションは併記でき、[dvipsnames,svgnames] のように複数のセットをまとめて読み込めます。色名は内部で衝突しないよう設計されていますが、混乱を避けるため使うセットだけに絞るのがおすすめです。

色を付ける

最もよく使うのが **\textcolor{色}{文字} で、指定した範囲の文字だけに色を付けます。範囲を波括弧で渡さず、そこから先をまとめて色付けしたいときは、宣言形の {\color{色} … }** をグループ { } の中で使います。\color はそのグループの終わりまで効き続ける「スイッチ」だと考えてください。

document.tex
これは \textcolor{red}{赤い} 文字です。
{\color{blue} ここから先は青。} ここは元の色に戻ります。

背景を塗りたいときは **\colorbox{色}{文字} が、文字の後ろを指定色のベタ塗りボックスにします。枠と背景を別々の色にしたいなら \fcolorbox{枠色}{背景色}{文字}。最初の引数が枠線、2 番目が塗りつぶしの色です。ページ全体の地色を変えるのが \pagecolor{色}**(元に戻すのは \nopagecolor)。これは以降のすべてのページに効くので、表紙だけ黒くしたいなら使う場所に注意してください。

document.tex
\colorbox{yellow}{ハイライト}
\fcolorbox{red}{yellow}{赤枠・黄背景}
\pagecolor{black}   % これ以降、ページ全体が黒地に

これらの命令はどれも、色名の代わりに 色式 やモデル指定を直接受け取れます。たとえば \textcolor{red!50!blue}{…} や、角括弧でモデルを添えた \textcolor[rgb]{1,0,0}{…} のように書けます(モデル指定は次節)。

色を定義する

自分の色に名前を付けるのが **\definecolor{名前}{モデル}{値}** です。一度プリアンブルで定義すれば、以後は普通の色名として \textcolor などに渡せます。たとえば落ち着いた青を myblue として定義するなら次のとおり。

latex
\definecolor{myblue}{rgb}{0.2,0.4,0.8}
% 使う / use it:
\textcolor{myblue}{この文字は myblue}

もう一つ、既存の色(や色式)から新しい色名を作るのが **\colorlet{名前}{色}** です。\definecolor がモデルと数値から色を作るのに対し、\colorletすでにある色を混ぜて 名前を付けます。たとえば赤を半分白で薄めた色を half と名付けるなら、\colorlet{half}{red!50}。混色の ! 記法は次節で詳しく扱います。

色モデル

\definecolor の 2 番目の引数が 色モデル、すなわち色を数値でどう表すかの方式です。xcolor は複数のモデルに対応していて、印刷向けの cmyk から Web でおなじみの HTML 16 進表記まで、用途に合わせて選べます。よく使うものを挙げます。

モデル
rgb赤・緑・青を各 0〜1{0.2,0.4,0.8}
RGB赤・緑・青を各 0〜255 の整数{51,102,204}
HTML6 桁の 16 進数 RRGGBB{FF8800}
cmykシアン・マゼンタ・黄・黒を各 0〜1{0,0.5,1,0}
gray1 値(0=黒, 1=白){0.5}
named既存の色名を参照(dvips 名など){Periwinkle}

同じオレンジ色でも、モデルが違えば書き方が変わるだけで結果は同じです。次の 4 行はいずれもほぼ同色を定義します。HTML は 16 進 6 桁で、Web のカラーコードをそのまま貼れるのが便利。cmyk は印刷(4 色分解)で使います。

latex
\definecolor{o1}{rgb}{1,0.5,0}
\definecolor{o2}{RGB}{255,128,0}
\definecolor{o3}{HTML}{FF8000}
\definecolor{o4}{cmyk}{0,0.5,1,0}

モデルは色を「使う」側でも角括弧で直接指定できます。色名を定義せず一度きり使うなら、\textcolor[HTML]{FF8800}{…}\color[gray]{0.5} のように書くのが手軽です。なお named モデルは、dvipsnames などで読み込んだ既存の色名を参照する特殊なモデルで、ふだんは単に色名を直接書けば足ります。

色式 — 色を混ぜる

ここが xcolor の真価です。色名の代わりに、感嘆符 ! を使った 色式 を、色を期待するあらゆる場所に書けます。基本形は **色A!割合!色B** で、色 A をその割合だけ、残りを色 B にして混ぜます。red!50!blue なら赤 50% と青 50%、red!75!blue なら赤 75% と青 25% です。

色 B を省くと、残りは とみなされます。つまり red!20 は「赤 20% + 白 80%」で、薄い赤(淡い色=ティント)になります。逆に黒と混ぜれば暗くなり、blue!30!black は「青 30% + 黒 70%」の濃紺です。先頭に マイナス記号 を付けた -red は赤の 補色(反転色)を表します。

  • red!50!blue** — 赤と青を半々に混ぜた紫
  • red!20** — 赤 20%・白 80%。薄い赤(ティント)
  • blue!30!black** — 青 30%・黒 70%。暗い青(シェード)
  • -red** — 赤の補色(シアン寄り)
  • green!40!yellow!60** — 連結も可能。左から順に混ぜる

色式はどこでも使えるので、\textcolor{blue!30!black}{…}\colorbox{yellow!40}{…}\definecolor\colorlet の中でも自由に書けます。混色を一か所で名前にしておけば、文書全体のトーンを 1 行の定義で調整できる、という設計です。

document.tex
\textcolor{red!50!blue}{半分ずつの紫}
\colorbox{yellow!40}{薄い黄色の背景}
\colorlet{accent}{blue!30!black}   % アクセント色を一括管理
\textcolor{accent}{見出しの色}

使える色名

オプション無しでも、次の 19 の基本色 はいつでも使えます。

  • black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow

もっと豊富な色が欲しいときは、前述のオプションで色名セットを足します。dvipsnames なら RoyalBluePeriwinkleBurntOrange など 68 色、svgnames なら DarkSlateGrayTomato など CSS でおなじみの約 151 色が使えます。色名は大文字小文字を区別するので、RoyalBlueroyalblue と書くと未定義エラーになります。どの色がどんな見た目かは、xcolor のドキュメントにある色見本(texdoc xcolor で開けます)が確実です。