338

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

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

4

13 回答 13

263

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

  • 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}
于 2008-09-28T04:21:43.237 回答
165

改变

\bibliographystyle{plain}

\bibliographystyle{ieeetr}

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

或者干脆删除.aux.bbl文件并重建。

如果你使用 MiKTeX,你不需要额外下载任何东西。

于 2009-10-03T16:22:50.267 回答
24

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

\bibliographystyle{unsrt}
\bibliography{bibliography}

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

于 2008-09-27T22:36:37.247 回答
22

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

...
ITERATE {presort}

SORT
...

...并评论它 - 我把它变成:

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

...然后,在运行bibtex, pdflatex, pdflatex- 引文将按出现顺序排序(也就是说,它们将是未排序的 :) )。

干杯!

编辑:刚刚意识到我写的实际上是在@ChrisN 的评论中:“你能编辑它以删除 SORT 命令吗”;)

于 2011-07-03T10:23:29.840 回答
14

你回答了你自己的问题---unsrt当你想按出现顺序列出对 ne 的引用时使用。

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

于 2008-09-27T22:53:17.067 回答
6

我对 Bibtex(以及一般的 Latex)有点新,我想恢复这篇旧帖子,因为我发现它出现在我的许多关于在 Latex 中订购书目的谷歌搜索查询中。

我正在为这个问题提供一个更详细的答案,希望它可以帮助一些遇到和我一样困难的新手。

这是调用参考书目的主要 .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

于 2014-08-15T15:15:29.030 回答
3

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

于 2012-11-29T16:38:53.150 回答
2

问题unsrt是格式。用于\bibliographystyle{ieeetr}按文档中的引用顺序获取参考。

于 2009-04-26T06:56:07.487 回答
1

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

\bibliographystyle{unsrt}
于 2019-12-09T20:04:37.427 回答
1

我在背面使用了以下内容并按升序排列:

\usepackage{cite}

\bibliographystyle{unsrt}

于 2021-07-09T00:01:17.460 回答
0

datatool包提供了一种按任意标准对参考书目进行排序的好方法,方法是首先将其转换为某种数据库格式

简短示例,取自此处并张贴记录:

\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}
于 2013-05-28T08:42:29.560 回答
0

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

\usepackage{amsrefs}

于 2013-08-13T19:27:07.440 回答
0

natbibbibliographystyle{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}
于 2017-01-15T14:05:14.077 回答