> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/latex/zh-cn/ge-shi-hua/13-using-colors-in-latex.md).

# 在 LaTeX 中使用颜色

## 引言

本文介绍如何通过以下宏包在您的 LaTeX 文档中使用颜色： [`颜色`](https://ctan.org/pkg/color?lang=en) 或 [`xcolor`](https://ctan.org/pkg/xcolor?lang=en) 这些宏包。请注意， `颜色` 该宏包的文档包含在 [LaTeX 标准图形宏包集](http://mirrors.ctan.org/macros/latex/required/graphics/grfguide.pdf).

这两个宏包都提供了一组通用的颜色操作命令，但 `xcolor` 它更灵活，并支持更多颜色模型，因此推荐使用。

我们先从下面的示例开始：

```latex
\documentclass{article}
\usepackage{xcolor}
\begin{document}
此示例展示了使用 \texttt{xcolor} 宏包的一些情况
以更改 \LaTeX 中元素的颜色。

\begin{itemize}
\color{blue}
\item First item
\item Second item
\end{itemize}

\noindent
{\color{red} \rule{\linewidth}{0.5mm}}
\end{document}
```

[打开此 `xcolor` Overleaf 中的示例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=A+basic+xcolor+package+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bxcolor%7D%0A%5Cbegin%7Bdocument%7D%0AThis+example+shows+some+instances+of+using+the+%5Ctexttt%7Bxcolor%7D+package+%0Ato+change+the+color+of+elements+in+%5CLaTeX.%0A%0A%5Cbegin%7Bitemize%7D%0A%5Ccolor%7Bblue%7D%0A%5Citem+First+item%0A%5Citem+Second+item%0A%5Cend%7Bitemize%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7Bred%7D+%5Crule%7B%5Clinewidth%7D%7B0.5mm%7D%7D%0A%5Cend%7Bdocument%7D)

此示例生成如下输出：

![LaTeX 中 xcolor 宏包的使用示例](/files/c1e50a53d1bf12dbd03487e736ca9d6a3f9fbbdd)

在此示例中，宏包 `xcolor` 通过以下方式导入：

```latex
\usepackage{xcolor}
```

然后命令 `\color{blue}` 设置当前文本块的 `blue` 颜色。在本例中是为 `itemize` 环境中。

用于排版由……创建的水平线的代码 `\rule{\linewidth}{0.5mm}` 包含在一个由 { 和 } 界定的组中，以便将……的作用限制在该组内 `\color{red}` 仅在该组内生效。

## xcolor 宏包提供的命名颜色

如 [xcolor 宏包文档](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf)中所述，以下命名颜色始终可用，无需加载任何宏包选项：

![xcolor 宏包中的颜色列表](/files/835c9b5b7b989bcb2f49b403158d26bd77b8b688)

### 访问更多命名颜色

可以通过以下 `xcolor` 宏包选项访问更多命名颜色：

* `dvipsnames`：加载 68 种命名颜色（CMYK）
* `svgnames`：加载 151 种命名颜色（RGB）
* `x11names`：加载 317 种命名颜色（RGB）

例如，如果你写

```latex
\usepackage[dvipsnames]{xcolor}
```

则可以访问以下命名颜色：

![由 xcolor 宏包的 dvipsnames 选项加载的颜色](/files/b5a5000f58bbbd398b9649ccc9d4da42720067ab)

请参阅 [xcolor 宏包文档](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf) ，以查看由 `svgnames` 和 `x11names` 选项提供的颜色表格列表。

### 使用示例

下面的示例使用了通过 `dvipsnames` 选项。

```latex
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\begin{document}
此示例展示了如何使用 \texttt{xcolor} 宏包
来更改 \LaTeX{} 页面元素的颜色。

\begin{itemize}
\color{ForestGreen}
\item First item
\item Second item
\end{itemize}

\noindent
{\color{RubineRed} \rule{\linewidth}{0.5mm}}

文本的背景色也可以\textcolor{red}{轻松}设置。例如
，你可以使用 \colorbox{BurntOrange}{橙色背景}，然后继续输入。
\end{document}
```

[打开此 `**xcolor**` Overleaf 中的示例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+xcolor+package+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D%0A%5Cbegin%7Bdocument%7D%0AThis+example+shows+how+to+use+the+%5Ctexttt%7Bxcolor%7D+package+%0Ato+change+the+color+of+%5CLaTeX%7B%7D+page+elements.%0A%0A%5Cbegin%7Bitemize%7D%0A%5Ccolor%7BForestGreen%7D%0A%5Citem+First+item%0A%5Citem+Second+item%0A%5Cend%7Bitemize%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7BRubineRed%7D+%5Crule%7B%5Clinewidth%7D%7B0.5mm%7D%7D%0A%0AThe+background+color+of+text+can+also+be+%5Ctextcolor%7Bred%7D%7Beasily%7D+set.+For+%0Ainstance%2C+you+can+change+use+an+%5Ccolorbox%7BBurntOrange%7D%7Borange+background%7D+and+then+continue+typing.%0A%5Cend%7Bdocument%7D)

此示例生成如下输出：

![xcolor 宏包演示](/files/6d7fe5b64a684861cc27fb31df5d0cb4103042d8)

示例中还使用了两个新命令：

* `\textcolor{red}{easily}`：更改行内文本的颜色。此命令接受两个参数：要使用的颜色以及要更改颜色的文本。在示例中，单词 `轻松` 以……的颜色显示 `red`.
* `\colorbox{BurntOrange}{orange background}`：更改作为第二个参数传入的文本的背景颜色。在上面的示例中，词语 `橙色背景` 排版在以下背景色上： `BurntOrange`.

## 在 color 宏包中加载并使用命名颜色

你也可以使用 `颜色` 宏包，并通过其 `usenames` 和 `dvipsnames` 宏包选项访问更多命名颜色：

```latex
\usepackage[usenames,dvipsnames]{color}
```

下面的代码使用了 `颜色` 宏包，以应用前一个 `xcolor` 宏包示例中使用的相同命名颜色。

```latex
\documentclass{article}
\usepackage[usenames,dvipsnames]{color} %using the color package, not xcolor
\begin{document}
此示例展示了如何使用 \texttt{\bfseries color} 宏包
来更改 \LaTeX{} 页面元素的颜色。

\begin{itemize}
\color{ForestGreen}
\item First item
\item Second item
\end{itemize}

\noindent
{\color{RubineRed} \rule{\linewidth}{0.5mm}}

文本的背景色也可以\textcolor{red}{轻松}设置。例如
，你可以使用 \colorbox{BurntOrange}{橙色背景}，然后继续输入。
\end{document}
```

[打开此 `**color**` Overleaf 中的示例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+color+package+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Busenames%2Cdvipsnames%5D%7Bcolor%7D+%25using+the+color+package%2C+not+xcolor%0A%5Cbegin%7Bdocument%7D%0AThis+example+shows+how+to+use+the+%5Ctexttt%7B%5Cbfseries+color%7D+package+%0Ato+change+the+color+of+%5CLaTeX%7B%7D+page+elements.%0A%0A%5Cbegin%7Bitemize%7D%0A%5Ccolor%7BForestGreen%7D%0A%5Citem+First+item%0A%5Citem+Second+item%0A%5Cend%7Bitemize%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7BRubineRed%7D+%5Crule%7B%5Clinewidth%7D%7B0.5mm%7D%7D%0A%0AThe+background+color+of+text+can+also+be+%5Ctextcolor%7Bred%7D%7Beasily%7D+set.+For+%0Ainstance%2C+you+can+change+use+an+%5Ccolorbox%7BBurntOrange%7D%7Borange+background%7D+and+then+continue+typing.%0A%5Cend%7Bdocument%7D)

此示例生成的输出与前一个 `xcolor` 版本相同：

![color 宏包演示](/files/8c2bd6aaa7b4286a1479564200ae025b0e43b7cd)

## 驱动程序与颜色

在排版文本或数学公式时使用颜色并不是 TeX 原始设计的一部分；相反，颜色的使用/应用被交由外部“驱动程序”处理，它们将 TeX 的原始输出文件格式（DVI）转换为 PostScript 或 PDF。为了让颜色生效，必须使用一个名为 `\special` 的内置 TeX 命令把驱动程序特定的指令“注入”到 TeX 的输出中。该命令的作用只是让代码/数据穿过排版过程并嵌入到输出文件中。当所选驱动程序（软件）处理排版结果时，它会检测这些嵌入的代码/数据并据此执行，以实现用户想要的效果——例如使用颜色。

时代已经改变，如今 PDF 已经是 TeX 引擎使用的最常见输出格式，早已取代了旧式 DVI 驱动程序和 PostScript 的生成。用户在排版 LaTeX 文档时也有了更多 TeX 引擎可选，尤其是 pdfTeX、XeTeX 或 LuaTeX/LuaHBTeX，因此仍然需要考虑这些 TeX 引擎之间的差异——确保使用正确的机制将颜色数据（PDF 指令）插入到 PDF 文件中。为了支持并兼容旧式 DVI 输出格式以及更广泛的 TeX 引擎和工作流环境，如果需要，你可以配置 `颜色` 或 `xcolor` 宏包使用特定的“驱动程序”，这样 LaTeX 就会采用适当的方法生成颜色数据。

### color 与 xcolor 的驱动程序

该 `颜色` 宏包开箱即用地支持以下驱动程序选项：

* `dvipdfmx`, `dvipdfm`, `dvisvgm`, `luatex`, `pdftex` 和 `xetex`

还有其他选项，如 [`颜色` 包文档](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/required/graphics/grfguide.pdf).

该 `xcolor` 宏包提供以下驱动程序选项：

* `dvipdfm`, `xdvi`, `dvipdf`, `dvipdfm`, `dvipdfmx`, `luatex`, `pdftex`, `dvipsone`, `dviwindo`, `emtex`, `dviwin`, `oztex`, `textures`, `pctexps`, `pctexwin`, `pctexhp`, `pctex32`, `truetex`, `tcidvi`, `vtex` 和 `xetex`.

### 自动检测颜色驱动程序

在排版文档时，LaTeX 会读取一个名为 `color.cfg` 的配置文件，其中包含可用于判断你是否正在运行 pdfTeX、XeTeX 或 LuaTeX 的代码，并自动加载相应的驱动程序（`.def` 文件），因此你无需 *需要* 为这些引擎指定驱动程序宏包选项。

### 使用 dvisvgm 驱动程序创建 SVG 文件的更高级示例

下面的示例使用 `颜色` 宏包，并使用选项加载命名颜色和 `dvisvgm` 驱动程序，以 SVG 代码输出颜色定义/数据：

```latex
\usepackage[dvisvgm, usenames, dvipsnames]{color}
```

具体来说，Overleaf 排版生成的输出文件会通过一个名为 [`dvisvgm`](https://dvisvgm.de/)的程序转换为 SVG。该程序是 TeX Live 的一部分，并可在我们的服务器上使用。要运行 `dvisvgm`，在页面排版完成后，我们使用一个 [`latexmkrc` 文件](/latex/zh-cn/shen-du-wen-zhang/28-how-to-use-latexmkrc-with-overleaf.md) 当你在 Overleaf 中打开下面的代码时会创建该文件：

```latex
\documentclass{article}
\usepackage[dvisvgm, usenames, dvipsnames]{color}
\title{Creating SVG graphics}
\author{Overleaf}
\begin{document}
\maketitle
你好，{\color{Apricot}在 Apricot 中}，现在是 {\color{DarkOrchid}DarkOrchid}，但如果我们改用 {\color{JungleGreen}JungleGreen}，也许会更好看——或者不一定？
\end{document}
```

[打开此示例以创建 SVG 文件](https://www.overleaf.com/docs?engine=latex_dvipdf\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bdvisvgm%2C+usenames%2C+dvipsnames%5D%7Bcolor%7D%0A%5Ctitle%7BCreating+SVG+graphics%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cmaketitle%0AHello%2C+%7B%5Ccolor%7BApricot%7Din+Apricot%7D+and+now+in+%7B%5Ccolor%7BDarkOrchid%7D+DarkOrchid%7D+but+perhaps+it+might+look+nicer+if+we+use+%7B%5Ccolor%7BJungleGreen%7DJungleGreen%7D---or+may+not%3F%0A%5Cend%7Bdocument%7D\&snip_name\[]=latexmkrc\&snip\[]=END+%7B%0Asystem%28%22dvisvgm+-n+-o+mygraphic.svg+.%2Foutput.dvi%22%29%0A%7D\&main_document=main.tex)

一旦 Overleaf 完成编译，你就可以访问名为 `mygraphic.svg`的 SVG 图形，方法是选择 `日志和输出` 并选择 `其他日志和文件` 下拉列表：

![在 Overleaf 上访问生成的文件](/files/95ab0d17a3981802b3eb8a24d407451ac7d87c38)

## 创建你自己的颜色

可以定义你自己的颜色，颜色的定义方式取决于所选颜色模型。下面的示例使用了 4 种颜色模型。

```latex
\documentclass{article}
\usepackage[dvipsnames]{xcolor}

\definecolor{mypink1}{rgb}{0.858, 0.188, 0.478}
\definecolor{mypink2}{RGB}{219, 48, 122}
\definecolor{mypink3}{cmyk}{0, 0.7808, 0.4429, 0.1412}
\definecolor{mygray}{gray}{0.6}

\begin{document}
使用不同颜色模型定义的用户自定义颜色：

\begin{enumerate}
\item \textcolor{mypink1}{Pink with rgb}
\item \textcolor{mypink2}{Pink with RGB}
\item \textcolor{mypink3}{Pink with cmyk}
\item \textcolor{mygray}{Gray with gray}
\end{enumerate}
\end{document}
```

[在 Overleaf 中打开此示例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+user-defined+colours\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D%0A%0A%5Cdefinecolor%7Bmypink1%7D%7Brgb%7D%7B0.858%2C+0.188%2C+0.478%7D%0A%5Cdefinecolor%7Bmypink2%7D%7BRGB%7D%7B219%2C+48%2C+122%7D%0A%5Cdefinecolor%7Bmypink3%7D%7Bcmyk%7D%7B0%2C+0.7808%2C+0.4429%2C+0.1412%7D%0A%5Cdefinecolor%7Bmygray%7D%7Bgray%7D%7B0.6%7D%0A%0A%5Cbegin%7Bdocument%7D%0AUser-defined+colors+with+different+color+models%3A%0A%0A%5Cbegin%7Benumerate%7D%0A%5Citem+%5Ctextcolor%7Bmypink1%7D%7BPink+with+rgb%7D%0A%5Citem+%5Ctextcolor%7Bmypink2%7D%7BPink+with+RGB%7D%0A%5Citem+%5Ctextcolor%7Bmypink3%7D%7BPink+with+cmyk%7D%0A%5Citem+%5Ctextcolor%7Bmygray%7D%7BGray+with+gray%7D%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

此示例生成如下输出：

![创建用户自定义颜色的 LaTeX 示例](/files/bc0a9ea5ceba094ac8523142dca4252b9b465b51)

命令 `\definecolor` 接受三个参数：新颜色的名称、模型和颜色定义。大致来说，每个数字表示你向构成最终颜色的混合物中添加了多少该种颜色。

* `**rgb**`：红、绿、蓝。三个用逗号分隔、介于 0 和 1 之间的值定义该颜色的各个分量。
* `**RGB**`：与 `rgb`相同，但这些数字是 0 到 255 之间的整数。
* `**cmyk**`：青色、品红、黄色和黑色。由四个介于 0 和 1 之间的数字组成的逗号分隔列表，根据 [减色 CMYK 模型](https://en.wikipedia.org/wiki/CMYK_color_model) 来确定颜色，该模型被商业印刷机使用。
* `**gray**`：灰度。一个介于 0 和 1 之间的单个数字。

在示例中， `mypink1`, `mypink2` 和 `mypink3` 定义的是同一种颜色，但使用了不同的模型。实际上你可以看出，由 `cmyk` 定义的颜色略有不同。

无论使用哪种模型定义的颜色，之后都可以在文档中使用，不仅可用于设置文本颜色，还可用于任何将颜色作为参数的其他元素，例如 [表格](/latex/zh-cn/tu-xing-he-biao-ge/01-tables.md#colouring-a-table-28cells2c-rows2c-columns-and-lines29) （你必须添加 `table` 选项到 `xcolor`), [使用 TikZ 创建的图形元素](/latex/zh-cn/tu-xing-he-biao-ge/05-tikz-package.md), [图表](/latex/zh-cn/te-ding-ling-yu/08-pgfplots-package.md), [多栏文档中的竖线](/latex/zh-cn/ge-shi-hua/09-multiple-columns.md#inserting-vertical-rulers) 和 [代码列表](/latex/zh-cn/ge-shi-hua/11-code-listing.md#code-styles-and-colours).

### 仅 xcolor 支持的颜色模型

该 `xcolor` 宏包提供了额外命令，支持更多颜色模型和友好的颜色混合，如下例所示：

```latex
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\colorlet{LightRubineRed}{RubineRed!70}
\colorlet{Mycolor1}{green!10!orange}
\definecolor{Mycolor2}{HTML}{00F9DE}
\begin{document}
本文档展示了多个示例，说明如何使用 \texttt{xcolor} 宏包
来更改 \LaTeX{} 页面元素的颜色。

\begin{itemize}
\item \textcolor{Mycolor1}{First item}
\item \textcolor{Mycolor2}{Second item}
\end{itemize}

\noindent
{\color{LightRubineRed} \rule{\linewidth}{1mm}}

\noindent
{\color{RubineRed} \rule{\linewidth}{1mm}}
\end{document}
```

[在 Overleaf 中打开此示例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Custom+colours+with+xcolor\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D%0A%5Ccolorlet%7BLightRubineRed%7D%7BRubineRed%2170%7D%0A%5Ccolorlet%7BMycolor1%7D%7Bgreen%2110%21orange%7D%0A%5Cdefinecolor%7BMycolor2%7D%7BHTML%7D%7B00F9DE%7D%0A%5Cbegin%7Bdocument%7D%0AThis+document+presents+several+examples+showing+how+to+use+the+%5Ctexttt%7Bxcolor%7D+package+%0Ato+change+the+color+of+%5CLaTeX%7B%7D+page+elements.%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Ctextcolor%7BMycolor1%7D%7BFirst+item%7D%0A%5Citem+%5Ctextcolor%7BMycolor2%7D%7BSecond+item%7D%0A%5Cend%7Bitemize%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7BLightRubineRed%7D+%5Crule%7B%5Clinewidth%7D%7B1mm%7D%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7BRubineRed%7D+%5Crule%7B%5Clinewidth%7D%7B1mm%7D%7D%0A%5Cend%7Bdocument%7D)

此示例生成如下输出：

![由 xcolor 宏包生成的自定义颜色](/files/37086a639cc655ceaeaf86823bb8c6f1f31a9344)

此示例定义了三种新颜色，每种定义方式都不同。

* `\colorlet{LightRubineRed}{RubineRed!70}`：一种名为 `LightRubineRed` 的新颜色被创建，该颜色具有原始 `RubineRed` 颜色 70% 的强度。你可以把它看作 70% 的 RubineRed 和 30% 的白色混合而成。像这样定义颜色可以让你从主色派生出不同的色调——这是企业品牌设计中的常见做法。在示例中，你可以看到原始的 `RubineRed` 以及新的 `LightRubineRed` 被用于连续两条水平线中。
* `\colorlet{Mycolor1}{green!10!orange}`：一种名为 `Mycolor1` 的颜色由 10% 绿色和 90% 橙色创建。
* `\definecolor{Mycolor2}{HTML}{00F9DE}`：颜色 `Mycolor2` 使用 `HTML` 模型创建。该模型中的颜色必须使用 6 位十六进制数字创建，字符 A、B、C、D、E 和 F 必须大写。

仅 `xcolor` 支持的颜色模型有：

* `cmy`：青色、品红、黄色
* `hsb`：色相、饱和度、亮度
* `HTML`：RRGGBB
* `Gray`：灰度，一个介于 1 和 15 之间的数字。
* `wave`：波长，一个介于 363 和 814 之间的数字。该数字表示光的波长，单位为纳米（nm）

## 设置页面背景颜色

整个页面的背景颜色可以通过以下命令轻松更改： `\pagecolor`。下面的代码对此进行了演示，使用的是前面示例的文本：

```latex
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\colorlet{LightRubineRed}{RubineRed!70}
\colorlet{Mycolor1}{green!10!orange}
\definecolor{Mycolor2}{HTML}{00F9DE}
\begin{document}
\pagecolor{black}
\color{white}% set the default colour to white
本文档展示了多个示例，说明如何使用 \texttt{xcolor} 宏包
来更改 \LaTeX{} 页面元素的颜色。

\begin{itemize}
\item \textcolor{Mycolor1}{First item}
\item \textcolor{Mycolor2}{Second item}
\end{itemize}

\noindent
{\color{LightRubineRed} \rule{\linewidth}{1mm}}

\noindent
{\color{RubineRed} \rule{\linewidth}{1mm}}
\end{document}
```

[在 Overleaf 中打开此示例](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Custom+colors+with+xcolor\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D%0A%5Ccolorlet%7BLightRubineRed%7D%7BRubineRed%2170%7D%0A%5Ccolorlet%7BMycolor1%7D%7Bgreen%2110%21orange%7D%0A%5Cdefinecolor%7BMycolor2%7D%7BHTML%7D%7B00F9DE%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cpagecolor%7Bblack%7D%0A%5Ccolor%7Bwhite%7D%25+set+the+default+colour+to+white%0AThis+document+presents+several+examples+showing+how+to+use+the+%5Ctexttt%7Bxcolor%7D+package+%0Ato+change+the+color+of+%5CLaTeX%7B%7D+page+elements.%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Ctextcolor%7BMycolor1%7D%7BFirst+item%7D%0A%5Citem+%5Ctextcolor%7BMycolor2%7D%7BSecond+item%7D%0A%5Cend%7Bitemize%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7BLightRubineRed%7D+%5Crule%7B%5Clinewidth%7D%7B1mm%7D%7D%0A%0A%5Cnoindent%0A%7B%5Ccolor%7BRubineRed%7D+%5Crule%7B%5Clinewidth%7D%7B1mm%7D%7D%0A%5Cend%7Bdocument%7D)

此示例生成如下输出：

![在 LaTeX 中设置页面背景颜色](/files/adbff33f6c2b952edd9c67755fd6cbff4fe5cf9e)

命令 `\pagecolor{black}` 将页面颜色设为 `黑色`。这是一个开关命令，这意味着它会在整个文档中生效，除非使用另一个开关命令将其恢复。 `\nopagecolor` 会将背景恢复为正常。

## LuaLaTeX 的其他颜色宏包

除了标准的 `颜色` 和 `xcolor` 宏包之外，LuaLaTeX 还支持 [`luacolor`](https://ctan.org/pkg/luacolor?lang=en) 和 [`lua-ul`](https://ctan.org/pkg/lua-ul?lang=en) 宏包——两者都专为 LuaLaTeX 编写，且都与 pdfLaTeX 或 XeLaTeX 不兼容。

### luacolor 宏包

该 `luacolor` 宏包重新定义了标准 `颜色` 宏包命令的一些内部实现，使用了 LuaTeX 系列 TeX 引擎特有的技术。

虽然 `luacolor` 会自动整合 `颜色` 宏包，如果你想执行以下任一操作：

* 使用……的特定选项 `颜色` 宏包，例如 `\usepackage[usenames,dvipsnames]{color}`，或
* 使用 `xcolor` 宏包

你需要先加载 `颜色` 或 `xcolor` 宏包，然后再加载 `luacolor`。例如，你可以加载 `颜色` 宏包，使用：

```latex
\usepackage[usenames,dvipsnames]{color} % example color package options, see the documentation
\usepackage{luacolor} % loaded after the color package
```

或者加载 `xcolor` 宏包，使用：

```latex
\usepackage[dvipsnames]{xcolor} % example xcolor package option, see the documentation
\usepackage{luacolor} % loaded after the xcolor package
```

请参阅 [`颜色`](http://mirrors.ctan.org/macros/latex/required/graphics/grfguide.pdf) 和 [`xcolor`](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf) 的文档，以了解宏包选项的详细信息。

借助 LuaLaTeX 的能力， `luacolor` 可实现更高级的颜色应用；例如，为复杂文字脚本语言中的单个字形着色，或为变音符号着色。 `luacolor` 在对单个字符应用颜色时，也可避免字距调整问题——参见 tex.stackexchange 上的问题 [此处](https://tex.stackexchange.com/questions/622544/kerning-when-coloring-single-letters) 和 [此处](https://tex.stackexchange.com/questions/567220/kerning-with-xcolor) ，其中有相关示例。

### lua-ul 宏包

提到该宏包是因为它具有颜色高亮功能。它利用 LuaTeX 的高级能力提供下划线、删除线和高亮，且不会影响字距调整；带下划线的文本可以使用任意命令，断字可正常工作，并保留连字。

### 示例：luacolor

在这里，我们将演示如何使用 `luacolor` 来为印地语和阿拉伯语排版的文本以及拉丁字母脚本上使用的变音符号着色（基于 [此示例](https://tex.stackexchange.com/questions/698933/color-breaks-diacritics-stacking)）。下面的示例使用 [babel 宏包](/latex/zh-cn/yu-yan/02-multilingual-typesetting-on-overleaf-using-babel-and-fontspec.md) 来配置 LuaLaTeX，使其使用 Overleaf 上提供的字体排版印地语和阿拉伯语。

```latex
\documentclass{article}

% Prefer a small page width for the demo
\usepackage[paperwidth=15cm]{geometry}

% Use babel with Arabic, Hindi and English languages
% English is loaded last, making it the default language
\usepackage[hindi,english]{babel}
\babelprovide[import=ar]{arabic}
% Set Roman font for Arabic
\babelfont[arabic]{rm}{Scheherazade}

% Set Roman and sans serif fonts for English
\babelfont{rm}{Noto Serif}
\babelfont{sf}{Noto Sans}

% Set up Roman and san serif fonts for Hindi
\babelfont[hindi]{rm}[Language=Default]{Noto Serif Devanagari}
\babelfont[hindi]{sf}[Language=Default]{Noto Sans Devanagari}

% Because we want to use the "dvipsnames" option to
% access additional named colors, we must load xcolor
% before luacolor (see the luacolor package documentation)
\usepackage[dvipsnames]{xcolor}
\usepackage{luacolor}

% Create a convenience command to typeset Hindi
\newcommand\hinditext[1]{\foreignlanguage{hindi}{#1}}

% Create a convenience command to typeset Arabic
\newcommand\arabictext[1]{\foreignlanguage{arabic}{#1}}

\usepackage{hyperref}
\hypersetup{
colorlinks=true,
urlcolor=cyan
}
\begin{document}
% The Noto fonts benefit from a larger line spacing
\setlength{\baselineskip}{14bp}

\section{Colorizing Hindi text}
Google 将印地语单词 \textsf{\hinditext{किंकर्तव्यविमूढ़}} 翻译为
“困惑”。使用 \texttt{luacolor} 宏包，可以为印地语文本中的字形着色；例如 \hinditext{किंक\textcolor{purple}{र्तव्यव}\textcolor{green}{िमूढ़}}。你也可以为整个单词着色：\hinditext{\textcolor{blue}{किंकर्तव्यविमूढ़}}。

\section{Colorizing Arabic text}
% Create a custom environment to
% typeset colored Arabic text
\newenvironment{colorarabic}
{% Typeset Arabic using a larger font
\fontsize{30}{30}
% Set right-to-left paragraph and text directions
\pardir TRT\textdir TRT}
{}

这里有一些着色后的阿拉伯语文本：  \begin{colorarabic}
\textcolor{red}{\arabictext{هَذَا}} \arabictext{نَصٌّ عَرَب}\textcolor{green}{\arabictext{ِ}}\arabictext{ي}\textcolor{blue}{\arabictext{ٌّ}}
\end{colorarabic}
\section{Colorizing diacritics}
这个示例基于 \href{https://tex.stackexchange.com/questions/698933/color-breaks-diacritics-stacking}{来自 tex.stackexchange 的代码}。

\vspace{12pt}
\bgroup
\newcommand{\emptydiacritic}{\char"034F}
\fontsize{60}{60}\selectfont
á̀̐{\color{blue}a\emptydiacritic\color{green}́\color{red}̀\color{magenta}̐
\egroup
\end{document}
```

[在 Overleaf 中打开此 luacolor 示例。](/latex/zh-cn/ge-shi-hua/13-using-colors-in-latex.md)

此示例生成如下输出：

![使用 luacolor 宏包的示例输出](/files/020ebe73eb0e49a7dfbab37daccc5f2df3bfd851)

### 示例：lua-ul

此示例演示以下内容 `lua-ul` 宏包命令：

* `\highLight[*color*]{*text to highlight*}` 它会应用（可选的） `*color*` 更改为 `*text to highlight*`。请注意 **`L`** 在……的拼写中 `\high**L**ight` 命令！
* `\LuaULSetHighLightColor{*default color*}`：这会设置 `*default color*` 由 `\highLight` 命令，当可选的 `[*color*]` 未指定时。

注意： `luacolor` 在使用该命令时，也必须加载该宏包 `\highLight` 命令，由……提供 `lua-ul` 宏包。

```latex
\documentclass{article}
% Prefer a small page width for the demo
\usepackage[paperwidth=12cm]{geometry}

\usepackage[dvipsnames]{xcolor} % To access some named colors used with \highLight
\usepackage{luacolor} % Required to use the lua-ul \highLight command
\usepackage{lua-ul}

\usepackage{blindtext}
\begin{document}
% Use the Apricot color to highlight the text
\highLight[Apricot]{\blindtext}

% Use \LuaULSetHighLightColor to set default colors for
% the \highLight command
\begin{itemize}
    \item \LuaULSetHighLightColor{CornflowerBlue} \highLight{\blindtext[1]}.
    \item \LuaULSetHighLightColor{Goldenrod}\highLight{{\(y=f(x)\)}}
\end{itemize}
\end{document}
```

[打开此 `lua-ul` Overleaf 中的示例。](https://www.overleaf.com/docs?engine=lualatex\&snip_name=lua-ul+package+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Prefer+a+small+page+width+for+the+demo%0A%5Cusepackage%5Bpaperwidth%3D12cm%5D%7Bgeometry%7D%0A++%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D+%25+To+access+some+named+colors+used+with+%5ChighLight%0A%5Cusepackage%7Bluacolor%7D+%25+Required+to+use+the+lua-ul+%5ChighLight+command+%0A%5Cusepackage%7Blua-ul%7D+%0A++%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0A%25+Use+the+Apricot+color+to+highlight+the+text++%0A%5ChighLight%5BApricot%5D%7B%5Cblindtext%7D+%0A%0A%25+Use+%5CLuaULSetHighLightColor+to+set+default+colors+for+%0A%25+the+%5ChighLight+command%0A%5Cbegin%7Bitemize%7D%0A++++%5Citem+%5CLuaULSetHighLightColor%7BCornflowerBlue%7D+%5ChighLight%7B%5Cblindtext%5B1%5D%7D.%0A++++%5Citem+%5CLuaULSetHighLightColor%7BGoldenrod%7D%5ChighLight%7B%7B%5C%28y%3Df%28x%29%5C%29%7D%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

此示例生成如下输出：

![使用 lua-ul 宏包高亮文本](/files/2c1822875a85c8fecfb82b061fce0ad0414197dd)

## 进一步阅读

更多信息请参见：

* [该 **颜色** 包文档](http://mirrors.ctan.org/macros/latex/required/graphics/grfguide.pdf) （或者 [通过以下方式访问 `texdoc.org`](https://texdoc.org/serve/color/5))
* [该 **xcolor** 包文档](http://mirrors.ctan.org/macros/latex/contrib/xcolor/xcolor.pdf) （或者 [通过以下方式访问 `texdoc.org`](https://texdoc.org/serve/xcolor/0))
* [LaTeX 中的长度](/latex/zh-cn/ge-shi-hua/01-lengths-in-latex.md)
* [字体大小、字体族和样式](/latex/zh-cn/zi-ti/01-font-sizes-families-and-styles.md)
* [字体类型](/latex/zh-cn/zi-ti/02-font-typefaces.md)
* [使用 XeLaTeX 支持现代字体](/latex/zh-cn/zi-ti/03-xelatex.md)
* [表格](/latex/zh-cn/tu-xing-he-biao-ge/01-tables.md)
* [插入图片](/latex/zh-cn/geng-duo-zhu-ti/27-inserting-images.md)
* [Beamer](/latex/zh-cn/yan-shi-wen-gao/01-beamer.md)
* [Powerdot](/latex/zh-cn/yan-shi-wen-gao/02-powerdot.md)
* [海报](/latex/zh-cn/yan-shi-wen-gao/03-posters.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/latex/zh-cn/ge-shi-hua/13-using-colors-in-latex.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
