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

参考:

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

文章目录

    • 问题描述
    • 解决方案 · 省流版
    • 解决方案 · 完整版《用LaTeX/BibTeX按出现顺序排序参考文献》
      • 1. 概述
      • 2. LaTeX 和 BibTeX
      • 3. 使用 LaTeX 进行参考文献样式化
        • 3.1. 使用 Natbib 包进行样式化
        • 3.2. 使用 BibLaTeX 包进行样式化
      • 4. 按照出现顺序排序引用
        • 4.1. 选择特定的参考文献样式(_unsrt_)
        • 4.2. 使用 _Makebst_ 工具
        • 4.3. 使用 _BibLaTeX_ 包工具
      • 5. 结论

问题描述

使用了 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 文档中按出现顺序对引用进行排序。此外,我们还介绍了几种与排序选项配合使用的参考文献样式管理工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3017150.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

网站安全大揭秘:十大常见攻击方式与应对策略

随着互联网的普及,恶意内容攻击事件屡见不鲜。当一个网站遭遇恶意内容攻击时,不仅会影响用户体验,还可能对用户数据和隐私造成严重威胁,那么,网站都存在哪些形式的恶意攻击呢? 每种攻击的应对策略又是什么&…

PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM

本文首发于公众号:机器感知 PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM PTQ4SAM: Post-Training Quantization for Segment Anything Segment Anything Model (SAM) has achieved impressive performance in many computer vision tasks. Ho…

资源管理器CPU占用太高

最近资源管理器经常飙到80%-100%,所以电脑很卡。比如下面的新打开一个文件目录就这样 工具 shexview下载地址 排除 排序 先点Microsoft排序,上面粉色的就是所谓的外部插件 全部禁用 粉色全选->右键->Disable Selected Items (看其他…

PVZ2 植物克僵尸【第二期】

众所周知,PVZ2(植物大战僵尸2)中有许多恶心的僵尸,而我们不得不派出它们的————克星!(*为建议方法) 5.战机小鬼 战机小鬼,恶心会发射子弹,所以: 1&…

在Java中如何有效地处理内存泄露

在Java中,处理内存泄露有多种方法,以下是其中三种常见的方法及其原理和适用场景: ## 1. 合理使用垃圾回收机制 Java中的垃圾回收机制(Garbage Collection,GC)是一种自动化的内存管理技术,它可以…

Penpad再获 Presto Labs 投资,Scroll 生态持续扩张

​Penpad 是 Scroll 生态的 LaunchPad 平台,其整计划像收益聚合器以及 RWA 等功能于一体的综合性 Web3 平台拓展,该平台在近期频获资本市场关注,并获得了多个知名投资者/投资机构的支持。 截止到本文发布前,Penpad 已经获得了包括…

信息系统安全与对抗-网络侦查技术与网络扫描技术(期末复习)

1、网络拓扑结构在网络攻击中的作用 查明目标网络的拓扑结构,有利于找到目标网络的关键节点,从而提高攻击效率,达到最大攻击效果。 2、网络侦查在网络攻击中的作用 识别潜在目标系统,确认目标系统适合哪种类型的攻击。 3、百度…

Linux系统使用Docker安装青龙面板并实现远程访问管理面板

文章目录 一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用。本教程使用Docker部署青龙,如何安装Docker详见: 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 青龙…

latex参考文献引用网址,不显示网址问题

以引用UCI数据集为例 1、加入宏包 \usepackage{url} 2、在参考文献bib文件中加入网址文献 misc{UCI, author {{D. Dua, E. Karra Taniskidou}}, year {2024}, title {UCI Machine Learning Repository}, howpublished {\url{http://archive.ics.uci.edu/ml}} } 完成&#x…

WWW‘24 | 课程学习CL+模仿学习IL用于ETF及商品期货交易

WWW24 | 课程学习CL模仿学习IL用于ETF及商品期货交易 原创 QuantML QuantML 2024-05-04 13:47 论文地址:[2311.13326] Curriculum Learning and Imitation Learning for Model-free Control on Financial Time-series (arxiv.org) 本文探讨了在金融时间序列数据上…

自动引流获客软件的魅力

在数字化时代,企业之间的竞争愈发激烈。对于任何一家企业来说,如何有效地吸引潜在客户、提升品牌知名度和销售业绩成为了至关重要的课题。传统的营销手段虽然依旧有效,但随着互联网技术的发展,自动引流获客软件以其独特的魅力&…

欧式聚类提取-------PCL

欧式聚类 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> PclTool::euclideanClustering(const pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud) {std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> clustered_clouds;// 下采样pcl::Vox…

【修改版】测试下目录间距

文章目录 前言一、Java基础题1、Java语言的三大特性2、JDK 和 JRE 有什么区别3、Java基本数据类型及其封装类4、说明一下public static void main(String args[])这段声明里关键字的作用5、 与 equals 的区别6、Java语言的三大特性7、Java语言的三大特性8、Java语言的三大特性9…

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如一个场景…

表空间的创建

目录 表空间创建的语法 表空间创建的例子 创建一个永久性表空间&#xff0c;设置表空间初始大小为100MB&#xff0c;自动扩展为 100MB&#xff0c;无最大大小限制&#xff0c;并且该表空间为在线状态&#xff0c;产生日志 创建一个永久性表空间&#xff0c;通过本地化管理方…

JUC-synchronized练习-交替打印ABC

今天来练习一下synchronized 简单来利用synchronized实现一个字符串的交替打印 主要的实现设置一个全局的变量state&#xff0c;线程执行通过不断累加state&#xff0c;根据state对三取余的结果来判断该线程是否继续执行还是进入等待。并通过synchronized锁住一个共享变量loc…

JavaScript异步编程——03-Ajax传输json和XML

Ajax 传输 JSON JSON 的语法 JSON(JavaScript Object Notation)&#xff1a;是 ECMAScript 的子集。作用是进行数据的交换。语法更为简洁&#xff0c;网络传输、机器解析都更为迅速。 语法规则&#xff1a; 数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组…

Python-100-Days: Day11 Files and Exception

1.读取csv文件 读取文本文件时&#xff0c;需要在使用open函数时指定好带路径的文件名&#xff08;可以使用相对路径或绝对路径&#xff09;并将文件模式设置为r&#xff08;如果不指定&#xff0c;默认值也是r&#xff09;&#xff0c;然后通过encoding参数指定编码&#xf…

LTE的EARFCN和band之间的对应关系

一、通过EARFCN查询对应band 工作中经常遇到只知道EARFCN而需要计算band的情况&#xff0c;因此查了相关协议&#xff0c;找到了他们之间的对应关系&#xff0c;可以直接查表&#xff0c;非常方便。 具体见&#xff1a; 3GPP TS 36.101 5.7.3 Carrier frequency and EAR…

【ROMA核心特性数据、服务、消息、设备集成及统一运维】

1、数据集成 FDI旨在解决多种数据源的快速灵活集成能力&#xff0c;您可以在任意时间、任意地点、任意系统之间实现实时数据订阅和定时增量数据迁移。 &#xff08;1&#xff09;数据集成任务的生命周期管理 &#xff08;2&#xff09;FDI支持修改数据集成任务的信息、查看数…