2015年12月10日

xcolorパッケージ

この記事は,TeX & LaTeX Advent Calendar 2015 10日目の記事です.昨日はp_typoさん,明日はmattskalaさんです.

はじめに

LaTeXで色をつけるにはこうするのでした.

\documentclass[dvipdfmx]{jsarticle}
\usepackage{xcolor}
\begin{document}
\textcolor{-blue!30!yellow}{あ}
\end{document}

簡単ですね.もうちょっと詳しく見てみましょう.

パッケージ読み込み,命令

色をつけるにはxcolorパッケージ*1を使います.何でコンパイルするかに依存するので,platex + dvipdfmxでコンパイルすることにして,\documentclassにdvipdfmxオプションを渡しておきます.

\documentclass[dvipdfmx]{jsarticle}
\usepackage{xcolor}
実際の色つけはこんな感じですね.\pagecolorは以降ずっと色が変わっちゃうので,適当に\pagecolor{white}とでもして戻します.
{\color{red} きつね} % 赤い「きつね」
\textcolor{green}{たぬき} % 緑の「たぬき」
\pagecolor{yellow} % 背景は黄色
\colorbox{gray}{箱} % 灰色背景の箱
\fcolorbox{blue}{gray}{枠付き箱} % 枠が青,背景が灰色の箱

名前での色指定

色の指定で一番簡単なのは,上のような「名前」による指定でしょう,デフォルトではblack / blue / brown / cyan / darkgray / gray / green / lightgray / lime / magenta / olive / orange / pink / purple / red / teal / violet / white / yellowの全19色が使えます.更にxcolorパッケージにオプションを渡すことで使える色が増えます.具体的には,dvipsnameオプション(+68色),svgnamesオプション(+151色),x11namesオプション(+317色)です.色の見本はマニュアルの38ページあたりを見るとよいでしょう.

色を混ぜる

すでにある色を「混ぜる」ことができます.たとえば

\textcolor{red!50!blue}{あ}
という指定は赤と青を一対一で混ぜ合わせることを意味します.(つまり紫になります.)
\textcolor{red!60!blue}{あ}
とすると,赤60%青40%の混ぜ合わせになります.更に続けて,
\textcolor{red!50!blue!50!green}{あ}
とすると,これは"(red!50!blue)!50!green"と解釈されます.つまり,赤25%,青25%,緑50%ですね.*2

また,

\textcolor{rgb:red,1;blue,1;green,2}{あ}
とすると(rgbで)赤,青,緑を1:1:2で混ぜ合わせます.

混ぜるのとはちょっと違いますが,頭に"-"をつけると,補色を表します.

\textcolor{-blue}{あ} % 黄色
\textcolor{-red!50!blue}{あ} % 混ぜるのと組み合わせることもできる

直接指定

名前のついていない色も,「直接」指定することができます.たとえば\colorに対して使うには,

\color[<model>]{<color>}
とします.<model>はカラーモデル,<color>でそのカラーモデルに対しての色指定です.*3どのカラーモデルがどのような形でサポートされているからはドライバに依存します.(マニュアルを参照.)

\textcolor[rgb]{0.5,0.5,0.5}{a} % RGBによる色指定,RGBの各々の値は0から1まで
\textcolor[RGB]{128,128,128}{a} % やはりRGBだが,各々の値が0から255になる.
\textcolor[HTML]{808080}{a} % RGB.HTMLとかCSSとかのように16進法による指定
\textcolor[gray]{0.5}{a} % GRAY.0から1までの値で指定.
\textcolor[cmyk]{0.3,0.3,0.3,0.2}{a} % CMYKによる指定,0から1までの値で指定する
\textcolor[cmy]{0.5,0.5,0.5}{a} % CMYによる指定,0から1までの値で指定
\textcolor[hsb]{0.5,0,0.5}{a} % HSBによる指定,0から1までの値で指定
\textcolor[Hsb]{180,0,0.5}{a} % HSBによる指定,Hは0から360まで,他は0から1までの値で指定
\textcolor[wave]{550}{a} % 「波長」による指定.波長550mmの光の色を出す.363から814まで.

色の定義

\definecolorで新しい色を定義することができます.

\definecolor{WineRed}{HTML}{80273F} % 名前,カラーモデル,色指定の順番
\definecolor{Char}{named}{red} % 定義済みの色のカラーモデルは「named」

カラーモデルごとに定義をすることもできます.

\documentclass[dvipdfmx]{jsarticle}
\usepackage[rgb]{xcolor} % デフォルトのカラーモデルをRGBにする
\begin{document}
\definecolor{mycolor}{rgb/cmyk}{1,0,0/0,0,0,1}
\textcolor{mycolor}{あ} % 赤になる
\end{document}
\documentclass[dvipdfmx]{jsarticle}
\usepackage[cmyk]{xcolor} % デフォルトのカラーモデルをCMYKにする
\begin{document}
\definecolor{mycolor}{rgb/cmyk}{1,0,0/0,0,0,1}
\textcolor{mycolor}{あ} % 黒になる
\end{document}
わかりやすいように全然違う色にしましたが,いい例ではないでしょう……

すでにある色を別の名前にするには,\colorletを使います.

\colorlet{Char}{red} % Charは赤になる
\colorlet{testcolor}{blue!50!red} % 混ぜた色も使える

背景色付き表

パッケージ読み込み時にtableをつけると,テーブル背景に色をつけることができます.*4

\documentclass[dvipdfmx]{jsarticle}
\usepackage[table]{xcolor}
\begin{document}
\rowcolors{3}{blue}{green} % 三行目から,青と緑を交互に塗る
\begin{tabular}{>{\columncolor{red}}ccc} % 一列目を赤くする
1-1 & 1-2 & \cellcolor{yellow} 1-3\\ % 三列目を黄色くする
2-1 & 2-2 & 2-3\\
3-1 & 3-2 & 3-3\\
4-1 & 4-2 & 4-3\\
5-1 & 5-2 & 5-3\\
6-1 & \multicolumn{2}{>{\columncolor{gray}}l}{6-2} % multicolumn内でも使える
\end{tabular}
\end{document}
色指定の部分が[<model>]{<color>}に変更できるのは,他の\colorとかと同じです.

カラーシリーズ

\rowcolorsでは交互に色を変更することしかできませんでした.が,色の指定にシリーズを使うこともできます.

% 赤から0.2ずつ青に近づいていくカラーシリーズ
\definecolorseries{mycolor}{rgb}{step}{red}{-0.2,0,0.2}
\resetcolorseries[5]{mycolor} % 初期化,全部で五つからなるからシリーズができる
\rowcolors{1}{mycolor!!+}{mycolor!!+}
\begin{tabular}{c}
1 \\ 2 \\ 3 \\ 4 \\ 5
\end{tabular}
!!+は(色を混ぜる時の!とは違って)カラーシリーズを一つ先に進めることを意味します.!!++とすると二つ進みます.mycolor!![2]とすると2番目の色にアクセスできます.

こんな定義も可能です.

% 赤から青に向かっていくカラーシリーズ
\definecolorseries{mycolor}{rgb}{last}{red}{blue}
% red始点とし,終点がそれに-1,0,1したものになるカラーシリーズ
\definecolorseries{mycolor}{rgb}{grad}{red}{-1,0,1}

というわけで

クリスマスっぽいでしょうか?

\documentclass[dvipdfmx]{jsarticle}
\usepackage[table]{xcolor}
\usepackage{array}
\begin{document}
\rowcolors{1}{red}{green}
\begin{tabular}{>{\centering\arraybackslash}p{\textwidth}}
メ\\ リ\\ ー\\ ク\\ リ\\ ス\\ マ\\ ス
\end{tabular}
*1
colorパッケージというのがあった気がしますが,たぶん気のせいです.
*2
カラーモデルは一番最初の色のものが使われます.
*3
カラーモデルというのは,だいたい「色の指定方法」です.いくつかWikipediaへのリンクをはっておきますので,確認してみてください.[RGB] [CMYK] [HSB].
*4
colortblパッケージは(表面上は)なかったことになりました.

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です