这是一个温和的介绍,讲解了如何在 LaTeX 中使用一些比基本的 BibTeX 更复杂的文献功能。本介绍不会讨论如何创建新的样式或包,而是如何使用一些现有的样式。值得注意的是,哈佛(Harvard)样式是一个引用格式,它与按字母顺序排列、按日期次序的参考文献列表密切相关,但哈佛样式中唯一严格定义的元素是以“作者-日期”格式进行引用。

示例数据

我用于本示例的数据库仅包含以下内容:

@article{Erdos65,
    title = {Some very hard sums},
    journal = {Difficult Maths Today},
    author = {Paul Erd\H{o}s and Arend Heyting and Luitzen Egbertus Brouwer},
    year = {1930},
    pages = {30}
}

BibTeX 样式的局限性

使用 cite.sty 和 BibTeX 使得生成一些文献样式变得非常简单。但是,像作者-日期样式(例如通常提到但未定义的“哈佛样式”)并不那么容易。确实,您可以从 CTAN 下载一些 .bst 文件,它们可以处理一些变体,但使用它们并不总是非常直观。这个指南介绍了 Natbib,它是一个补充包,可以访问 .bib 文件,并提供用于生成自定义或默认的作者-年份格式引用和参考文献,以及 BibTeX 处理的数字样式的复杂功能。

Natbib

Natbib 是 Patrick Daly 创建的一个包,用于在需要作者-日期引用样式时替代 cite.sty 包。Natbib 提供了三种关联的文献样式:

  • plainnat

  • abbrvnat

  • unsrtnat

这些样式对应 BibTeX 中默认的三种样式:一种是简单的编号样式,一种是缩略的编号样式,另一种是无序的编号样式。

除了这些新的样式外,还提供了一组扩展的引用命令,允许灵活的引用格式。这些命令包括:

  • \citet[]{}

  • \citep[]{}

每个命令都有多个变体。

引言

所有 Natbib 样式都要求您在文档引言部分加载该包。所以,带有 Natbib 的 LaTeX 文件的骨架结构如下所示:

\documentclass[]{article}
\usepackage[round]{natbib}

\begin{document}

Document body text with citations.

\bibliographystyle{plainnat}
\bibliography{myrefs}

\end{document}

可选项

\usepackage 命令的方括号中可以指定 Natbib 的选项。常见的选项有:

选项 功能
round ()
square []
curly {}
angle <>
semicolon 用分号分隔引用
colon 用冒号分隔引用
comma 用逗号分隔引用
authoryear 作者-年份引用
numbers 数字引用
super 上标数字引用
sort 多个引用按参考文献中的顺序排序
sort&compress 排序并压缩数字范围
compress 压缩数字范围,但仅在“自然”排序时压缩
longnamesfirst 第一次引用显示完整作者列表,之后简写
sectionbib 支持文档中的多个参考文献列表
nonamebreak 强制将所有作者姓名放在一行显示
merge 合并引用
elide 去除合并引用中的重复元素
mcite 忽略合并

这些选项需要通过示例来解释,下面的例子将帮助您理解。

引用命令

基本引用命令

要使用 Natbib 引用文献,您需要在文档中使用 \citet\citep 命令。这些命令的“普通”版本会在多个作者的情况下生成缩略列表,但它们都有带 * 的变体,这会生成完整的作者列表。以下示例假设使用了 round 选项:

\citet\citet*

\citet 命令用于文本引用,即作者名称出现在文本中,而出版日期放在括号内。此命令可以接受章节、页码等选项。以下是几个示例:

\citet{Erdos65} % 结果为: Erdős et al. (1965)
\citet[chapter 2]{Erdos65} % 结果为: Erdős et al. (1965, chapter 2)
\citet[pp. 10-12]{Erdos65} % 结果为: Erdős et al. (1965, pp. 10-12)
\citet[see][chap. 2]{Erdos65} % 结果为: Erdős et al. (see 1965, chap. 2)

\citet* 版本

\citet*{Erdos65} % 结果为: Erdős, Heyting and Brouwer (1965)
\citet*[chapter 2]{Erdos65} % 结果为: Erdős, Heyting and Brouwer (1965, chapter 2)
\citet*[pp. 10-12]{Erdos65} % 结果为: Erdős, Heyting and Brouwer (1965, pp. 10-12)
\citet*[see][chap. 2]{Erdos65} % 结果为: Erdős, Heyting and Brouwer (see 1965, chap. 2)

\citep\citep*

\citep 命令用于将作者名称放在括号内,与出版日期一起出现。

\citep{Erdos65} % 结果为: (Erdős et al. 1965)
\citep[chapter 2]{Erdos65} % 结果为: (Erdős et al. 1965, chapter 2)
\citep[pp. 10-12]{Erdos65} % 结果为: (Erdős et al. 1965, pp. 10-12)
\citep[see][chap. 2]{Erdos65} % 结果为: (see Erdős et al. 1965, chap. 2)
\citep[e.g.][]{Erdos65} % 结果为: (e.g. Erdős et al. 1965)

\citep* 版本

\citep*{Erdos65} % 结果为: (Erdős, Heyting and Brouwer 1965)
\citep*[chapter 2]{Erdos65} % 结果为: (Erdős, Heyting and Brouwer 1965, chapter 2)
\citep*[pp. 10-12]{Erdos65} % 结果为: (Erdős , Heyting and Brouwer 1965, pp. 10-12)
\citep*[see][chap. 2]{Erdos65} % 结果为: (see Erdős , Heyting and Brouwer, 1965, chap. 2)
\citep*[e.g.][]{Erdos65} % 结果为: (e.g. Erdős , Heyting and Brouwer, 1965)

参考文献列表

在处理完基本引用变体后,我们来创建参考文献或参考文献列表。

使用 Natbib 插入正确格式的参考文献与使用普通的 BibTeX 没有什么不同。需要的两个基本命令是:

\bibliography{mybibliographydatabase}

LaTeX 会将此视为读取一个文献数据库文件(例如 myrefs.bib)并在此插入相关数据的指令。

\bibliographystyle{plainnat}

此命令指定如何呈现数据。

以上提到的三种基本的 Natbib 样式是 BibTeX 中部分同名样式的类似样式。我们可以想象,如上文关于引用的部分,文档中出现的引用将大致以 plainnat 样式呈现。

进一步的功能

这涵盖了 Natbib 提供的基本功能。若您无法找到所需的功能,可能需要研究 harvard.sty,它提供了一组略有不同的作者-日期引用功能。为 harvard.sty 提供一个温和的指南是我下一个雨天项目。


Last modified: Tuesday, 22 April 2025, 11:54 AM