我的参考书目字母顺序有问题,这不是 .bib 文件的问题,而是 .bbl 文件的生成方式的问题。让我通过一个虚构的例子来解释这个问题。
想象一下,在我的 .bib 文件中我有以下两个条目:
@article{ABC14,
author = {Abel, A. and Barnett, B. and Conway, C.},
journal = {Journal 1},
title = {Title 1},
year = {2014}
}
@article{AD10,
author = {Abel, A. and Donald, D.},
journal = {Journal 2},
title = {Title 2},
year = {2010}
}
运行 bibtex 后,我获得一个 .bbl 文件,其中两个相应的条目是
\bibitem[Abel and Donald(2010)]{AD10}
A. Abel and D. Donald.
\newblock {Title 2}.
\newblock \emph{Journal 2}, 2010.
\bibitem[Abel et~al.(2014)Abel, Barnett, and Conway]{ABC14}
A. Abel, B. Barnett and C. Conway.
\newblock {Title 1}.
\newblock \emph{Journal 1}, 2014.
因此,这两篇文章在我的文章末尾的参考书目中以错误的字母顺序出现。我怀疑问题出在 .bst 文件的某个地方,特别是函数 FUNCTION {format.names} 中,该函数引入了“et al.”来代替完整的作者列表。无论如何,我该如何解决这个问题?
答案1
正如@UlrikeFischer 在评论中指出的那样,并且正如@Robert 在另一个答案中所证实的那样,如果具有相同第一作者的条目的引用键后面跟着“et al”(对于三个或更多作者)或只有一个(第二)作者,那么plainnat
和abbrvnat
参考书目样式所采用的字母排序机制似乎会被打乱。
在该问题被软件包的作者/维护者修复之前natbib
,您必须使用\noopsort
以下示例中所示的设备。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{mybib.bib}
@preamble{ "\providecommand\noopsort[1]{}" }
@article{ABC14,
author = {Adrienne \noopsort{1}Abel and Bertha Barnett and Christine Conway},
journal = {Journal 1},
title = {Title 1},
year = {2014},
}
@article{AD10,
author = {Adrienne \noopsort{2}Abel and Deirdre Donald},
journal = {Journal 2},
title = {Title 2},
year = {2010},
}
\end{filecontents}
\bibliographystyle{abbrvnat}
\usepackage[round]{natbib}
\begin{document}
\nocite{*}
\bibliography{mybib}
\end{document}
答案2
此问题是由软件包的参考书目样式文件引起的。我可以用和natbib
重现此问题。在每种情况下,BibTeX 都会按缩短的作者列表对参考书目条目进行排序,而不是按参考书目中出现的完整作者列表进行排序。因此,在您的例子中,“Abel and Donald(2010)”位于“Abel et~al.(2014)”之前。此外,所有以 Abel 为第一作者的三作者论文实际上将按年份排序,而不是按作者姓名的字母顺序排序。plainnat
abbrvnat
我认为尚未有人发布针对该错误的修复程序。
一个公认的不太优雅但有效的解决方法是手动编辑 .bbl 文件,在文档的最终 LaTeX 生产运行之前修复与错误排序相关的任何问题。如果你选择这种方式,请确保不是在编辑 .bbl 文件后重新运行 BibTeX,因为这样做会覆盖您手动应用到 .bbl 文件的更正。