xcolor 패키지는 LaTeX에서 색을 다루는 표준 도구입니다. 오래된 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 도 함께 로드되어 표의 셀이나 행에 색을 칠할 수 있습니다(자세한 내용은 “색이 있는 표” 페이지 참조).
\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는 그 그룹이 끝날 때까지 효력이 이어지는 “스위치”라고 생각하면 됩니다.
これは \textcolor{red}{赤い} 文字です。
{\color{blue} ここから先は青。} ここは元の色に戻ります。배경을 칠하고 싶을 때는 \colorbox{색}{문자} 가 문자를 지정한 색의 채워진 상자 위에 올립니다. 테두리와 배경을 서로 다른 색으로 하고 싶다면 \fcolorbox{테두리색}{배경색}{문자} 를 사용합니다. 첫 번째 인수가 테두리, 두 번째 인수가 채우기 색입니다. 페이지 전체의 바탕색을 바꾸는 명령은 \pagecolor{색} 이고, 되돌릴 때는 \nopagecolor를 씁니다. 이 지점 이후의 모든 페이지에 적용되므로, 예를 들어 표지만 검게 하고 싶다면 놓는 위치에 주의해야 합니다.
\colorbox{yellow}{ハイライト}
\fcolorbox{red}{yellow}{赤枠・黄背景}
\pagecolor{black} % これ以降、ページ全体が黒地に이 명령들은 모두 단순한 색 이름 대신 색 표현식 이나 명시적인 모델 지정을 직접 받을 수 있습니다. 예를 들어 \textcolor{red!50!blue}{…}처럼 쓰거나, 대괄호로 모델을 붙여 \textcolor[rgb]{1,0,0}{…}처럼 쓸 수 있습니다(모델 지정은 다음 절에서 다룹니다).
나만의 색 정의하기
자신의 색에 이름을 붙이는 명령은 \definecolor{이름}{모델}{값} 입니다. 프리앰블에서 한 번 정의해 두면 이후에는 보통 색 이름처럼 \textcolor 등에 넘길 수 있습니다. 예를 들어 차분한 파란색을 myblue로 정의하려면 다음과 같이 씁니다.
\definecolor{myblue}{rgb}{0.2,0.4,0.8}
% 使う / use it:
\textcolor{myblue}{この文字は myblue}또 하나의 도구인 \colorlet{이름}{색} 은 기존 색(또는 색 표현식)에서 새 색 이름을 만듭니다. \definecolor가 모델과 숫자로 색을 만드는 반면, \colorlet은 이미 있는 색을 섞은 결과 에 이름을 붙입니다. 예를 들어 빨강을 흰색 쪽으로 절반 옅게 만든 색을 half라고 부르려면 \colorlet{half}{red!50}라고 씁니다. ! 혼색 표기법은 다음 절에서 자세히 다룹니다.
색 모델
\definecolor의 두 번째 인수가 색 모델 입니다. 즉 색을 숫자로 표현하는 방식입니다. xcolor는 인쇄용 cmyk부터 웹에서 익숙한 HTML 16진 표기까지 여러 모델을 지원하므로 용도에 맞게 고를 수 있습니다. 자주 쓰는 모델은 다음과 같습니다.
| 모델 | 값 | 예 |
|---|---|---|
rgb | 빨강, 초록, 파랑 각각 0–1 | {0.2,0.4,0.8} |
RGB | 빨강, 초록, 파랑 각각 0–255 정수 | {51,102,204} |
HTML | 6자리 16진수 RRGGBB | {FF8800} |
cmyk | 시안, 마젠타, 노랑, 검정 각각 0–1 | {0,0.5,1,0} |
gray | 값 하나(0 = 검정, 1 = 흰색) | {0.5} |
named | 기존 색 이름 참조(예: dvips 이름) | {Periwinkle} |
같은 주황색도 여러 방식으로 쓸 수 있으며, 달라지는 것은 표기뿐 결과는 같습니다. 아래 네 줄은 모두 거의 같은 색을 정의합니다. HTML은 여섯 자리 16진수를 받으므로 웹 색상 코드를 그대로 붙여 넣기 편하고, cmyk는 인쇄(4색 분해)에 사용합니다.
\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 안에서도 자유롭게 사용할 수 있습니다. 혼색을 한 곳에서 이름으로 정해 두면 문서 전체의 색조를 한 줄의 정의로 조정할 수 있다는 것이 이 설계의 핵심입니다.
\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는 RoyalBlue, Periwinkle, BurntOrange 등 68색을, svgnames는 DarkSlateGray, Tomato 등 CSS에서 익숙한 약 151개 이름을 제공합니다. 색 이름은 대소문자를 구별하므로 RoyalBlue를 royalblue로 쓰면 “undefined colour” 오류가 납니다. 각 색이 어떻게 보이는지는 xcolor 설명서의 색 견본이 가장 확실하며, texdoc xcolor로 열 수 있습니다.