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

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

如何按文献中出现的顺序排列引文?

489577 次浏览

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

\bibliographystyle{unsrt}
\bibliography{bibliography}

但是,如果我的样式不是默认的呢?

你回答了你自己的问题——unsrt将用于当你想要引用ne时按出现顺序列出。

但你可能也想看看natbib,一个极其灵活的引用包。我无法想象没有它的生活。

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

  • 使用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}

对于unsrt,问题在于格式。使用\bibliographystyle{ieeetr}在文档中按引用顺序获取引用。

改变

\bibliographystyle{plain}

\bibliographystyle{ieeetr}

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

或者简单地删除.aux.bbl文件并重新构建。

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

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

...
ITERATE {presort}


SORT
...

... 并发表评论-我把它变成了:

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

... 然后,在运行bibtexpdflatexpdflatex之后,引用将按照出现的顺序排序(也就是说,它们将是无序的:))。

干杯!

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

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

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}

如果你碰巧使用amsrefs,它们将覆盖上述所有-所以注释掉:

\usepackage{amsrefs}

我对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

我将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}

如果你想要引用的数量在文档中按顺序出现,添加这个 它们只会在参考页中被未排序:

\bibliographystyle{unsrt}

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

\usepackage{cite}

\bibliographystyle{unsrt}