当第一作者相同时,使用 plainnat 书目样式按字母顺序对书目进行排序

当第一作者相同时,使用 plainnat 书目样式按字母顺序对书目进行排序

我有很多 Lionel Ho 和同事写的文章。我使用natbibpackage and plainnatstyle。当我编译时,参考书目没有按第二作者的姓氏排序。我该如何解决?

\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.bstchicago.bstplainnat.bstplainnat-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 愉快!

相关内容