原始的 LaTeX \LaTeX LATEX 不支持使用各种颜色。color 宏包或者 xcolor 宏包提供了对颜色的支持,给 PDF 输出生成颜色的特殊指令.
调用 color 或 xcolor 宏包后,我们就可以用如下命令切换颜色:
\color[⟨color-mode⟩]{⟨code⟩}
\color{⟨color-name⟩}
颜色的表达方式有两种,其一是使用色彩模型和色彩代码,代码用 0 ∼ 1 的数字代表成分的比例. color 宏包支持 rgb
、cmyk
和 gray
模型,xcolor 支持更多的模型如 hsb
等.
\large\sffamily
{\color[gray]{0.6}
60\% 灰色} \\
{\color[rgb]{0,1,1}
青色}
其二是直接使用名称代表颜色,前提是已经定义了颜色名称(没定义的话会报错):
\large\sffamily
{\color{red} 红色} \\
{\color{blue} 蓝色}
color 宏包仅定义了 8 种颜色名称,xcolor 补充了一些,总共有 19 种,见下表:
\large\sffamily
{\color{red!40} 40\% 红色}\\
{\color{blue}蓝色
\color{blue!50!black}蓝黑
\color{black}黑色}\\
{\color{-red}红色的互补色}
我们还可以通过命令自定义颜色名称,注意这里的 ⟨color-mode⟩
是必选参数:
\definecolor{⟨color-name⟩}{⟨color-mode⟩}{⟨code⟩}
原始的 \color
命令类似于字体命令 \bfseries
,它使之后排版的内容全部变成指定的颜色,所以直接使用时通常要加花括号分组。color / xcolor 宏包都定义了一些方便用户使用的带颜色元素.
输入带颜色的文本可以用类似 \textbf
的命令:
\textcolor[⟨color-mode⟩]{⟨code⟩}{⟨text⟩}
\textcolor{⟨color-name⟩}{⟨text⟩}
以下命令构造一个带背景色的盒子,⟨material⟩
为盒子中的内容:
\colorbox[⟨color-mode⟩]{⟨code⟩}{⟨material⟩}
\colorbox{⟨color-name⟩}{⟨material⟩}
以下命令构造一个带背景色和有色边框的盒子,⟨fcode⟩
或 ⟨fcolor-name⟩
用于设置边框颜色:
\fcolorbox[⟨color-mode⟩]{⟨fcode⟩}{⟨code⟩}{⟨material⟩}
\fcolorbox{⟨fcolor-name⟩}{⟨color-name⟩}{⟨material⟩}
例如:
\sffamily
文字用\textcolor{red}{红色}强调\\
\colorbox[gray]{0.95}{浅灰色背景} \\
\fcolorbox{blue}{yellow}{%
\textcolor{blue}{蓝色边框+文字,%
黄色背景}
}
PDF 文档格式是现今最流行的电子文档格式,而电子文档最实用的需求之一就是超链接功能. LaTeX \LaTeX LATEX 中实现这一功能的是 hyperref 宏包.
hyperref 宏包涉及的链接遍布 LaTeX \LaTeX LATEX 的每一个角落——目录、引用、脚注、索引、参考文献等等都被封装成超链接. 但这也使得它与其它宏包发生冲突的可能性大大增加,虽然宏包已经尽力解决各方面的兼容性,但仍不能面面俱到. 为减少可能的冲突,习惯上将 hyperref 宏包放在其它宏包之后调用.
hyperref 宏包提供了命令 \hypersetup
配置各种参数. 参数也可以作为宏包选项,在调用宏包时指定:
\hypersetup{⟨option1⟩,⟨option2⟩={value},…}
\usepackage[⟨option1⟩,⟨option2⟩={value},…]{hyperref}
可用参数如下表所示:
hyperref 宏包提供了直接书写超链接的命令,用于在 PDF 中生成 URL:
\url{⟨url⟩}
\nolinkurl{⟨url⟩}
\url
和 \nolinkurl
都像抄录命令 \verb
一样输出一个 URL,区别是前者还为 URL 加上了超链接,后者没有.
在 \url
命令中作为参数的 URL 里,可直接输入如 %
、&
这样的特殊符号.
我们也可以像 HTML 中的超链接一样,把一段文字作为超链接:
\href{⟨url⟩}{⟨text⟩}
例如:
\url{http://wikipedia.org} \\
\nolinkurl{http://wikipedia.org} \\
\href{http://wikipedia.org}{Wiki}
使用 hyperref 宏包后,文档中所有的引用、参考文献、索引等等都转换为超链接. 用户也可对某个 \label
命令定义的标签 ⟨label⟩
作超链接(注意这里的 ⟨label⟩
虽然是可选参数的形式,但通常是必填的):
\hyperref[⟨label⟩]{⟨text⟩}
默认的超链接在文字外边加上一个带颜色的边框(在打印 PDF 时边框不会打印),可指定 colorlinks
参数修改为将文字本身加上颜色,或修改 pdfborder
参数调整边框宽度以“去掉”边框;hidelinks
参数则令超链接既不变色也不加边框.
\hypersetup{hidelinks}
% or:
\hypersetup{pdfborder={0 0 0}}
hyperref 宏包另一个强大的功能是为 PDF 生成书签. 对于章节命令 \chapter
、\section
等,默认情况下会为 PDF 自动生成书签. 和交叉引用、索引等类似,生成书签也需要多次编译源代码,第一次编译将书签记录写入 .out 文件,第二次编译才正确生成书签.
hyperref 还提供了手动生成书签的命令:
\pdfbookmark[⟨level⟩]{⟨bookmark⟩}{⟨anchor⟩}
⟨bookmark⟩
为书签名称,⟨anchor⟩
为书签项使用的锚点(类似交叉引用的标签). 可选参数 ⟨level⟩
为书签的层级,默认为 0 0 0.
章节命令里往往有 LaTeX \LaTeX LATEX 命令甚至数学公式,而 PDF 书签是纯文本,对命令和公式的处理很困难,有出错的风险. hyperref 宏包已经为我们处理了许多常见命令,如 \LaTeX
和字体命令 \textbf
等,对于未被处理的命令或数学公式,就要在章节标题中使用如下命令,分别提供 LaTeX \LaTeX LATEX 代码和 PDF 书签可用的纯文本:
\texorpdfstring{⟨LATEX code⟩}{⟨PDF bookmark text⟩}
比如在章节名称里使用公式 E = m c 2 E = mc^2 E=mc2,而书签则使用纯文本形式的 E=mc^2
:
\section{质能公式\texorpdfstring{$E=mc^2$}{E=mc\textasciicircum 2}}