1. 概述

在本教程中,我们将讨论如何在 LaTeX 文档中按照引用顺序对参考文献进行排序。

我们将从介绍 BibTeX 及其在 LaTeX 环境中的作用开始。接着,我们会介绍几种主要的参考文献样式类型以及如何应用它们。然后,我们将重点讲解如何根据当前使用的参考文献样式,实现按引用顺序排序。最终,我们可以在使用最适合自己的样式的同时,实现参考文献按出现顺序排列。

2. LaTeX 与 BibTeX

LaTeX 是一个文档排版系统,通过编译流程将 .tex 源文件转换为格式化的 PDF 或 PS 文件。它广泛用于论文写作,也可用于制作演示文稿或绘制图表

latex compilation

在撰写 LaTeX 文档时,我们通常需要引用他人的研究成果。为此,BibTeX 提供了一种结构化的方式来管理引用和生成参考文献列表。我们只需创建一个 .bib 文件,将所有参考文献条目按特定格式存储,每个条目都有一个唯一的键用于在 .tex 文件中引用:

Bibtex reference

需要注意的是,参考文献的样式(格式)在排序过程中起着关键作用。手动调整样式和排序非常低效。使用 BibTeX 与 LaTeX 配合是一个非常高效的选择。接下来,我们将介绍如何使用 BibTeX 管理样式并实现按引用顺序排序。

3. 使用 LaTeX 进行参考文献样式设置

假设我们下载了一个会议论文的 LaTeX 模板,通常会看到以下几种文件:

  • 主文档:document.tex
  • 样式定义:style.cls
  • 参考文献样式:styleBiblio.bst
  • 参考文献数据库:bibFile.bib

LaTeX 提供了两种主要方式来管理参考文献样式:NatbibBibLaTeX

3.1. 使用 Natbib 包设置样式

Natbib 是一个常用的参考文献管理包,支持多种引用格式。要使用它,首先在 .bib 文件中添加参考文献条目,例如:

% ----- bibFile.bib -----

@article{einstein,
  author =       "Albert Einstein",
  title =        "On the electrodynamics of moving bodies",
  journal =      "Annalen der Physik",
  volume =       "322",
  number =       "10",
  pages =        "891--921",
  year =         "1905"
}

@book{latexcompanion,
    author    = "Michel Goossens and Frank Mittelbach and Alexander Samarin",
    title     = "The \LaTeX\ Companion",
    year      = "1993",
    publisher = "Addison-Wesley",
    address   = "Reading, Massachusetts"
}
 
@article{cohen,
  author   = "P. J. Cohen",
  title    = "The independence of the continuum hypothesis",
  journal  = "Proceedings of the National Academy of Sciences",
  year     = 1963,
  volume   = "50",
  number   = "6",
  pages    = "1143--1148",
}

接着在主文档中添加如下代码:

% ----- document.tex -----

\documentclass{article}
\usepackage[square,numbers]{natbib}
\bibliographystyle{abbrvnat}

\title{An Article Title}
\begin{document}
\maketitle

Lorem ipsum dolor sit amet ... \cite{latexcompanion}. 
Nulla ... \cite{einstein} donec scelerisque semper rutrum. 
Nunc nec lacus in nisi \cite{cohen}.

\bibliography{bibFile}
\end{document}

输出效果如下图所示,参考文献默认按引用键的字母顺序排序:

natbib package

Natbib 支持多种样式文件,如 plain.bst, harvard, apalike 等,并提供了 plainnat, abbrvnat, unsrtnat 等用于数字引用的样式。

3.2. 使用 BibLaTeX 包设置样式

BibLaTeX 是一个功能更强大、可定制性更高的参考文献管理工具。它通过 backend=biber 提供更灵活的支持。示例代码如下:

\documentclass{article}
\usepackage[
  backend=biber,
  style=alphabetic,
  sorting=ynt
]{biblatex}
\bibliography{bibFile}

\begin{document}

Lorem ipsum dolor sit amet ... \cite{latexcompanion}. 
Nulla ... \cite{einstein} donec scelerisque semper rutrum. 
Nunc nec lacus in nisi \cite{cohen}. 

\printbibliography
\end{document}

输出效果如下图所示,引用采用作者-年份格式:

biblatex package

BibLaTeX 的优势在于其高度可配置性。我们可以通过 sorting 参数控制排序方式,如 ynt 表示按年份+作者排序,none 表示按引用顺序排序。

4. 按引用顺序排序参考文献

默认情况下,LaTeX 使用字母顺序对参考文献进行排序。如果我们希望按引用顺序排序,有以下三种方法:

4.1. 使用 unsrt 样式

最简单的方法是使用 unsrt 样式,它会按引用顺序输出数字编号的参考文献。

\bibliographystyle{unsrt}
\bibliography{bibFile}

输出效果如下图所示:

unsrt bibliography

⚠️ 缺点是样式受限,无法自由选择格式。例如,使用 Natbib 时应选择 unsrtnat

4.2. 使用 makebst 工具自定义样式

makebst 是一个用于生成自定义 .bst 样式文件的工具。我们可以通过修改 .bst 文件中的 SORT 指令来禁用排序:

% ----- plain.bst -----
%% ITERATE {presort}
%% SORT

SORT 注释掉即可实现按引用顺序排序。适合对 .bst 文件有一定了解的用户。

4.3. 使用 BibLaTeX 设置 sorting=none

这是最推荐的方法。只需在导入 biblatex 时设置 sorting=none,即可实现按引用顺序排序,同时保留任意样式。

\usepackage[sorting=none, style=nature]{biblatex}

✅ 优点:

  • 样式可自由选择(如 nature, ieee, chem-acs 等)
  • 排序方式可控(none 表示按引用顺序)

输出效果如下图所示:

bibtex

5. 总结

在本教程中,我们介绍了如何在 LaTeX 文档中实现参考文献按引用顺序排序。我们讨论了三种主要方法:

方法 工具 排序方式 样式自由度
✅ 方法一 unsrt 样式 按引用顺序 ❌ 有限
⚠️ 方法二 makebst 工具 自定义排序 ✅ 高
✅ 方法三 biblatex 按引用顺序 (sorting=none) ✅ 高

📌 推荐使用 **BibLaTeX + sorting=none**,既灵活又强大,适合大多数 LaTeX 用户。


原始标题:Sort References by Order of Appearance with LaTeX/BibTeX