6. 特色工具和功能 #
6.1 参考文献和 BibTeX 工具 #
引用命令决定正文中的引用形式,文献数据库保存资料,样式决定文末条目的格式。先确认模板使用哪一种工作流,再填写相应命令。
6.1.1 基本的参考文献和引用 #
最简单的文献列表不需要额外程序:
\documentclass[UTF8,fontset=fandol]{ctexart}
\begin{document}
TeX 的排版机制可参见文献~\cite{knuth1984}。
\begin{thebibliography}{9}
\bibitem{knuth1984}
Donald E. Knuth.
\emph{The TeXbook}.
Addison-Wesley, 1984.
\end{thebibliography}
\end{document}
编译两次,\bibitem 的标签与 \cite 对应。{9} 指定参考标签所需的宽度,不表示限制为 9 篇;两位数编号可用 {99}。
\cite[第 23 页]{knuth1984} 添加附注,\bibitem[Knuth84]{knuth1984} 自定义显示标签。条目的格式与排序都由作者手工维护,文献一多就不方便。
6.1.2 BibTeX 数据库 #
将文献存入 .bib 文件,可以更换样式而不重新填写全部条目。以下保存为项目中的 books.bib,供后面的完整例子使用:
@book{knuth1984,
author = {Knuth, Donald E.},
title = {The {TeX}book},
publisher = {Addison-Wesley},
year = {1984}
}
book 是条目类型,knuth1984 是唯一引用键。常见传统 BibTeX 类型包括:
| 类型 | 常见必要信息 |
|---|---|
article |
作者、题名、期刊 journal、年份。 |
book |
作者或编者、书名、出版社、年份。 |
incollection |
作者、篇名、论文集名 booktitle、出版社、年份。 |
inbook |
作者或编者、书名、章节或页码、出版社、年份。 |
多个作者用 and 分隔,而不是仅用逗号。机构作者可以额外套一层花括号;标题中的 {TeX} 等保护需要保留的大小写。
从文献网站或管理工具导出后仍要检查作者、页码、条目类型和重复引用键。.bib 常被称作“BibTeX 文件”,但也可以由后文的 Biber 处理。
6.1.3 BibTeX 样式 #
传统 BibTeX 使用 .bst 样式:
| 样式 | 基本特点 |
|---|---|
plain |
按作者等信息排序,数字标签。 |
unsrt |
按引用顺序排列,数字标签。 |
alpha |
使用作者名和年份组成的标签。 |
abbrv |
类似 plain,缩写名字等信息。 |
在导言区使用 \bibliographystyle{plain},不写 .bst 扩展名。期刊或学校提供样式时优先遵循模板,不要仅凭编号外观选择一个近似样式。
6.1.4 使用 BibTeX 排版参考文献 #
把下面内容保存为 main.tex,与前面的 books.bib 放在同一目录:
\documentclass[UTF8,fontset=fandol]{ctexart}
\bibliographystyle{plain}
\begin{document}
本文参考了文献~\cite{knuth1984}。
\bibliography{books}
\end{document}
\bibliography 放在文献列表出现的位置,不写 .bib 扩展名。本地编译顺序:
xelatex main.tex
bibtex main
xelatex main.tex
xelatex main.tex
第一次 LaTeX 写出 main.aux,BibTeX 读取引用和样式并生成 main.bbl,后两次编译完成列表和引用。
通常只列出正文引用过的文献。\nocite{knuth1984} 可把指定文献加入列表,\nocite{*} 则加入数据库全部条目。
6.1.5 natbib 宏包 #
natbib 为传统 BibTeX 增加作者—年份等引用形式:
% 导言区;替换原来的 bibliographystyle 设置
\usepackage[authoryear,round]{natbib}
\bibliographystyle{plainnat}
% 正文;仍使用 books.bib
\citet{knuth1984} 介绍了 TeX 的排版系统。
也可以使用括号引用 \citep{knuth1984}。
\citet 让作者名成为句子的一部分,\citep 生成括号式引用。plainnat、abbrvnat、unsrtnat 是与 natbib 配套的样式。
若模板要求数字引用,可选 numbers,sort&compress,用来排序和压缩连续编号。以上设置是不同方案,不要把两个带不同选项的 \usepackage{natbib} 同时写入导言区。
6.1.6 biblatex 宏包 #
biblatex 在 LaTeX 中管理格式,以 Biber 处理数据库,适合 Unicode 文献数据。它与传统 BibTeX 的命令和样式文件不同。
独立示例:中文文献。 将下列内容保存为 references.bib:
@book{caimin2006,
author = {蔡敏 and 徐慧慧 and 黄柄强},
title = {UML 基础和 Rose 建模教程},
location = {北京},
publisher = {人民邮电出版社},
date = {2006}
}
以下是与它配套的 main.tex:
\documentclass[UTF8,fontset=fandol]{ctexart}
\usepackage[backend=biber,style=gb7714-2015]{biblatex}
\addbibresource{references.bib}
\begin{document}
建模方法可参见文献~\cite{caimin2006}。
\printbibliography
\end{document}
这个示例使用 gb7714-2015 样式,需要安装提供该样式的 biblatex-gb7714-2015 宏包。样式名称指向特定规范版本;实际投稿使用什么版本,应按模板要求确认。
本地编译:
xelatex main.tex
biber main
xelatex main.tex
xelatex main.tex
\addbibresource 在导言区,文件名带 .bib;\printbibliography 在正文。Biber 参数是主文件的基本名称,不是 references.bib。
常见选项包括 style=numeric、style=authoryear、sorting=none。bibstyle 和 citestyle 可分别选择文献表与正文引用样式,对应 .bbx 和 .cbx,不能直接填传统的 .bst 文件。
\textcite、\parencite、\footcite 分别用于叙述式、括号式、脚注式引用;\citeauthor、\citeyear 只取作者或年份。具体标点和作者缩略方式由样式控制。
不要混用两套流程: natbib 与 biblatex 不应同时加载;选择 biblatex 后,不再保留 \bibliographystyle 和 \bibliography。在线编译若引用未解析,应查看日志中的 BibTeX/Biber 请求,而不是随意更换处理程序。
6.2 索引和 makeindex 工具 #
目录按章节组织内容,索引则按词条列出出现页码。
6.2.1 使用 makeindex 工具的方法 #
\documentclass[UTF8,fontset=fandol]{ctexart}
\usepackage{makeidx}
\makeindex
\begin{document}
矩阵\index{matrix}由行和列组成。
对角矩阵\index{matrix!diagonal}是一种特殊矩阵。
\clearpage
\printindex
\end{document}
\index 只登记词条,不输出正文中的词。编译流程为:
xelatex main.tex
makeindex main
xelatex main.tex
第一次编译产生 .idx,MakeIndex 生成 .ind,最后一次编译把索引排入 PDF。
6.2.2 索引项的写法 #
| 写法 | 作用 |
|---|---|
\index{matrix} |
普通词条。 |
\index{matrix!diagonal} |
子词条。 |
\index{alpha@$\alpha$} |
按 alpha 排序,显示数学符号。 |
\index{matrix|textbf} |
页码加粗。 |
\index{matrices|see{matrix}} |
“参见”条目。 |
\index{matrix|(}、\index{matrix|)} |
开始和结束页码范围。 |
!、@、| 是索引语法中的特殊字符,需原样输出时用双引号转义。将 \index 紧贴对应词语,避免多余空格。
上例使用英文排序键。中文词条的拼音或笔画排序需要额外方案,不能假定默认 MakeIndex 会自动完成。
6.3 使用颜色 #
6.3.1 颜色的表达方式 #
在导言区加载 xcolor。可用预定义名称、颜色模型或混色表达式:
% 导言区
\usepackage{xcolor}
\definecolor{accent}{RGB}{0,90,150}
rgb 的三个分量范围为 0–1,RGB 为 0–255;gray 表示灰度。blue!30 混入白色得到浅蓝,blue!50!black 将蓝与黑按比例混合,-red 表示互补色。
\color{accent} 是声明,影响后续内容;用分组限制范围。额外颜色名需按宏包选项加载,不是任何英文颜色词都能直接使用。
6.3.2 带颜色的文本和盒子 #
% 正文;导言区已加载 xcolor 并定义 accent
\textcolor{accent}{需要留意的结论。}
\colorbox{blue!8}{浅蓝色背景}
\fcolorbox{accent}{blue!5}{蓝色边框与浅色背景}
\colorbox 和 \fcolorbox 默认是水平盒子;长文字需要在内部放 \parbox 或 minipage。正文不要只靠颜色区分重要信息,还应有文字标签或其他可辨认形式。
6.4 使用超链接 #
6.4.1 hyperref 宏包 #
hyperref 为目录、引用、脚注和文献等添加链接。除其他宏包另有要求外,通常较晚加载:
% 导言区
\usepackage[hidelinks]{hyperref}
hidelinks 隐藏边框和颜色,但链接仍有效。若想使用彩色链接,可在已加载 xcolor 的情况下改用:
\hypersetup{
colorlinks=true,
linkcolor=blue!50!black,
citecolor=teal,
urlcolor=blue
}
不要为改变选项重复加载 hyperref。
6.4.2 超链接 #
\url{https://www.ctan.org/}
\href{https://www.ctan.org/}{访问 CTAN}
\url 显示并链接地址,\nolinkurl 只排版地址,\href 给文字添加链接。内部链接可以写 \hyperref[sec:method]{方法部分},前提是已定义该标签。
纸质文档无法点击链接,需要读者访问的网站应保留可读地址,而不是全部藏在“这里”二字后面。
6.4.3 PDF 书签 #
ctex 配合 XeLaTeX 和 hyperref 可以处理中文书签。目录与书签是不同的功能,但都可能需要多次编译。
标题里有公式时,为书签提供纯文本替代:
\section{质能关系 \texorpdfstring{$E=mc^2$}{E=mc2}}
\pdfbookmark[层级]{书签文字}{唯一锚点} 可手工添加书签。编译后应检查 PDF 的书签面板,不能只看页面上的标题。
6.4.4 PDF 文档属性 #
% 导言区,加载 hyperref 之后
\hypersetup{
pdftitle={实验记录},
pdfauthor={小林},
pdfsubject={测量与误差分析},
pdfkeywords={实验, 测量, LaTeX},
bookmarksopen=true
}
这些元数据不代替 \title、\author 和 \maketitle;它们供阅读器属性面板、检索等功能使用。