> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-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 第一项
\item 第二项
\end{itemize}

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

[在 Overleaf 中打开此 `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 第一项
\item 第二项
\end{itemize}

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

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

[在 Overleaf 中打开此 `**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}{轻松}`：更改行内文本的颜色。该命令接受两个参数：要使用的颜色，以及其颜色将被更改的文本。在示例中，单词 `轻松` 以 `red`.
* `\colorbox{BurntOrange}{橙色背景}`：更改作为第二个参数传入的文本的背景颜色。在上面的示例中，这些词 `橙色背景` 排版时的背景颜色为 `BurntOrange`.

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

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

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

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

```latex
\documentclass{article}
\usepackage[usenames,dvipsnames]{color} % 使用 color 宏包，而不是 xcolor
\begin{document}
这个示例展示如何使用 \texttt{\bfseries color} 宏包
来更改 \LaTeX{} 页面元素的颜色。

\begin{itemize}
\color{ForestGreen}
\item 第一项
\item 第二项
\end{itemize}

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

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

[在 Overleaf 中打开此 `**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 就会使用合适的方法生成颜色数据。

### 颜色与 xcolor 的驱动程序

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

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

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

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

* `dvips`, `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-ru-wen-zhang/28-how-to-use-latexmkrc-with-overleaf.md) ，该文件会在你将以下代码打开到 Overleaf 时创建：

```latex
\documentclass{article}
\usepackage[dvisvgm, usenames, dvipsnames]{color}
\title{创建 SVG 图形}
\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}{RGB 模型的粉色}
\item \textcolor{mypink2}{RGB 大写模型的粉色}
\item \textcolor{mypink3}{cmyk 模型的粉色}
\item \textcolor{mygray}{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-biao-he-biao-ge/01-tables.md#colouring-a-table-28cells2c-rows2c-columns-and-lines29) （你必须添加 `table` 选项到 `xcolor`), [使用 TikZ 创建的图形元素](/latex/zh-cn/tu-biao-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}{第一项}
\item \textcolor{Mycolor2}{第二项}
\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 仅支持的颜色模型有： `xcolor` 包括：

* `cmy`：青色、品红、黄色
* `hsb`：色相、饱和度、亮度
* `HTML`：RRGGBB
* `灰度`：灰度值，介于 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}% 将默认颜色设置为白色
本文展示了若干示例，说明如何使用 \texttt{xcolor} 宏包
来更改 \LaTeX{} 页面元素的颜色。

\begin{itemize}
\item \textcolor{Mycolor1}{第一项}
\item \textcolor{Mycolor2}{第二项}
\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}` 将页面颜色设为 `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} % 示例 color 宏包选项，参见文档
\usepackage{luacolor} % 在 color 宏包之后加载
```

或者使用以下方式加载 `xcolor` 宏包：

```latex
\usepackage[dvipsnames]{xcolor} % 示例 xcolor 宏包选项，参见文档
\usepackage{luacolor} % 在 xcolor 宏包之后加载
```

请查阅 [`颜色`](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}

% 演示时偏好较小的页面宽度
\usepackage[paperwidth=15cm]{geometry}

% 使用带有阿拉伯语、印地语和英语语言的 babel
% 最后加载英语，使其成为默认语言
\usepackage[hindi,english]{babel}
\babelprovide[import=ar]{arabic}
% 为阿拉伯语设置罗马字体
\babelfont[arabic]{rm}{Scheherazade}

% 为英语设置罗马体和无衬线字体
\babelfont{rm}{Noto Serif}
\babelfont{sf}{Noto Sans}

% 为印地语设置罗马体和无衬线字体
\babelfont[hindi]{rm}[Language=Default]{Noto Serif Devanagari}
\babelfont[hindi]{sf}[Language=Default]{Noto Sans Devanagari}

% 因为我们想使用到
% 的 "dvipsnames" 选项来
% 访问更多命名颜色，所以必须先加载 xcolor
\usepackage[dvipsnames]{xcolor}
\usepackage{luacolor}

% 创建一个方便的命令来排版印地语
\newcommand\hinditext[1]{\foreignlanguage{hindi}{#1}}

% 创建一个方便的命令来排版阿拉伯语
\newcommand\arabictext[1]{\foreignlanguage{arabic}{#1}}

\usepackage{hyperref}
\hypersetup{
colorlinks=true,
urlcolor=cyan
}
\begin{document}
% Noto 字体受益于更大的行距
\setlength{\baselineskip}{14bp}

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

\section{为阿拉伯语文本着色}
% 创建一个自定义环境来
% 排版有颜色的阿拉伯语文本
\newenvironment{colorarabic}
{% 使用更大的字体排版阿拉伯语
\fontsize{30}{30}
% 设置从右到左的段落和文本方向
\pardir TRT\textdir TRT}
{}

下面是一些着色的阿拉伯语文本：  \begin{colorarabic}
\textcolor{red}{\arabictext{هَذَا}} \arabictext{نَصٌّ عَرَب}\textcolor{green}{\arabictext{ِ}}\arabictext{ي}\textcolor{blue}{\arabictext{ٌّ}}
\end{colorarabic}
\section{为变音符号着色}
本示例基于 \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*}` 它应用（可选的） `*颜色*` 更改为 `*要高亮的文本*`。注意大小写 **`L`** 在拼写 `\high**L**ight` 命令！
* `\LuaULSetHighLightColor{*default color*}`：这会设置 `*默认颜色*` 由……使用 `\highLight` 命令，当可选的 `[*color*]` 未指定时。

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

```latex
\documentclass{article}
% 演示时偏好较小的页面宽度
\usepackage[paperwidth=12cm]{geometry}

\usepackage[dvipsnames]{xcolor} % 以访问与 \highLight 一起使用的一些命名颜色
\usepackage{luacolor} % 使用 lua-ul \highLight 命令所必需
\usepackage{lua-ul}

\usepackage{blindtext}
\begin{document}
% 使用 Apricot 颜色高亮文本
\highLight[Apricot]{\blindtext}

% 使用 \LuaULSetHighLightColor 为以下内容设置默认颜色
% \highLight 命令
\begin{itemize}
    \item \LuaULSetHighLightColor{CornflowerBlue} \highLight{\blindtext[1]}.
    \item \LuaULSetHighLightColor{Goldenrod}\highLight{{\(y=f(x)\)}}
\end{itemize}
\end{document}
```

[在 Overleaf 中打开此 `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-biao-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://overleaf-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.
