【记录】Latex|解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题

参考:

  1. Sort References by Order of Appearance with LaTeX/BibTeX
  2. Ordering reference in bibTex - StackOverflow

问题描述

使用了 ACM-Reference-Format 之后,引用的顺序不符合原文的引用顺序了。

\bibliographystyle{ACM-Reference-Format}
\bibliography{my-bib}

实际上,

ACM-Reference-Format 旨在按作者姓氏的字母顺序对条目进行排序。
所以会出现这种情况。

网上其他的解决方案有使用 \bibliographystyle{unsrt} 的,但是这种解决方案除了会解决顺序问题,还会导致引用格式发生改变,并不好用。现搬运一下英文的解决方案,并给出针对本问题的专属解决方案。

解决方案 · 省流版

为了让它不排序,有三种方案(下文会讲别的,其实就是翻译一下原文),我采用了最简单的一种(直接照着做就行了百分百解决):

  1. 第一步:找到 ACM-Reference-Format.bst 文件,这是引用格式的设置。
    在这里插入图片描述

  2. Ctrl+F 搜索大写的 SORT,并锁定大小写,如下图所示:
    在这里插入图片描述

  3. 注释掉所有的 SORT,如下图所示:
    在这里插入图片描述

  4. 回到原文中,随便新增一个 \cite,然后重新编译即可。

解决方案 · 完整版《用LaTeX/BibTeX按出现顺序排序参考文献》

1. 概述

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

我们将首先定义 BibTeX 以及它为 LaTeX 环境带来了什么。接下来,我们将概述主要类型的参考文献样式以及如何应用它们。然后,我们将识别按照使用的参考文献样式的出现顺序对参考文献进行排序的方法。在本教程结束时,我们将能够按照出现顺序显示我们的 LaTeX 文档中的参考文献,同时使用最合适的样式。

2. LaTeX 和 BibTeX

LaTeX 是一种用于文档准备的软件程序,它使用编译过程和输入(具有 .tex 扩展名的源文件)。它是一种排版工具,接受包含一组指令的纯文本文件,并在将其转换为格式化文档之前将其转换为一个 .pdf 文件。通常,它用于撰写论文。但是,它也可以用于制作演示文稿或绘制图表。该软件生成一个 .pdf 文件,可在屏幕上显示,以及一个 .ps 文件,可在打印机上打印:

在这里插入图片描述

通常,在编写 LaTeX 文档时,我们需要在文档中引用其他人的工作。为此,我们介绍 BibTeX 作为一个与 LaTeX 配合使用的文献工具,帮助我们构建引文和参考文献。为此,我们需要创建一个具有 .bib 扩展名的单独文件。在这个文件中,所有的参考文献都以特定格式存储。BibTeX 文件中的每个条目都拥有一个用于在源 .tex 文件中显示它的唯一键:

在这里插入图片描述

现在,我们应该提到,对参考文献进行样式或格式化是需要考虑的重要方面,当在 LaTeX 文档中对参考文献进行排序时。而手动完成这个过程远非实际。在这种情况下,与 LaTeX 一起使用 BibTeX 是一个非常吸引人的解决方案。我们应该提到,选择参考文献样式在很多情况下会影响排序过程。这就是为什么在进行排序之前有必要对参考文献样式进行概述的原因。

接下来,我们将看到 BibTeX 系统引入了几种工具来管理引文的样式,并以一种有效的方式按出现顺序对它们进行排序,从而避免参考文献样式和排序之间可能存在的任何冲突。

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

假设我们已经下载了一个会议 LaTeX 模板来撰写论文。我们将找到以下典型的文件扩展名:

  • 输入文件的示例:document.tex
  • 样式文档文件:style.cls
  • 样式参考文献文件:styleBiblio.bst

正如我们之前提到的,我们需要在项目文件夹中创建一个包含参考文献源的文档文件,比如一个 bibFile_.bib_ 文件。然后,我们倾向于选择参考文献样式,它代表了文档的两个主要部分的格式。这两个部分分别代表了正文内容中的缩略引文(document.tex)和参考文献列表中的相应条目(bibFile.bib)。后者允许应用于多个科学领域中的各种样式。它们可以大致分为数字引用系统(温哥华)和文本引用系统(哈佛)。

我们如何样式化我们的参考文献始终取决于我们正在撰写的文档类型以及我们正在使用的模板。例如,如果我们正在撰写学术/科学论文,我们会注意到每个会议、期刊或机构都有自己的参考文献规则和样式。

接下来,我们将介绍 LaTeX 提供的两个主要包来样式化引用,即 Natbib 和 BibLaTeX 包。

3.1. 使用 Natbib 包进行样式化

Natbib 是 LaTeX 中的一个文献管理,它允许我们自定义引用。它提供了一套相当完整的格式。要实施该包,我们首先需要在 bibFile.bib 文件中插入引用条目。我们将在我们的 .bib 文件中使用三个引用来显示实施结果:

% ----- the bibFile.bib file -----

@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",
}

Then, we insert four code statements into the main document.tex file:

% ----- the document.tex file -----

\documentclass{article}

%% Imports the package natbib
\usepackage[square,numbers]{natbib}

%% Sets the bibliography style
\bibliographystyle{abbrvnat}

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

%% Prints a reference to the citation entry
Lorem ipsum dolor sit amet ... \cite{latexcompanion}. 
Nulla ... \cite{einstein} donec scelerisque semper rutrum. 
Nunc nec lacus in nisi \cite{cohen}.

%% Imports the "bibFile.bib" file containing the bibliography sources
\bibliography{bibFile}

\end{document}

输出的 .pdf 文件将以数字样式显示三个引用。正如我们所见,文档引用是按字母顺序排列的,基于引用键中的字母顺序:

在这里插入图片描述

Natbib 兼容标准的文献样式文件,例如 plain.bstharvardapalikechicagoastronauthordate 等。我们应该提到,该包提供了多种管理文本和作者-年份类型引用的方式,并为数字引用提供了样式文件,如 plainnatabbrvnatunsrtnat

此外,可以添加许多选项到 \usepackage 中。我们可以从值的列表中受益,例如 squarenumbers,分别用于启用方括号和数字引用。

3.2. 使用 BibLaTeX 包进行样式化

BibLaTeX 是一个完整而灵活的文献管理,它能够在最小的努力下实现对参考文献部分的高度自定义。要实现它,我们需要在导言部分指定 .bib 文件的位置。此外,我们不应忘记插入额外的 \printbibliography 命令来显示参考文献部分:

% in the preamble 
%-----------------------------------
\documentclass{article}

%% Imports the biblatex package
\usepackage[
backend=biber,
style=alphabetic,
sorting=ynt
]{biblatex}

%% Imports the bibliography file "bibFile.bib" containing the sources of the citations
\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}. 

%% Prints the list of cited references
\printbibliography

\end{document}

The citations in the output document are displayed with a textual style:

在这里插入图片描述

事实上,在导入 BibLaTeX 包时可以添加许多选项。它们应该放在方括号内,并用逗号分隔。例如,style 选项确定了参考文献和引文的样式。示例中的 “alphabetic” 值定义了一个作者-年份引用系统。至于 sorting 选项,它指定用于对参考文献条目进行排序的度量。这将是达到我们主要目标的关键。

在下一节中,让我们介绍三种按照出现顺序排序引用的不同方法。

4. 按照出现顺序排序引用

如果我们使用数字引用样式,LaTeX 将默认应用基于字母顺序的文献排序。为了按出现顺序排序,即引用按时间顺序显示,我们有三种可能的选择。

4.1. 选择特定的参考文献样式(unsrt

按出现顺序排序引用的最简单方法是使用一个已经采用“无排序”的参考文献样式。更具体地说,我们应该使用 unsrt 样式,而不是使用 plain 样式。后者会以数字格式打印引文,并自动按升序排列。

为了演示它,让我们使用上一节中的相同文件,即 document.tex 作为主文件,bibFile.bib 作为 BibTeX 数据库。我们的 document.tex 文件是一个基本文件,不使用特定的包如 Natbib 或 BibLaTeX 进行参考文献管理。我们所需要做的就是在 document.tex 文件的末尾,即 \end{document} 行之前插入代码行 \bibliographystyle{unsrt}

% in the preamble 
%-----------------------------------
\documentclass{article}

%-----------------------------------

\begin{document}

%% The added code line
\bibliographystyle{unsrt}

\bibliography{bibFile}
\end{document}

It is as simple as that, and our bibliography will be sorted by appearance:

在这里插入图片描述
然而,这种方法的问题在于格式方面。被迫使用特定样式以达到排序标准的限制了我们选择最方便的引文样式。unsrt 提供的格式并不适用于所有类型的文档。在学术写作的情况下,它与 ACM 出版物很合适。而如果我们为 IEEE 出版物撰写科学论文,理想情况下可以考虑 ieeetr 样式。

总的来说,在结合样式和排序时,我们应该考虑不包括排序的样式值。例如,如果我们使用 Natbib 包进行样式设置,那么满足条件的是 unsrtnat 样式值。

然而,如果我们对格式样式仍然不满意,让我们继续探索本教程的其余部分。我们可能会找到更好的选择,以便在解决排序问题的同时选择更广泛的参考文献样式。

4.2. 使用 Makebst 工具

Makebst 工具是一个 LaTeX ,它生成定制的参考文献样式。它允许我们设计自己的参考文献样式,同时管理排序偏好。对于这种替代方案,我们将在项目文件夹中有一个 .bst 文件,例如 plain.bst

在数字式参考文献样式的情况下,默认的排序(按字母顺序)将被执行。因此,我们需要访问 .bst 文件并查找包含 SORT 指令的代码片段,并将其注释掉。这样,就不会进行排序,这恰好意味着按出现顺序排序:

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

如果我们的 .bst 文件非常复杂,这在大多数情况下是真实的,或者如果我们没有使用这个工具进行参考文献样式设置,那么让我们考虑下一个用于引用排序的替代方案。

4.3. 使用 BibLaTeX 包工具

另一个可能的解决方案在于使用 BibLaTeX 包。正如我们在上一节中提到的,这个工具为我们提供了大量且灵活的参考文献样式选择。要将引用按时间顺序排列,我们所需做的就是在 \usepackage 行代码中定义选项 sorting=none。这将禁用按字母顺序排序,并显示基于出现顺序的排序。

这种方法的优点在于不限制格式选择。事实上,我们可以通过在上传 BibLaTeX 包时为选项 style 定义不同的值来更改参考文献的样式。许多数字引用的例子都可以找到,比如 chem-acsieeenaturenejm 等。我们只需要保持 sorting 选项的 none 值不变。

例如,我们可以将 “nature” 作为参考文献样式值:

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

输出的文档显示按出现顺序排序的数字引用。此外,我们可以清楚地注意到与之前示例相比,参考文献样式已经改变:

在这里插入图片描述

5. 结论

在本教程中,我们讨论了如何在 LaTeX 文档中按出现顺序对引用进行排序。此外,我们还介绍了几种与排序选项配合使用的参考文献样式管理工具。

  • 34
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shandianchengzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值