summaryrefslogtreecommitdiff
path: root/info/lshort/chinese/src/chap/chap.06.spec.tex
diff options
context:
space:
mode:
Diffstat (limited to 'info/lshort/chinese/src/chap/chap.06.spec.tex')
-rw-r--r--info/lshort/chinese/src/chap/chap.06.spec.tex680
1 files changed, 680 insertions, 0 deletions
diff --git a/info/lshort/chinese/src/chap/chap.06.spec.tex b/info/lshort/chinese/src/chap/chap.06.spec.tex
new file mode 100644
index 0000000000..4db6214606
--- /dev/null
+++ b/info/lshort/chinese/src/chap/chap.06.spec.tex
@@ -0,0 +1,680 @@
+\chapter{特色工具和功能}\label{chap:spec}
+\addtocontents{los}{\protect\addvspace{10pt}}
+
+\begin{intro}
+本章介绍一些特色的 \LaTeX{} 辅助功能。前两个功能 \hologo{BibTeX} 和 makeindex 依靠一些辅助程序自动生成参考文献、索引等;
+之后的使用颜色、超链接等则令我们生成美观易用的电子文档。
+\end{intro}
+
+\section{参考文献和 \hologo{BibTeX} 工具}\label{sec:bib}
+
+\subsection{基本的参考文献和引用}\label{subsec:bib-basics}
+
+\pinyinindex{cankaowenxian}{参考文献}
+\LaTeX{} 提供的参考文献和引用方式比较原始,需要用户自行书写参考文献列表(包括格式),
+因此较难直接使用。相关的命令我们只作最简单的介绍。
+
+\cmdindex{cite}
+\LaTeX{} 提供了最基本的 \cmd{cite} 命令用于在正文中引用参考文献:
+\begin{command}
+\cmd{cite}\marg{citation}
+\end{command}
+
+\Arg{citation} 为引用的参考文献的标签,类似 \cmd{ref} 里的参数;\cmd{cite} 带一个可选参数,为引用的编号后加上额外的内容,
+如 \cmd{cite}\oarg*{page 22}\marg*{Paper2013} 可能得到形如 [13, page 22] 这样的引用。
+
+\envindex{thebibliography}
+\cmdindex{bibitem}
+参考文献由 \env{thebibliography} 环境包裹。每条参考文献由 \cmd{bibitem} 开头,其后是参考文献本身的内容:
+\begin{command}
+\cmd{begin}\marg*{thebibliography}\marg{widest label} \\
+\quad \cmd{bibitem}\oarg{item number}\marg{citation} ...\\
+\cmd{end}\marg*{thebibliography}
+\end{command}
+其中 \Arg{citation} 是 \cmd{cite} 使用的文献标签,
+\Arg{item number} 自定义参考文献的序号,如果省略,则按自然排序给定序号。
+\Arg{widest label} 用以限制参考文献序号的宽度,如 99 意味着不超过两位数字。通常设定为与参考文献的数目一致。
+
+\env{thebibliography} 环境自动生成不带编号的一节(\cls{article} 文档类)或一章(\cls{report} / \cls{book} 文档类)。
+在 \cls{article} 文档类的节标题默认为 ``Reference''{},而在 \cls{report / book} 文档类
+的章标题默认为 ``Bibliography''{}。用户可通过 \ref{sec:latex-settings} 节给出的方法定制参考文献的标题。
+
+以下为一个使用 \env{the\-biblio\-graphy} 排版参考文献的例子:
+\begin{verbatim}
+\documentclass{article}
+\begin{document}
+\section{Introduction}
+Partl~\cite{germenTeX} has proposed that \ldots
+
+\begin{thebibliography}{99}
+\bibitem{germenTeX} H.~Partl: \emph{German \TeX},
+ TUGboat Volume~9, Issue~1 (1988)
+\end{thebibliography}
+\end{document}
+\end{verbatim}
+
+\subsection{\hologo{BibTeX} 数据库}\label{subsec:bibtex-data}
+
+\index{bibtexdb@\protect\hologo{BibTeX} 数据库}
+\hologo{BibTeX} 是最为流行的参考文献数据组织格式之一。它的出现让我们摆脱手写参考文献条目的麻烦。我们还可以通过参考文献样式的支持,
+让同一份 \hologo{BibTeX} 数据库生成不同样式的参考文献列表。
+
+\hologo{BibTeX} 数据库以 \texttt{.bib} 作为扩展名,其内容是若干个文献条目,每个条目的格式为:
+\begin{command}
+\texttt @\Arg{type}\texttt\{\Arg{citation}, \\
+\qquad\Arg{key1} = \marg{value1}, \\
+\qquad\Arg{key2} = \marg{value2}, \\
+\qquad\ldots\\
+\texttt\}
+\end{command}
+
+其中 \Arg{type} 为文献的类别,如 \texttt{article} 为学术论文,\texttt{book} 为书籍,\texttt{in\-collection} 为论文集中的某一篇,等等。
+\Arg{citation} 为 \cmd{cite} 命令使用的文献标签。在 \Arg{citation} 之后为条目里的各个字段,以 \Arg{key} = \marg{value} 的形式组织。
+
+我们在此简单列举学术论文里使用较多的 \hologo{BibTeX} 文献条目类别:
+\begin{description}
+ \item[\texttt{article}] 学术论文,必需字段有 author, title, journal, year; 可选字段包括 volume, number, pages, doi 等;
+ \item[\texttt{book}] 书籍,必需字段有 author/editor, title, publisher, year; 可选字段包括 volume/number, series, address 等;
+ \item[\texttt{incollection}] 论文集中的一篇,必需字段有 author, title, booktitle, publisher, year; 可选字段包括 editor, volume/number, chapter, pages, address 等;
+ \item[\texttt{inbook}] 书中的一章,必需字段有 author/editor, title, chapter/pages, publisher, year; 可选字段包括 volume/number, series, address 等。
+\end{description}
+
+例如 \texttt{article} 类别的参考文献数据条目写法如下:
+\begin{verbatim}
+@article{Alice13,
+ title = {Demostration of bibliography items},
+ author = {Alice Axford and Bob Birkin and Charlie Copper and Danny Dannford},
+ year = {2013},
+ month = {Mar},
+ journal = {Journal of \TeX perts},
+ volume = {36},
+ number = {7},
+ pages = {114-120}}
+\end{verbatim}
+所有类别的文献条目格式请参考 \CTAN|biblio/bibtex/base/btxdoc.pdf|。
+
+多数时候,我们无需自己手写 \hologo{BibTeX} 文献条目。从 Google Scholar 或者期刊/数据库的网站上都能够导出 \hologo{BibTeX} 文献条目,
+老牌的文献管理软件 EndNote 也支持生成 \hologo{BibTeX} 格式的数据库。开源软件 JabRef 甚至支持 \hologo{BibTeX} 文献条目的导入、导出和管理。
+
+\subsection{\hologo{BibTeX} 样式}\label{subsec:bibtex-style}
+
+参考文献的写法在不同文献里千差万别,包括作者、标题、年份等各项的顺序和字体样式、文献在列表中的排序规则等。
+\hologo{BibTeX} 用样式(style)来管理参考文献的写法。\hologo{BibTeX} 提供了几个预定义的样式,
+如 \texttt{plain}, \texttt{unsrt}, \texttt{alpha} 等。
+如果使用期刊模板的话,可能会提供自用的样式。样式文件以 \texttt{.bst} 为扩展名。
+
+\cmdindex{bibliographystyle}
+使用样式文件的方法是在源代码内(一般在导言区)使用 \cmd{biblio\-graphy\-style} 命令:
+\begin{command}
+\cmd{bibliographystyle}\marg{bst-name}
+\end{command}
+这里 \Arg{bst-name} 为 \texttt{.bst} 样式文件的名称,\textbf{不要带 \texttt{.bst} 扩展名}。
+
+我们以 \ref{subsec:bibtex-data} 小节给出的数据条目为例,使用 \cmd{biblio\-graphy\-style} 命令选择不同的参考文献样式,
+效果大致如表 \ref{tbl:bibtex-style} 所示。
+
+\begin{table}[htp]
+\caption{\hologo{BibTeX} 样式的排版效果}\label{tbl:bibtex-style}
+\hrule
+\begin{trivlist}\item\relax
+\textbf{plain}\\{}
+[1] Alice Axford, Bob Birkin, Charlie Copper, and Danny Dannford.
+\newblock Demostration of bibliography items.
+\newblock {\em Journal of \TeX perts}, 36(7):114--120, Mar 2013.
+
+\medskip
+\textbf{alpha}\\{}
+[ABCD13] Alice Axford, Bob Birkin, Charlie Copper, and Danny Dannford.
+\newblock Demostration of bibliography items.
+\newblock {\em Journal of \TeX perts}, 36(7):114--120, Mar 2013.
+
+\medskip
+\textbf{abbrv}\\{}
+[1] A.~Axford, B.~Birkin, C.~Copper, and D.~Dannford.
+\newblock Demostration of bibliography items.
+\newblock {\em Journal of \TeX perts}, 36(7):114--120, Mar 2013.
+
+\medskip
+\textbf{amsplain}(\AmS{} 文档类 \textsf{amsart} 等配套的样式)\\{}
+[1] Alice Axford, Bob Birkin, Charlie Copper, and Danny Dannford, \emph{Demostration of bibliography
+ items}, Journal of \TeX perts \textbf{36} (2013), no.~7, 114--120.
+
+\medskip
+\textbf{elsarticle-num}(Elsevier 提供的 \textsf{elsarticle} 文档类配套的样式)\\{}
+[1] A.~Axford, B.~Birkin, C.~Copper, D.~Dannford, Demostration of bibliography items,
+ Journal of \TeX perts 36~(7) (2013) 114--120.
+
+\medskip
+\textbf{IEEEtran}(\textsf{IEEEtran} 模板文档类配套的样式)\\{}
+[1] A.~Axford, B.~Birkin, C.~Copper, and D.~Dannford, ``Demostration of
+ bibliography items,'' \emph{Journal of \TeX perts}, vol.~36, no.~7, pp.
+ 114--120, Mar 2013.
+\end{trivlist}
+\hrule
+\end{table}
+
+\subsection{使用 \hologo{BibTeX} 排版参考文献}\label{subsec:bibtex-use}
+
+\index{bibtex@\protect\hologo{BibTeX} 工具}
+现在我们来看如何利用 \hologo{BibTeX} 数据库生成参考文献和引用。
+
+第一步:准备一份 \hologo{BibTeX} 数据库,假设数据库文件名为 \texttt{books.bib},
+和 \LaTeX{} 源代码\textbf{一般位于同一个目录下}。
+
+第二步:在源代码中添加必要的命令。假设源代码名为 \texttt{demo.tex}(见源代码 \ref{code:bibtex-demo})。
+\begin{enumerate}
+\item \cmdindex{bibliographystyle}
+首先需要使用命令 \cmd{bibliographystyle} 设定参考文献的格式。
+
+\item \cmdindex{cite,nocite}
+其次,在正文中引用参考文献。\hologo{BibTeX} 程序在生成参考文献列表的时候,通常只列出用了 \cmd{cite} 命令引用的那些。
+如果需要列出未被引用的文献,则需要 \cmd{nocite}\marg{citation} 命令;而 \cmd{nocite}\marg*{*} 则让所有未被引用的文献都列出。
+
+\item \cmdindex{bibliography}
+再次,在需要列出参考文献的位置,使用 \cmd{biblio\-graphy} 命令代替 \env{the\-biblio\-graphy} 环境:
+\begin{command}
+\cmd{bibliography}\marg{bib-name}
+\end{command}
+
+其中 \Arg{bib-name} 是 \hologo{BibTeX} 数据库的文件名,\textbf{不要带 \texttt{.bib} 扩展名}。
+\end{enumerate}
+
+\begin{sourcecode}[htp]
+\begin{Verbatim}
+\documentclass{article}
+\bibliographystyle{plain}
+\begin{document}
+\section{Some words}
+Some excellent books, for example, \cite{citation1}
+and \cite{citation2} \ldots
+
+\bibliography{books}
+\end{document}
+\end{Verbatim}
+\caption{利用 \texttt{books.bib} 生成参考文献的源代码 \texttt{demo.tex}。}\label{code:bibtex-demo}
+\end{sourcecode}
+
+注意:\cmd{bibliographystyle} 和 \cmd{bibliography} 命令缺一不可,没有这两个命令,使用 \hologo{BibTeX} 生成参考文献列表的时候会报错。
+
+第三步:写好了以上两个文件之后,我们就可以开始编译了。
+\begin{enumerate}
+ \item 首先使用 \texttt{pdflatex} 或 \texttt{xelatex} 等命令编译 \LaTeX{} 源代码 \texttt{demo.tex};
+ \item 接下来用 \texttt{bibtex} 命令处理 \texttt{demo.aux} 辅助文件记录的参考文献格式、引用条目等信息。
+ \texttt{bibtex} 命令处理完毕后会生成 \texttt{demo.bbl} 文件,内容就是一个 \env{thebibliography} 环境;
+ \item 再使用 \texttt{pdflatex} 或 \texttt{xelatex} 等命令把源代码 \texttt{demo.tex} 编译\textbf{两遍},读入参考文献并正确生成引用。
+\end{enumerate}
+
+整个过程使用的命令如下(可以略去扩展名):
+\begin{verbatim}
+xelatex demo
+bibtex demo
+xelatex demo
+xelatex demo
+\end{verbatim}
+
+使用 \texttt{latex + dvipdfmx} 命令编译时,则 \texttt{dvipdfmx} 命令放在最后,相当于先后使用
+\texttt{latex}, \texttt{bibtex}, \texttt{latex}, \texttt{latex}, \texttt{dvipdfmx}。
+
+\subsection{\pkg{natbib} 宏包}\label{subsec:natbib}
+
+\pkgindex{natbib}
+时下许多学术期刊比较喜欢使用人名——年份的引用方式,形如(\emph{Axford et~al.}, 2013)。
+\pkg{natbib} 宏包提供了对这种“自然”引用方式的处理。
+
+\cmdindex[natbib]{citep,citet}
+除了 \cmd{cite} 之外,\pkg{natbib} 宏包在正文中支持两种引用方式:
+\begin{command}
+\cmd{citep}\marg{citation} \\
+\cmd{citet}\marg{citation}
+\end{command}
+
+它们分别生成形如(\emph{Axford et~al.}, 2013) 和 \emph{Axford et~al.} (2013) 的人名——年份引用。
+正确排版人名——年份引用还依赖于特定的 \hologo{BibTeX} 样式。\pkg{natbib} 提供了与 \LaTeX{} 预定义样式相对应的几个样式,
+包括 \texttt{plainnat}、\texttt{abbrvnat} 和 \texttt{unsrtnat}。学术论文模板是否支持 \pkg{natbib},需要参考其帮助文档。
+
+\pkg{natbib} 宏包同样也支持数字引用,并且支持将引用的序号压缩,例如:
+\begin{verbatim}
+\usepackage[numbers,sort&compress]{natbib}
+\end{verbatim}
+调用 \pkg{natbib} 宏包时指定以上选项后,连续引用多篇文献时,会生成形如 (3--7) 的引用而不是 (3, 4, 5, 6, 7)。
+
+\pkg{natbib} 宏包还有更多选项和用法,比如默认的引用是用小括号包裹的,可指定 \texttt{square} 选项改为中括号;
+再比如 \cmd{citep} 命令也支持可选参数,为引用前后都添加额外内容。这里不再赘述,请参考 \pkg{natbib} 宏包的帮助文档。
+
+
+\subsection{\pkg{biblatex} 宏包}\label{subsec:biblatex}
+
+\pkgindex{biblatex}
+本节的末尾简单介绍一下基于 \pkg{biblatex} 宏包排版参考文献的方式。
+\pkg{biblatex} 宏包是一套基于 \LaTeX{} 宏命令的参考文献解决方案,提供了便捷的格式控制和强大的排序、分类、筛选、多文献表等功能。
+\pkg{biblatex} 宏包也因其对 UTF-8 和中文参考文献的良好支持,被国内较多 \LaTeX{} 模板采用。
+
+基于 \pkg{biblatex} 宏包的方式与基于 \hologo{BibTeX} 的传统方式有一定区别,下面从文档结构和命令、编译方式、样式选择等方面逐一介绍:
+
+\subsubsection{文档结构和 \pkg{biblatex} 相关命令}
+
+\cmdindex[biblatex]{addbibresource,printbibliography}
+\begin{enumerate}
+ \item 首先是在导言区调用 \pkg{biblatex} 宏包。宏包支持以 \Arg{key}=\Arg{value} 形式指定选项,包括参考文献样式 style、参考文献著录排序的规则 sorting 等。
+ \item 接着在导言区使用 \cmd{addbibresource} 命令为 \pkg{biblatex} 引入参考文献数据库。与基于 \hologo{BibTeX} 的传统方式不同的是,这里需要写完整的文件名。
+ \item 在正文中使用 \cmd{cite} 命令引用参考文献。除此之外还可以使用丰富的命令达到不同的引用效果,如 \cmd{citeauthor} 和 \cmd{citeyear} 分别单独引用作者和年份,\cmd{textcite} 和 \cmd{parencite} 分别类似 \pkg{natbib} 宏包提供的 \cmd{citet} 和 \cmd{citep} 命令,以及脚注式引用 \cmd{footcite} 等。
+ \item 最后在需要排版参考文献的位置使用命令 \cmd{printbibliography}。
+\end{enumerate}
+
+\begin{sourcecode}[htp]
+\begin{Verbatim}
+% File: egbibdata.bib
+@book{caimin2006,
+ title = {UML基础和Rose建模教程},
+ address = {北京},
+ author = {蔡敏 and 徐慧慧 and 黄柄强},
+ publisher = {人民邮电出版社},
+ year = {2006},
+ month = {1}
+}
+
+% File: demo.tex
+\documentclass{ctexart}
+% 使用符合 GB/T 7714-2015 规范的参考文献样式
+\usepackage[style=gb7714-2015]{biblatex}
+% 注意加 .bib 扩展名
+\addbibresource{egbibdata.bib}
+
+\begin{document}
+
+见文献\cite{caimin2006}。
+
+\printbibliography
+\end{document}
+\end{Verbatim}
+\caption{应用 \pkg{biblatex} 的示例 egbibdata.bib 和 demo.tex。}
+\end{sourcecode}
+
+\subsubsection{编译方式}
+
+\index{biber}
+与基于 \hologo{BibTeX} 的传统方式不同的是,\pkg{biblatex} 宏包使用 \texttt{biber} 程序处理参考文献。因此上述文档的编译步骤为:
+
+\begin{verbatim}
+xelatex demo
+biber demo
+xelatex demo
+xelatex demo
+\end{verbatim}
+
+\subsubsection{\pkg{biblatex} 样式和其它选项}
+
+\pkg{biblatex} 使用的参考文献样式分为著录样式(bibliography style)和引用样式(citation style),分别以 \texttt{.bbx} 和 \texttt{.cbx} 为扩展名。参考文献的样式在调用宏包时使用 \texttt{style} 选项指定,或者使用 \texttt{bibstyle} 或 \texttt{citestyle} 分别指定:
+\begin{verbatim}
+% 同时调用 gb7714-2015.bbx 和 gb7714-2015.cbx
+\usepackage[style=gb7714-2015]{biblatex}
+% 著录样式调用 gb7714-2015.bbx,引用样式调用 biblatex 宏包自带的 authoryear
+\usepackage[bibstyle=gb7714-2015,citestyle=authoryear]{biblatex}
+\end{verbatim}
+
+以下总结一些常用的参考文献样式,除 \pkg{biblatex} 宏包自带的样式外,许多样式以单独的宏包在发行版内发布。
+
+\begin{description}
+ \item[\texttt{authoryear}]
+ \pkg{biblatex} 自带样式,类似 \pkg{natbib} 默认的引用样式效果。
+ \item[\texttt{authortitle}]
+ \pkg{biblatex} 自带样式,采用作者-题名(shorttitle 字段)的引用样式。
+ \item[\texttt{verbose}]
+ \pkg{biblatex} 自带样式,引用样式中包含作者、题名、书名、页码等字段的信息。
+ \item[\texttt{alphabetic}]
+ \pkg{biblatex} 自带样式,著录样式与 \hologo{BibTeX} 的 \texttt{alpha} 样式类似。
+ \item[\texttt{trad-alpha}]
+ \pkg{biblatex-trad} 样式包,移植自 \hologo{BibTeX} 默认的 \texttt{alpha} 样式。另外还包括 \texttt{trad-abbrv}、\texttt{trad-plain} 和 \texttt{trad-unsrt}。
+ \item[\texttt{gb7714-2015}]
+ 符合中文文献著录标准 GB/T 7714--2015 的样式,著录按顺序编码排版。另外还包括按作者-年份顺序排版著录的样式 \texttt{gb7714-2015ay}。
+ \item[\texttt{caspervector}]
+ 以中文文献著录标准 GB/T 7714--2015 为基础的一个样式。
+ \item[\texttt{ieee}]
+ 兼容 \pkg{IEEEtran} 风格的样式,著录按顺序编码排版。另外还包括按作者-年份顺序排版著录的样式 \texttt{ieee-alphabetic}。
+\end{description}
+
+\section{索引和 makeindex 工具}\label{sec:index}
+
+\pinyinindex{suoyin}{索引}
+\index{makeindex@makeindex 工具}
+书籍和大文档通常用索引来归纳关键词,方便用户查阅。\LaTeX{} 借助配套的 makeindex 程序完成对索引的排版。
+
+\subsection{使用 makeindex 工具的方法}\label{subsec:makeidx}
+
+要使用索引,须经过这么几个步骤(仍设源代码名为 \texttt{demo.tex}):
+
+\pkgindex{makeidx}
+\cmdindex[makeidx]{makeindex}
+第一步,在 \LaTeX{} 源代码的导言区调用 \pkg{makeidx} 宏包,并使用 \cmd{makeindex} 命令开启索引的收集:
+\begin{verbatim}
+\usepackage{makeidx}
+\makeindex
+\end{verbatim}
+
+\cmdindex{index}
+\cmdindex[makeidx]{printindex}
+第二步,在正文中需要索引的地方使用 \cmd{index} 命令。\cmd{index} 命令的参数写法详见下一小节;
+并在需要输出索引的地方(如所有章节之后)使用 \cmd{printindex} 命令。
+
+第三步,编译过程:
+
+\begin{enumerate}
+ \item 首先用 \texttt{xelatex} 等命令编译源代码 \texttt{demo.tex}。编译过程中产生索引记录文件 \texttt{demo.idx};
+ \item 用 makeindex 程序处理 \texttt{demo.idx},生成用于排版的索引列表文件 \texttt{demo.ind};
+ \item 再次编译源代码 \texttt{demo.tex},正确生成索引列表。
+\end{enumerate}
+
+\subsection{索引项的写法}\label{subsec:index-entry}
+
+\cmdindex{index}
+添加索引项的命令为:
+\begin{command}
+\cmd{index}\marg{index entry}
+\end{command}
+
+其中 \Arg{index entry} 为索引项,写法由表 \ref{tbl:index-entry} 汇总。其中 \texttt!、\texttt @ 和 \texttt|
+为特殊符号,如果要向索引项直接输出这些符号,需要加前缀 \texttt";而 \texttt" 需要输入两个引号 \texttt{""} 才能输出到索引项。
+
+\begin{table}[htp]
+\centering
+\caption{索引项的写法列表}\label{tbl:index-entry}
+\begin{tabular}{lll}
+ \hline
+ \textbf{举例} &\textbf{索引项} &\textbf{备注}\\
+ \hline
+ \multicolumn{3}{l}{普通索引} \\[.8ex]
+ \verb+hello+ & hello, 1 & 普通索引 \\
+ \hline
+ \multicolumn{3}{l}{分级索引,以 \texttt! 分隔,最多支持三级} \\[.8ex]
+ \verb+hello+ & hello, 1 & 一级索引 \\
+ \verb+hello!Peter+ &\quad Peter, 3 & 二级索引 \\
+ \verb+hello!Peter!Jack+ &\qquad Jack, 3 & 三级索引 \\
+ \hline
+ \multicolumn{3}{l}{格式化索引,形式为 \Arg{alpha}\texttt @\Arg{format}} \\
+ \multicolumn{3}{l}{\Arg{alpha}为纯字母,用来排序} \\
+ \multicolumn{3}{l}{\Arg{format}为索引的格式,可以包括 \LaTeX 代码和简单的公式} \\[.8ex]
+ \verb+Mobius@M\""obius+ & M\"obius, 2 & 输出重音 \\
+ \verb+alpha@$\alpha$+ & $\alpha$, 7 & 输出公式 \\
+ \verb+bold@\textbf{bold}+ & \textbf{bold}, 12 & 输出粗体 \\
+ \hline
+ \multicolumn{3}{l}{页码范围} \\[.8ex]
+ \verb+morning|(+ & morning, 6--7 & 范围索引的开头 \\
+ \verb+morning|)+ & & 范围索引的结尾 \\
+ \hline
+ \multicolumn{3}{l}{格式化索引页码} \\[.8ex]
+ \verb+Jenny|textbf+ & Jenny, \textbf{3} & 调用 \cmd{textbf} 加粗页码 \\
+ \verb+Joe|see{Jenny}+ & Joe, \textit{see} Jenny & 调用 \cmd{see} 生成特殊形式 \\
+ \verb+Joe|seealso{Jenny}+ & Joe, \textit{see also} Jenny & 调用 \cmd{seealso} 生成特殊形式 \\
+ \hline
+\end{tabular}
+\end{table}
+
+读者可以钻研一下以下给出的一个较为复杂的,结合多级索引、索引格式、页码格式等的用法示例。但在自己使用时,
+最好还是遵循“简单的就是最好的”原则,尽量使用表 \ref{tbl:index-entry} 中的写法。
+\begin{verbatim}
+Test index.
+\index{Test@\textsf{""Test}|(textbf}
+\index{Test@\textsf{""Test}!sub@"|sub"||see{Test}}
+\newpage
+Test index.
+\index{Test@\textsf{""Test}|)textbf}
+\end{verbatim}
+
+\section{使用颜色}\label{sec:color}
+
+\pinyinindex{yanse}{颜色}
+原始的 \LaTeX{} 不支持使用各种颜色。\pkg{color} 宏包或者 \pkg{xcolor} 宏包提供了对颜色的支持,给 PDF 输出生成颜色的特殊指令。
+
+\subsection{颜色的表达方式}\label{subsec:color-code}
+
+\pkgindex{color}
+\cmdindex[color/xcolor]{color}
+调用 \pkg{color} 或 \pkg{xcolor} 宏包后,我们就可以用如下命令切换颜色:
+\begin{command}
+\cmd{color}\oarg{color-mode}\marg{code} \\
+\cmd{color}\marg{color-name}
+\end{command}
+
+颜色的表达方式有两种,其一是使用色彩模型和色彩代码,代码用 $0\sim1$ 的数字代表成分的比例。
+\pkg{color} 宏包支持 \texttt{rgb}、\texttt{cmyk} 和 \texttt{gray} 模型,\pkg{xcolor} 支持更多的模型如 \texttt{hsb} 等。
+\begin{example}
+\large\sffamily
+{\color[gray]{0.6}
+ 60\% 灰色} \\
+{\color[rgb]{0,1,1}
+ 青色}
+\end{example}
+
+其二是直接使用名称代表颜色,前提是已经定义了颜色名称(没定义的话会报错):
+\begin{example}
+\large\sffamily
+{\color{red} 红色} \\
+{\color{blue} 蓝色}
+\end{example}
+
+\pkgindex{xcolor}
+\pkg{color} 宏包仅定义了 8 种颜色名称,\pkg{xcolor} 补充了一些,总共有 19 种,见表 \ref{tbl:colors}。
+
+\def\showcolor#1{%
+ \texttt{#1}\index{yanse@颜色!#1@\texttt{#1}}%
+ \ \begingroup\fboxsep=0pt\fbox{{\color{#1}\vrule width 1.2em height 1.4ex}}\endgroup}
+\def\showxcolor#1{%
+ \texttt{#1}\index{yanse@颜色!#1@\texttt{#1} (\pkg{xcolor})}%
+ \ \begingroup\fboxsep=0pt\fbox{{\color{#1}\vrule width 1.2em height 1.4ex}}\endgroup}
+
+\begin{table}[htp]
+\centering
+\caption{\pkg{color} 和 \pkg{xcolor} 宏包可用的颜色名称}\label{tbl:colors}
+\renewcommand\arraystretch{1.1}
+\begin{tabularx}{0.8\textwidth}{*{4}{>{\raggedleft\arraybackslash}X}}
+ \hline
+ \multicolumn{4}{c}{基本的 8 种颜色名称(后三种颜色为 CMYK 模型)} \\
+ \showcolor{black} & \showcolor{red} & \showcolor{green} & \showcolor{blue} \\
+ \showcolor{white} & \showcolor{cyan} & \showcolor{magenta} & \showcolor{yellow} \\
+ \hline
+ \multicolumn{4}{c}{\pkg{xcolor} 额外可用的颜色名称:} \\
+ \showxcolor{darkgray} & \showxcolor{gray} & \showxcolor{lightgray} & \\
+ \showxcolor{brown} & \showxcolor{olive} & \showxcolor{orange} & \showxcolor{lime}\\
+ \showxcolor{purple} & \showxcolor{teal} & \showxcolor{violet} & \showxcolor{pink} \\
+ \hline
+\end{tabularx}
+\end{table}
+
+\pkg{xcolor} 还支持将颜色通过表达式混合或互补:
+\begin{example}
+\large\sffamily
+{\color{red!40} 40\% 红色}\\
+{\color{blue}蓝色
+\color{blue!50!black}蓝黑
+\color{black}黑色}\\
+{\color{-red}红色的互补色}
+\end{example}
+
+我们还可以通过命令自定义颜色名称,注意这里的 \Arg{color-mode} 是必选参数:
+\begin{command}
+\cmd{definecolor}\marg{color-name}\marg{color-mode}\marg{code}
+\end{command}
+
+如果调用 \pkg{color} 或 \pkg{xcolor} 宏包时指定 \texttt{dvipsnames} 选项,就有额外的 68 种颜色名称可用%
+\footnote{\pkg{color} 宏包实际要指定 \texttt{dvipsnames} 和 \texttt{usenames} 选项。}。
+\pkg{xcolor} 宏包还支持通过指定其它选项载入更多颜色名称。限于篇幅不展开介绍,详情请参考 \pkg{xcolor} 宏包的手册。
+
+\subsection{带颜色的文本和盒子}\label{subsec:colorbox}
+
+原始的 \cmd{color} 命令类似于字体命令 \cmd{bfseries},它使之后排版的内容全部变成指定的颜色,
+所以直接使用时通常要加花括号分组。\pkg{color} / \pkg{xcolor} 宏包都定义了一些方便用户使用的带颜色元素。
+
+\cmdindex[color/xcolor]{textcolor}
+输入带颜色的文本可以用类似 \cmd{textbf} 的命令:
+\begin{command}
+\cmd{textcolor}\oarg{color-mode}\marg{code}\marg{text} \\
+\cmd{textcolor}\marg{color-name}\marg{text}
+\end{command}
+
+\cmdindex[color/xcolor]{colorbox}
+以下命令构造一个带背景色的盒子,\Arg{material} 为盒子中的内容:
+\begin{command}
+\cmd{colorbox}\oarg{color-mode}\marg{code}\marg{material} \\
+\cmd{colorbox}\marg{color-name}\marg{material}
+\end{command}
+
+\cmdindex[color/xcolor]{fcolorbox}
+以下命令构造一个带背景色和有色边框的盒子,\Arg{fcode} 或 \Arg{fcolor-name} 用于设置边框颜色:
+\begin{command}
+\cmd{fcolorbox}\oarg{color-mode}\marg{fcode}\marg{code}\marg{material} \\
+\cmd{fcolorbox}\marg{fcolor-name}\marg{color-name}\marg{material}
+\end{command}
+
+\begin{example}
+\sffamily
+文字用\textcolor{red}{红色}强调\\
+\colorbox[gray]{0.95}{浅灰色背景} \\
+\fcolorbox{blue}{yellow}{%
+ \textcolor{blue}{蓝色边框+文字,%
+ 黄色背景}
+}
+\end{example}
+
+\cmdindex{fboxrule,fboxsep}
+\cmd{fcolorbox} 也可以像 \ref{subsec:fbox} 小节里的 \cmd{fbox} 那样调节 \cmd{fbox\-rule} 和 \cmd{fbox\-sep};对于 \cmd{color\-box},
+调整 \cmd{fbox\-sep} 是有效的。这里不再给出具体的示例。
+
+\section{使用超链接}\label{sec:hyperlinks}
+
+\pinyinindex{chaolianjie}{超链接}
+PDF 文档格式是现今最流行的电子文档格式,而电子文档最实用的需求之一就是超链接功能。
+\LaTeX{} 中实现这一功能的是 \pkg{hyperref} 宏包。
+
+\subsection{\pkg{hyperref} 宏包}\label{subsec:hyperref}
+
+\pkgindex{hyperref}
+\pkg{hyperref} 宏包涉及到的链接遍布 \LaTeX{} 的每一个角落——目录、引用、脚注、索引、参考文献等等都被封装成超链接。
+但这也使得它与其它宏包发生冲突的可能性大大增加,虽然宏包已经尽力解决各方面的兼容性,但仍不能面面俱到。
+为减少可能的冲突,习惯上将 \pkg{hyperref} 宏包\textbf{放在其它宏包之后调用}。
+
+\pinyinindex{xuanxiang}{选项(宏包/文档类)}
+与 \pkg{graphicx} 宏包类似,\texttt{latex} + \texttt{dvipdfmx} 命令下调用 \pkg{hyperref} 宏包时,需要指定选项 \texttt{dvipdfmx};
+而 \texttt{pdflatex} 或 \texttt{xelatex} 命令下不需要。
+
+\cmdindex[hyperref]{hypersetup}
+\pkg{hyperref} 宏包提供了命令 \cmd{hypersetup} 配置各种参数。参数也可以作为宏包选项,在调用宏包时指定:
+\begin{command}
+\cmd{hypersetup}\marg*{\Arg{option1},\Arg{option2}=\marg*{value},\ldots} \\
+\cmd{usepackage}\oarg*{\Arg{option1},\Arg{option2}=\marg*{value},\ldots}\marg*{hyperref}
+\end{command}
+可用的参数见表 \ref{tbl:hyperref-settings}。
+
+\begin{table}[htp]
+\centering
+\caption{\pkg{hyperref} 宏包提供的参数设置}\label{tbl:hyperref-settings}
+\begin{tabular}{llp{19.5em}}
+ \hline
+ \textbf{参数} & \textbf{默认值} & \textbf{含义} \\
+ \hline
+ \texttt{colorlinks=}\Arg{true\textnormal|false}
+ & \textit{false} & 设置为 \textit{true} 为链接文字带颜色,反之加上带颜色的边框 \\
+ \texttt{hidelinks} & & 取消链接的颜色和边框 \\
+ \texttt{pdfborder=}\marg*{\Arg{n} \Arg{n} \Arg{n}}
+ & 0 0 1 & 超链接边框设置,设为 0 0 0 可取消边框 \\
+ \hline
+ \texttt{bookmarks=}\Arg{true\textnormal|false}\textsuperscript{\dag}
+ & \textit{true} & 是否生成书签 \\
+ \texttt{bookmarksopen=}\Arg{true\textnormal|false}
+ & \textit{false} & 是否展开书签 \\
+ \texttt{bookmarksnumbered=}\Arg{true\textnormal|false}
+ & \textit{false} & 书签是否带章节编号 \\
+ \hline
+ \texttt{pdftitle=}\Arg{string}
+ & 空 & 标题 \\
+ \texttt{pdfauthor=}\Arg{string}
+ & 空 & 作者 \\
+ \texttt{pdfsubject=}\Arg{string}
+ & 空 & 主题 \\
+ \texttt{pdfkeywords=}\Arg{string}
+ & 空 & 关键词 \\
+ \texttt{pdfstartview=}\Arg{Fit\textnormal|FitH\textnormal|FitV}
+ & \textit{Fit} & 设置 PDF 页面以适合页面/适合宽度/适合高度等方式显示,默认为适合页面 \\
+ \hline
+\end{tabular}
+\begin{quotation}
+\small
+\textsuperscript{\dag} 该选项只能作为宏包选项,在调用宏包时指定。
+\end{quotation}
+\end{table}
+
+\subsection{超链接}\label{subsec:url-href}
+
+\cmdindex[hyperref]{url,nolinkurl}
+\pkg{hyperref} 宏包提供了直接书写超链接的命令,用于在 PDF 中生成 URL:
+\begin{command}
+\cmd{url}\marg{url} \\
+\cmd{nolinkurl}\marg{url}
+\end{command}
+
+\cmd{url} 和 \cmd{nolinkurl} 都生成可以点击的 URL,区别是前者有彩色,后者没有。在 \cmd{url} 命令中作为参数的 URL 里,
+\textbf{可直接输入如 \texttt\%、\texttt\& 这样的特殊符号}。
+
+\cmdindex[hyperref]{href}
+我们也可以像 HTML 中的超链接一样,把一段文字作为超链接:
+\begin{command}
+\cmd{href}\marg{url}\marg{text}
+\end{command}
+
+\begin{example}
+\url{http://wikipedia.org} \\
+\nolinkurl{http://wikipedia.org} \\
+\href{http://wikipedia.org}{Wiki}
+\end{example}
+
+\cmdindex[hyperref]{hyperref}
+使用 \pkg{hyperref} 宏包后,文档中所有的引用、参考文献、索引等等都转换为超链接。
+用户也可对某个 \cmd{label} 命令定义的标签 \Arg{label} 作超链接(注意这里的 \Arg{label} 虽然是可选参数的形式,但通常是\textbf{必填的}%
+\footnote{不带可选参数的 \cmd{hyperref} 命令带四个必选参数,前三个组成特殊格式的超链接,最后一个同 \Arg{text}。}):
+\begin{command}
+\cmd{hyperref}\oarg{label}\marg{text}
+\end{command}
+
+默认的超链接在文字外边加上一个带颜色的边框(在打印 PDF 时边框不会打印),可指定 \texttt{color\-links} 参数修改为将文字本身加上颜色,
+或修改 \texttt{pdf\-border} 参数调整边框宽度以“去掉”边框;\texttt{hide\-links} 参数则令超链接既不变色也不加边框。
+\begin{verbatim}
+\hypersetup{hidelinks}
+% or:
+\hypersetup{pdfborder={0 0 0}}
+\end{verbatim}
+
+\subsection{PDF 书签}\label{subsec:pdf-bookmark}
+
+\pinyinindex{PDFshuqian}{PDF 书签}
+\pkg{hyperref} 宏包另一个强大的功能是为 PDF 生成书签。对于章节命令 \cmd{chapter}、\cmd{section} 等,
+默认情况下会为 PDF 自动生成书签。和交叉引用、索引等类似,生成书签也需要多次编译源代码,第一次编译将书签记录写入 \texttt{.out} 文件,
+第二次编译才正确生成书签。
+
+书签的一些属性见表 \ref{tbl:hyperref-settings}。使用 \pkg{CJK} 宏包时,为了防止中文书签出现乱码,
+需要进行繁琐的设置;但在使用 \pkg{ctex} 宏包和文档类、且使用 \texttt{xelatex} 或 \texttt{lualatex} 编译的情况下,
+无需用户额外干预,即可正确生成中文书签。
+
+\cmdindex[hyperref]{pdfbookmark}
+\pkg{hyperref} 还提供了手动生成书签的命令:
+\begin{command}
+\cmd{pdfbookmark}\oarg{level}\marg{bookmark}\marg{anchor}
+\end{command}
+\Arg{bookmark} 为书签名称,\Arg{anchor} 为书签项使用的锚点(类似交叉引用的标签)。可选参数 \Arg{level} 为书签的层级,默认为 0。
+
+\cmdindex[hyperref]{texorpdfstring}
+章节命令里往往有 \LaTeX{} 命令甚至数学公式,而 PDF 书签是纯文本,对命令和公式的处理很困难,有出错的风险。
+\pkg{hyperref} 宏包已经为我们处理了许多常见命令,如 \cmd{LaTeX} 和字体命令 \cmd{textbf} 等,
+对于未被处理的命令或数学公式,就要在章节标题中使用如下命令,分别提供 \LaTeX{} 代码和 PDF 书签可用的纯文本:
+\begin{command}
+\cmd{texorpdfstring}\marg{\LaTeX{} code}\marg{PDF bookmark text}
+\end{command}
+比如在章节名称里使用公式 $E=mc^2$,而书签则使用纯文本形式的 \verb|E=mc^2|:
+\begin{verbatim}
+\section{质能公式 \texorpdfstring{$E=mc^2$}{E=mc\textasciicircum 2}}
+\end{verbatim}
+
+\subsection{PDF 文档属性}\label{subsec:pdf-settings}
+
+\pkg{hyperref} 宏包还提供了一些参数用于改变 PDF 文档的属性,部分见表 \ref{tbl:hyperref-settings}。
+
+
+\endinput