调色方案在LaTeX中的应用
【注】笔记来自《LaTeX入门》——刘海洋。
1. 简介
原始的 TeX 引擎不支持彩色,有关彩色的功能都是由输出 PS、PDF 格式的 TeX 引擎或驱动提供的,有关命令是在绘图相关的扩展宏包中定义的。基本的彩色支持工具是 color
宏包,它是 LaTeX 的基本组件,graphics
工具包的一部分。
2. 基础
2.1 预定义颜色
在标准的 color
宏包中只有几种原色是预定义的,分别是:
- 黑白颜色:
black
(黑)、white
(白) - 色光三原色:
red
(红)、green
(绿)、blue
(蓝) - 印刷三原色:
cyan
(青)、magenta
(品红)、yellow
(黄)
这三类原色分别使用三种不同的色彩模型:gray(灰度)、rgb(红绿蓝)和 cmyk(青品红黄黑)。在使用颜色时,除了可以使用预定义的颜色外,还可以给颜色命令指定模型,然后使用色彩模型下的几个分量 [0,1][0,1][0,1] 之间的数值来表示具体颜色。
% 命令解释见下文
textcolor[gray]{0.5}{50% 灰色}
color[rgb]{0.6,0.6,0} 暗黄色
还有一种由输出驱动直接支持的 named
名称模型,比如在 Dvips 驱动下,可以给用 usenames
宏包选项直接调用下图中的各种色彩名,并加以色彩强度。
名称 |
颜色 |
数值 |
名称 |
颜色 |
数值 |
---|---|---|---|---|---|
Apricot |
#FBB982 |
Aquamarine |
#00B5BE |
||
Bittersweet |
#C04F17 |
Black |
#221E1F |
||
Blue |
#2D2F92 |
BlueGreen |
#00B3B8 |
||
BlueViolet |
#473992 |
BrickRed |
#B6321C |
||
Brown |
#792500 |
BurntOrange |
#F7921D |
||
CadetBlue |
#74729A |
CarnationPink |
#F282B4 |
||
Cerulean |
#00A2E3 |
CornflowerBlue |
#41B0E4 |
||
Cyan |
#00AEEF |
Dandelion |
#FDBC42 |
||
DarkOrchid |
#A4538A |
Emerald |
#00A99D |
||
ForestGreen |
#009B55 |
Fuchsia |
#8C368C |
||
Goldenrod |
#FFDF42 |
Gray |
#949698 |
||
Green |
#00A64F |
GreenYellow |
#DFE674 |
||
JungleGreen |
#00A99A |
Lavender |
#F49EC4 |
||
LimeGreen |
#8DC73E |
Magenta |
#EC008C |
||
Mahogany |
#A9341F |
Maroon |
#AF3235 |
||
Melon |
#F89E7B |
MidnightBlue |
#006795 |
||
Mulberry |
#A93C93 |
NavyBlue |
#006EB8 |
||
OliveGreen |
#3C8031 |
Orange |
#F58137 |
||
OrangeRed |
#ED135A |
Orchid |
#AF72B0 |
||
Peach |
#F7965A |
Periwinkle |
#7977B8 |
||
PineGreen |
#008B72 |
Plum |
#92268F |
||
ProcessBlue |
#00B0F0 |
Purple |
#99479B |
||
RawSienna |
#974006 |
Red |
#ED1B23 |
||
RedOrange |
#F26035 |
RedViolet |
#A1246B |
||
Rhodamine |
#EF559F |
RoyalBlue |
#0071BC |
||
RoyalPurple |
#613F99 |
RubineRed |
#ED017D |
||
Salmon |
#F69289 |
SeaGreen |
#3FBC9D |
||
Sepia |
#671800 |
SkyBlue |
#46C5DD |
||
SpringGreen |
#C6DC67 |
Tan |
#DA9D76 |
||
TealBlue |
#00AEB3 |
Thistle |
#D883B7 |
||
Turquoise |
#00B4CE |
Violet |
#58429B |
||
VioletRed |
#EF58A0 |
White |
#FFFFFF |
||
WildStrawberry |
#EE2967 |
Yellow |
#FFF200 |
||
YellowGreen |
#98CC70 |
YellowOrange |
#FAA21A |
比如可以选定 60%60%60% 的淡紫色:
% 导言区
uspackage[usenames]{color}
% ……
% 使用 latex + dvips 编译
color[named]{Purple,0.6}
此外,还可以使用 dvipsnames
选项来获得更多的色彩名,而不必考虑使用的输出驱动。dvipsnames
选项调入的色彩名默认以 cmyk 色彩模型给出。
% 导言区
usepackage[dvipsnames]{color}
% ……
textcolor{Purple}{紫色文字}
类似的色彩名称也可以用户自己定义,其语法格式如下:
definecolor{<色彩名>}{<模型>}{<分量值>}
% 比如定义紫色
definecolor{Purple}{cmyk}{0.45,0.86,0,0}
2.2 文字
在 color
宏包中,使用彩色的基本命令是 color
和 textcolor
:
color{<颜色>}
textcolor{<颜色>}{<文字>}
其中,color
是生命式命令,它使(同一分组内)后面的内容都使用指定的颜色输出,而 textcolor
则将参数 <文字>
以指定的颜色输出。
2.3 背景和线框
color
宏包还提供页面背景色以及彩色盒子的命令,其语法格式如下:
pagecolor{<页面颜色>}
colorbox{<盒子颜色>}{<文字>}
fcolorbox{<线框颜色>}{<盒子颜色>}{<文字>}
和 fbox
类似,盒子外框的间距与线框粗细由长度变量 fboxsep
和 fboxrule
控制。
3. 扩展
3.1 xcolor
宏包
xcolor
宏包支持更多的色彩模型,诸如 rgb、cmy、cmyk、hsb、gray 等。使用这些模型可以更方便地定义各色色彩,而且将这些色彩模型作为宏包选项,则可以将整个文档的所有色彩都转换到指定的模型去,比如制作印刷稿时:
% 将所有色彩转换为 cmyk 模型
usepackage[cmyk]{xcolor}
xcolor
宏包比 color
宏包支持更多的基本色彩,下表中的颜色在调用 xcolor
宏包后即可任意使用:
名称 |
颜色 |
---|---|
black |
colorbox{black}{} |
blue |
colorbox{blue}{} |
brown |
colorbox{brown}{} |
cyan |
colorbox{cyan}{} |
darkgray |
colorbox{darkgray}{} |
gray |
colorbox{gray}{} |
green |
colorbox{green}{} |
lightgray |
colorbox{lightgray}{} |
lime |
colorbox{lime}{} |
magenta |
colorbox{magenta}{} |
olive |
colorbox{olive}{} |
orange |
colorbox{orange}{} |
pink |
colorbox{pink}{} |
purple |
colorbox{purple}{} |
red |
colorbox{red}{} |
teal |
colorbox{teal}{} |
violet |
colorbox{violet}{} |
white |
colorbox{white}{} |
yellow |
colorbox{yellow}{} |
同时除了可以使用 dvipsnames
选项可以访问 PostScript 预定义的色彩名称(见「2.1」节表格)外,还可以使用 svgnames
和 x11names
访问 svg 格式或者是 unix x11 库中预定义的大量色彩名称。尤其有用的是,xcolor
还支持颜色表达式的记法,常用的有:
- 半色调:
<颜色>!<百分数>
- 混合色:
<颜色>!<百分数>!<颜色>
- 互补色:
-<颜色>
这样可以方便地表示出 50%50%50% 的紫色或者是更复杂的将不同颜料按比例混合的中间色调。
textcolor{purple!70}{淡紫色}
{color{blue!60!black} 60% 蓝与 40% 黑混合的深蓝色}
colorbox{-red}{青色与红色互补}
xcolor
宏包也提供了许多新的命令来支持更丰富的命令,比如 colorlet
可以使用色彩表达式来定义新色彩名:
colorlet{darkred}{red!50!black}
textcolor{darkred}{定义暗红色}
更多相关的命令可以参见官方手册。
texdoc xcolor
3.2 transparent
宏包
color
和 xcolor
宏包都不提供透明颜色的支持,使用 pdfTeX 引擎时,可以使用 transparent
宏包实现颜色透明度的支持。它提供了 transparent
与 texttransparent
命令,用法与 color
和 textcolor
类似。transparent
宏包不支持 pdfTeX 以外的其他图形驱动,不过 LaTeX 中更为复杂的绘图语言 PSTricks 和 TikZ 都支持透明色,如果需要可以调用它们实现。
推荐阅读
-
手绘 | 深入分析机器学习在 8 个风控场景中的应用
-
硬件安全模块(HSM)、硬件安全引擎(HSE)和安全硬件扩展(SHE)之间的区别 - HSE 在汽车中的主要应用:
-
载波通信在电网智能中的应用
-
ZH-HPLC/RS485 传输模块在光伏逆变器发电数据采集器中的应用 + 宽带电力线载波 HPLC + 站式智能汇聚终端在分布式光伏并网数据采集与编程中的应用特点
-
Go 语言在云计算中的应用与探索
-
在 Mac 主机上的 Docker 容器中实现图形用户界面显示(运行图形用户界面应用程序)
-
文明之旅(一):解开文明的密码--遥感技术在考古学中的应用与探索
-
贪婪算法在 Python、JavaScript、Java、C++ 和 C# 中的多种实现及其在硬币变化、分数骑士、活动选择和使用哈夫曼编码的最小生成树问题中的应用实例
-
连体网络孪生神经网络及其在医疗场景中的应用
-
在 win 环境下使用 cv2.imshow 报告 Python 中的 OpenCV 错误解决方案-1.