如何使用BibTeX按外观排序引用?


259

默认情况下(使用plain样式),BibTeX按字母顺序排列引用。

如何按文档中出现的顺序对引用进行排序?


36
有用的问题(已投票),但这不属于tex.stackexchange.com吗?
Chthonic Project 2014年

12
@ChthonicProject,我认为tex.stackexchange.com直到2010年才开始出现,这个问题是从2008年开始的。另外,这个问题太老了,无法移植,因此存在于此。
理查德·埃里克森

1
删除.aux和.bbl文件并重建
Emad Aghayi,

Answers:


195

这个问题有三个好的答案。

  • unsrt如果您对书目格式感到满意,请使用书目风格
  • 使用makebst (链接)工具设计自己的书目风格

和我个人的建议:

  • 使用biblatex(链接)。它是LaTeX世界中最完整,最灵活的书目工具。

使用biblatex,您将编写类似

\documentclass[12pt]{article}
\usepackage[sorting=none]{biblatex}
\bibliography{journals,phd-references} % Where journals.bib and phd-references.bib are BibTeX databases
\begin{document}
\cite{robertson2007}
\cite{earnshaw1842}
\printbibliography
\end{document}

2
biblatex软件包的一个明显优点是使我接受了这个答案,它允许使用TeX宏而不是怪异的BibTeX伏都教徒编辑参考样式。对于更快/更可靠的解决方案,其他软件包可能更好。
布伦丹

1
如果您使用的是biblatex,则需要添加。最好使用\ addbibresource代替\ bibliography。所以\addbibresource{journals.bib,phd-references.bib}
Custodio

126

更改

\bibliographystyle{plain}

\bibliographystyle{ieeetr}

然后重新构建几次,以替换使用普通样式时制作的.aux.bbl文件。

或者直接删除.aux.bbl文件并重建。

如果您使用MiKTeX,则无需下载任何其他内容。


4
谢谢!出色且简单的修复!
Antillar Maximus 2012年

大!感谢您的简单解决方案。
陛下

4
如果您要为ACM出版物撰写论文,那unsrt会比ieeetr后者更好,因为后者是针对格式略有不同的IEEE论文的。unsrtabbrv产生相同类型的格式。您可能需要看一下此链接
Ash Catchem

简单的答案就出现了!虽然威尔·罗伯逊Will Robertson)的以中心为biblatex中心的答案最终是LaTeX社区的前进之路,但LyX持续缺乏对它们的内置支持biblatex是一个巨大的(而且越来越令人尴尬的)障碍。提出这个问题已经八年了!我永远不会嘲笑LyX的开发人员优先事项。到了2016年。无人驾驶汽车和便携式超级计算机是一回事,但我们仍然保留在这里–与同样可执行的BibTeX耻辱石相连。
Cecil Curry

1
在Overleaf应用程序中不起作用。我通过overleaf.com/learn/how-to/Clearing_the_cache在Overleaf中将其删除,但无法解决问题。
Emad Aghayi

21

只是一个简短的注释-我正在使用带有Latex文件的目录中的plain.bst的修改版本;事实证明,按外观顺序排序是一个相对容易的更改;只需找到一段代码:

...
ITERATE {presort}

SORT
...

...并发表评论-我将其更改为:

...
%% % avoid sort:
%% ITERATE {presort}
%%
%% SORT
...

...然后,运行程序后bibtexpdflatexpdflatex-引文将由出现的顺序(即,他们将是未排序:))进行分类。

干杯!

编辑:刚刚意识到我写的实际上是@ChrisN的注释:“ 您可以编辑它以删除SORT命令吗?


18

我想到的最好的方法是使用unsrt样式,这似乎是一种经过调整的plain样式。即

\bibliographystyle{unsrt}
\bibliography{bibliography}

但是,如果我的风格不是默认样式,该怎么办?


4
如果您使用的是自定义BibTeX样式,是否可以对其进行编辑以删除SORT命令?
克里斯(ChrisN)

默认情况下,Wiki页面建议您使用纯文本。如果您不小心复制粘贴,将使用普通样式而不是unsrt样式。zh.wikibooks.org/wiki/LaTeX/Bibliography_Management
Andras Gyomrey

12

您回答了自己的问题- unsrt当您希望按出现顺序列出对ne的引用时,将使用该问题。

但是您可能还想看看natbib,这是一种非常灵活的引文包。我无法想象没有它。


7
natbib仅影响文档本身中\ cite命令的排版。话虽如此,它与unsrtnat.bst一起分发以达到原始海报所寻求的效果。(除非绝对稳定最重要,否则我现在建议在natbib上使用biblatex。)
罗伯逊

5

我对Bibtex(以及一般来说对Latex)还是陌生的,因此我想复活这个旧帖子,因为我在许多有关Latex中书目顺序的Google搜索查询中都发现了它。

我对此问题提供了更详细的答案,希望它可以帮助那里的一些新手面对与我相同的困难。

这是一个主要.tex文件的示例,在该文件中书目被称为:

\documentclass{article}
\begin{document}

So basically this is where the body of your document goes.

``FreeBSD is easy to install,'' said no one ever \cite{drugtrafficker88}.

``Yeah well at least I've got chicken,'' said Leeroy Jenkins \cite{goodenough04}.

\newpage
\bibliographystyle{ieeetr} % Use ieeetr to list refs in the order they're cited
\bibliography{references} % Or whatever your .bib file is called
\end{document}

...以及.bib文件本身的示例:

@ARTICLE{ goodenough04,
AUTHOR    = "G. D. Goodenough and others", 
TITLE     = "What it's like to have a sick-nasty last name",
JOURNAL   = "IEEE Trans. Geosci. Rem. Sens.",
YEAR      = "xxxx",
volume    = "xx",
number    = "xx",
pages     = "xx--xx"
}
@BOOK{ drugtrafficker88,
AUTHOR    = "G. Drugtrafficker", 
TITLE     = "What it's Like to Have a Misleading Last Name",
YEAR      = "xxxx",
PUBLISHER = "Harcourt Brace Jovanovich, Inc."
ADDRESS   = "The Florida Alps, FL, USA"
}

请注意,.bib文件中的引用以相反的顺序列出,但引用以本文中引用的顺序列出。

有关.bib文件格式的更多信息,请参见以下网址:http : //en.wikibooks.org/wiki/LaTeX/Bibliography_Management


3

我经常使用书目风格,natbib因为它为我们提供了非常完整的格式集和标签。


2

unsrt问题的格式。用于\bibliographystyle{ieeetr}按文献中的引用顺序获得引用。


您对格式的主张似乎与已接受(且被强烈反对)的答案相矛盾。你能澄清一下吗?
Zero3

0

数据工具包提供了一种通过任意标准对书目进行排序的好方法,方法是先将其转换为某种数据库格式。

简短示例,取自此处并发布以供记录:

\documentclass{article}

\usepackage{databib}

\begin{document}
% First argument is the name of new datatool database
% Second argument is list of .bib files
\DTLloadbbl{mybibdata}{acmtr}
% Sort database in order of year starting from most recent
\DTLsort{Year=descending}{mybibdata}
% Add citations
\nocite{*}

% Display bibliography
\DTLbibliography{mybibdata}
\end{document}

0

如果您正巧使用amsrefs它们,它们将覆盖以上所有内容-因此请注释掉:

\usepackage{amsrefs}


1
欢迎使用Stack Overflow!您的答案似乎并未真正回答所提出的问题。您的信息可能很有价值,但它可能更适合作为对其他答案之一的评论(一旦您已获得发表评论的必要声誉)。
Zero3

0

natbib与结合使用bibliographystyle{apa}。例如:

\begin{document}

The body of the document goes here...

\newpage

\bibliography{bibliography} % Or whatever you decided to call your .bib file 

\usepackage[round, comma, sort&compress ]{natbib} 

bibliographystyle{apa}
\end{document}

0

如果希望引文数量在文档中按顺序显示,请添加这些内容,这些引文只会在参考页中未排序:

\bibliographystyle{unsrt}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.