06_LaTeX之特色工具和功能
06_ 之特色工具和功能
本文主体内容来自一份 (不太) 简短的 LATEX2ε 介绍。
本文介绍一些特色的
参考文献和 工具
基本的参考文献和引用
\cite
命令用于在正文中引用参考文献:
\cite{<citation>}
<citation>
为引用的参考文献的标签,类似 \ref
里的参数;\cite
带一个可选参数,为引用的编号后加上额外的内容,如 \cite[page 22]{Paper2013}
可能得到形如 [13, page 22]
这样的引用。
参考文献由 \bibitem
开头,其后是参考文献本身的内容:
\begin{thebibliography}{<widest label>}
\bibitem[<item number>}{<citation>} ...
\end{thebibliography}
其中 <citation>
是 \cite
使用的文献标签,<item number>
自定义参考文献的序号,如果省略,则按自然排序给定序号。<widest label>
用以限制参考文献序号的宽度,如 99 意味着不超过两位数字。通常设定为与参考文献的数目一致。
在
以下为一个使用
\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}
数据库

其中 <type>
为文献的类别,如 <citation>
为 \cite
命令使用的文献标签。在<citation>
之后为条目里的各个字段,以 <key> = <value>
的形式组织。
在此简单列举学术论文里使用较多的
学术论文,必需字段有 , , , ; 可选字段包括 , , , 等; 书籍,必需字段有 , , , ; 可选字段包括 , , 等; 论文集中的一篇,必需字段有 , , , , ; 可选字段包括 , , , , 等; 书中的一章,必需字段有 , , , , ; 可选字段包括 , , 等。
例如
@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}}
多数时候,我们无需自己手写
样式
参考文献的写法在不同文献里千差万别,包括作者、标题、年份等各项的顺序和字体样式、文献在列表中的排序规则等。
使用样式文件的方法是在源代码内(一般在导言区)使用\bibliographystyle
命令:
\bibliographystyle{<bst-name>}
这里 <bst-name>
为
以 上一小节给出的数据条目为例,使用 \bibliographystyle
命令选择不同的参考文献样式,效果大致如下表所示。

使用 排版参考文献
现在我们来看如何利用
第一步:准备一份
第二步:在源代码中添加必要的命令。假设源代码名为
\documentclass{article}
\bibliographystyle{plain}
\begin{document}
\section{Some words}
Some excellent books, for example, \cite{citation1} and \cite{citation2} \ldots
\bibliography{books}
\end{document}
-
首先需要使用命令
\bibliographystyle
设定参考文献的格式。 -
其次,在正文中引用参考文献。
程序在生成参考文献列表的时候,通常只列出用了\cite
命令引用的那些。如果需要列出未被引用的文献,则需要\nocite{<citation>}
命令;而\nocite{*}
则让所有未被引用的文献都列出。 -
再次,在需要列出参考文献的位置,使用
\bibliography
命令代替 环境:\bibliography{<bib-name>}
其中
<bib-name>
是 数据库的文件名,不要带 扩展名。
注意:\bibliographystyle
和 \bibliography
命令缺一不可,没有这两个命令,使用
第三步:写好了以上两个文件之后,就可以开始编译了。
- 首先使用
或 等命令编译 源代码 ; - 接下来用
命令处理 辅助文件记录的参考文献格式、引用条目等信息。 命令处理完毕后会生成 文件,内容就是一个\thebibliography
环境; - 再使用
或 等命令把源代码 编译两遍,读入参考文献并正确生成引用。
整个过程使用的命令如下(可以略去扩展名):
xelatex demo
bibtex demo
xelatex demo
xelatex demo
使用
宏包
时下许多学术期刊比较喜欢使用人名——年份的引用方式,形如(natbib
宏包提供了对这种“自然”引用方式的处理。
除了 \cite
之外,natbib
宏包在正文中支持两种引用方式:
\citep{<citation>}
\citet{<citation>}
它们分别生成形如(natbib
提供了与 natbib
,需要参考其帮助文档。
natbib
宏包同样也支持数字引用,并且支持将引用的序号压缩,例如:
\usepackage[numbers,sort&compress]{natbib}
调用 natbib
宏包时指定以上选项后,连续引用多篇文献时,会生成形如
natbib
宏包还有更多选项和用法,比如默认的引用是用小括号包裹的,可指定 \citep
命令也支持可选参数,为引用前后都添加额外内容。这里不再赘述,请参考 natbib
宏包的帮助文档。
宏包
本节的末尾简单介绍一下基于 biblatex
宏包排版参考文献的方式。biblatex
宏包是一套基于 biblatex
宏包也因其对 UTF-8 和中文参考文献的良好支持,被国内较多
基于 biblatex
宏包的方式与基于
文档结构和 biblatex
相关命令
- 首先是在导言区调用
biblatex
宏包。宏包支持以<key>=<value>
形式指定选项,包括参考文献样式 style、参考文献著录排序的规则 sorting 等。 - 接着在导言区使用
\addbibresource
命令为biblatex
引入参考文献数据库。与基于 的传统方式不同的是,这里需要写完整的文件名。 - 在正文中使用
\cite
命令引用参考文献。除此之外还可以使用丰富的命令达到不同的引用效果,如\citeauthor
和\citeyear
分别单独引用作者和年份,\textcite
和\parencite
分别类似natbib
宏包提供的\citet
和\citep
命令,以及脚注式引用\footcite
等。 - 最后在需要排版参考文献的位置使用命令
\printbibliography
。
编译方式
与基于 biblatex
宏包使用
xelatex demo
biber demo
xelatex demo
xelatex demo
% 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}
biblatex
样式和其它选项
biblatex
使用的参考文献样式分为著录样式(
% 同时调用 gb7714-2015.bbx 和 gb7714-2015.cbx
\usepackage[style=gb7714-2015]{biblatex}
% 著录样式调用 gb7714-2015.bbx,引用样式调用 biblatex 宏包自带的 authoryear
\usepackage[bibstyle=gb7714-2015,citestyle=authoryear]{biblatex}
以下总结一些常用的参考文献样式,除 biblatex
宏包自带的样式外,许多样式以单独的宏包在发行版内发布。
biblatex
自带样式,类似natbib
默认的引用样式效果。biblatex
自带样式,采用作者-题名(shorttitle 字段)的引用样式。biblatex
自带样式,引用样式中包含作者、题名、书名、页码等字段的信息。biblatex
自带样式,著录样式与 的 样式类似。biblatex-trad
样式包,移植自 默认的 样式。另外还包括 、 和 $\texttt{trad-unsrt}。 符合中文文献著录标准 GB/T 7714---2015 的样式,著录按顺序编码排版。另外还包括按作者—年份顺序排版著录的样式 。 以中文文献著录标准 GB/T 7714---2015 为基础的一个样式。 兼容IEEEtran
风格的样式,著录按顺序编码排版。另外还包括按作者—年份顺序排版著录的样式 。
索引和 工具
书籍和大文档通常用索引来归纳关键词,方便用户查阅。
使用 工具的方法
要使用索引,须经过这么几个步骤(仍设源代码名为
第一步,在 makeidx
宏包,并使用 \makeindex
命令开启索引的收集:
\usepackage{makeidx}
\makeindex
第二步,在正文中需要索引的地方使用 \index
命令。在需要输出索引的地方(如所有章节之后)使用 \printindex
命令。
第三步,编译过程:
- 首先用
等命令编译源代码 。编译过程中产生索引记录文件 ; - 用
程序处理 ,生成用于排版的索引列表文件 ; - 再次编译源代码
,正确生成索引列表。
索引项的写法
添加索引项的命令为:
\index{<index entry>}
其中 <index entry>
为索引项,写法由 下表 汇总。其中

读者可以钻研一下以下给出的一个较为复杂的,结合多级索引、索引格式、页码格式等的用法示例。但在自己使用时,最好还是遵循“简单的就是最好的”原则,尽量使用 上表 中的写法。
Test index.
\index{Test@\textsf{""Test}|(textbf}
\index{Test@\textsf{""Test}!sub@"|sub"||see{Test}}
\newpage
Test index.
\index{Test@\textsf{""Test}|)textbf}
使用颜色
原始的 color
宏包或者 xcolor
宏包提供了对颜色的支持,给 PDF 输出生成颜色的特殊指令。
颜色的表达方式
调用 color
或 xcolor
宏包后,我们就可以用如下命令切换颜色:
\color[<color-mode>]{<code>}
\color{<color-name>}
颜色的表达方式有两种,其一是使用色彩模型和色彩代码,代码用 color
宏包支持 xcolor
支持更多的模型如

其二是直接使用名称代表颜色,前提是已经定义了颜色名称(没定义的话会报错):

color
宏包仅定义了 8 种颜色名称,xcolor
补充了一些,总共有 19 种,见下表。

xcolor
还支持将颜色通过表达式混合或互补:

我们还可以通过命令自定义颜色名称,注意这里的 color-mode
是必选参数:
\definecolor{<color-name>}{<color-mode>}{<code>}
如果调用 color
或 xcolor
宏包时指定 xcolor
宏包还支持通过指定其它选项载入更多颜色名称。限于篇幅不展开介绍,详情请参考 xcolor
宏包的手册。
带颜色的文本和盒子
原始的 \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>}

\fcolorbox
也可以像 \fbox
那样调节 \fboxrule
和 \fboxsep
;对于 \colorbox
,调整 \fboxsep
是有效的。
使用超链接
hyperref
宏包。
hyperref
宏包
hyperref
宏包涉及的链接遍布 hyperref
宏包放在其它宏包之后调用。
与 graphicx
宏包类似,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}

使用 hyperref
宏包后,文档中所有的引用、参考文献、索引等等都转换为超链接。用户也可对某个 \label
命令定义的标签 <label>
作超链接(注意这里的 <label>
虽然是可选参数的形式,但通常是必填的:
\hyperref[<label>]{<text>}
默认的超链接在文字外边加上一个带颜色的边框(在打印 PDF 时边框不会打印),可指定
\hypersetup{hidelinks}
% or:
\hypersetup{pdfborder={0 0 0}}
PDF 书签
hyperref
宏包另一个强大的功能是为 PDF 生成书签。对于章节命令 \chapter
、\section
等,默认情况下会为 PDF 自动生成书签。和交叉引用、索引等类似,生成书签也需要多次编译源代码,第一次编译将书签记录写入
书签的一些属性见 上表。使用 CJK
宏包时,为了防止中文书签出现乱码,需要进行繁琐的设置;但在使用 ctex
宏包和文档类、且使用
hyperref
还提供了手动生成书签的命令:
\pdfbookmark[<level>]{<bookmark>}{<anchor>}
<bookmark>
为书签名称,<anchor>
为书签项使用的锚点(类似交叉引用的标签)。可选参数<level>
为书签的层级,默认为 0。
章节命令里往往有 hyperref
宏包已经为我们处理了许多常见命令,如 \LaTeX
和字体命令 \textbf
等,对于未被处理的命令或数学公式,就要在章节标题中使用如下命令,分别提供
\texorpdfstring{<LaTeX code>}{<PDF bookmark text>}
比如在章节名称里使用公式
\section{质能公式 \texorpdfstring{$E=mc^2$}{E=mc\textasciicircum 2}}
PDF 文档属性
hyperref
宏包还提供了一些参数用于改变 PDF 文档的属性,部分见 上表。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南