我有很多 Lionel Ho 和同事写的文章。我使用natbib
package and plainnat
style。当我编译时,参考书目没有按第二作者的姓氏排序。我该如何解决?
\documentclass[10pt,a4paper]{article}
\usepackage[top=1cm,bottom=1cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[comma,authoryear,round,sort]{natbib}
\bibliographystyle{plainnat}
\setcitestyle{citesep={;},yysep={;}}
\begin{filecontents*}{\jobname.bib}
@Article{Ho2012,
author = {Ho, Lionel and Dreyfus, J. and Boyer, J. and Lowe, T. and Bustamante, H. and Duker, P. and Meli, T. and Newcombe, G.},
title = {Fate of...},
year = {2012},
}
@Article{Ho2007,
author = {Ho, Lionel and Hoefel, D. and Saint, C. P. and Newcombe, Gayle},
title = {Isolation...},
year = {2007},}
@Article{Ho2008,
author = {Ho, Lionel and Slyman, Najwa and Kaeding, Uwe and Newcombe, Gayle},
title = {Optimizing...},
year = {2008},}
\end{filecontents*}
\begin{document}
\citep{Ho2012,Ho2007,Ho2008}
\bibliography{\jobname}
\end{document}
结果:
我尝试删除该sort
选项
\usepackage[comma,authoryear,round]{natbib}
但结果是一样的
答案1
您的问题的快速修复可能遵循以下代码:
% start of bib file
@preamble{ " \providecommand{\noopsort[1]{}} " }
@Article{Ho2012,
author = {Ho, Lionel and Dreyfus, J. and Boyer, J. and Lowe, T. and Bustamante, H. and Duker, P. and Meli, T. and Newcombe, G.},
title = {Fate of...},
year = {\noopsort{c}2012},}
@Article{Ho2007,
author = {Ho, Lionel and Hoefel, D. and Saint, C. P. and Newcombe, Gayle},
title = {Isolation...},
year = {\noopsort{a}2007},}
@Article{Ho2008,
author = {Ho, Lionel and Slyman, Najwa and Kaeding, Uwe and Newcombe, Gayle},
title = {Optimizing...},
year = {\noopsort{b}2008},}
% bib file continues...
\noopsort
就 LaTeX 而言,该宏不执行任何操作,但它在 BibTeX 的操作中发挥着作用。基本上,BibTeX“看到”3 个条目,其中年份字段由“a2007”、“b2008”和“c2012”给出;猜猜它们是如何排序的。在 LaTeX 的后续处理过程中,“a”、“b”和“c”粒子会“消失”。
更彻底的修复方法是修改文件(副本),以确保根据所有作者的姓氏自动进行排序plainnat.bst
。我建议您按以下步骤操作:
在您的 TeX 发行版中找到文件
plainnat.bst
和。(您可能会问,为什么是?这是因为它是一种 bib 样式,恰好根据所有作者的姓氏进行排序。)复制一份并将副本命名为chicago.bst
chicago.bst
plainnat.bst
plainnat-mod.bst
。不要直接编辑 TeX 发行版的原始文件。plainnat-mod.bst
在文本编辑器中打开文件chicago.bst
。你用来编辑 tex 文件的程序就可以了。在文件
plainnat-mod.bst
和中chicago.bst
,找到名为的函数sort.format.names
。(在我的这些文件的副本中,该函数分别从第 1207 行和第 1407 行开始。)在文件中
plainnat-mod.bst
,删除函数的所有 29 行(1207 至 1235)sort.format.names
。将函数中的所有 21 行(1407 至 1427)复制并粘贴sort.format.names
到刚刚删除一堆行的chicago.bst
位置。plainnat-mod.bst
关闭文件
chicago.bst
,然后保存并关闭文件plainnat-mod.bst
。将后者文件保存在主 tex 文件所在的目录中或 BibTeX 搜索的目录中。如果选择后者,请确保适当更新 TeX 发行版的文件名数据库。在主 tex 文件中,将指令更改
\bibliographystyle{plainnat-mod}
为\bibliographystyle{plainnat}
。然后,执行完整的重新编译循环(latex、bibtex 和 latex 两次以上)以完全传播所有更改。
祝您 BibTeX 愉快!