欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

调色方案在LaTeX中的应用

最编程 2024-01-13 13:48:24
...

【注】笔记来自《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 宏包中,使用彩色的基本命令是 colortextcolor

color{<颜色>}
textcolor{<颜色>}{<文字>}

其中,color 是生命式命令,它使(同一分组内)后面的内容都使用指定的颜色输出,而 textcolor 则将参数 <文字> 以指定的颜色输出。

2.3 背景和线框

color 宏包还提供页面背景色以及彩色盒子的命令,其语法格式如下:

pagecolor{<页面颜色>}
colorbox{<盒子颜色>}{<文字>}
fcolorbox{<线框颜色>}{<盒子颜色>}{<文字>}

fbox 类似,盒子外框的间距与线框粗细由长度变量 fboxsepfboxrule 控制。

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」节表格)外,还可以使用 svgnamesx11names 访问 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 宏包

colorxcolor 宏包都不提供透明颜色的支持,使用 pdfTeX 引擎时,可以使用 transparent 宏包实现颜色透明度的支持。它提供了 transparenttexttransparent 命令,用法与 colortextcolor 类似。transparent 宏包不支持 pdfTeX 以外的其他图形驱动,不过 LaTeX 中更为复杂的绘图语言 PSTricks 和 TikZ 都支持透明色,如果需要可以调用它们实现。