根据第一作者的姓氏,然后是年份对书目条目进行排序,忽略任何其他作者

根据第一作者的姓氏,然后是年份对书目条目进行排序,忽略任何其他作者

我使用的是natbib和书目样式apalike。这对我来说看起来不错,但我的导师希望书目按照 1.) 第一作者的姓氏、2.) 年份排序。因此,如果我有几篇论文来自同一个第一作者,它们不应该按第二作者的名字排序,而应该按出版年份排序。

什么apalike

  1. 苹果、香蕉、梨 (2011)
  2. 苹果、梨、香蕉 (2009)

我想要的是

  1. 苹果、梨、香蕉 (2009)
  2. 苹果、香蕉、梨 (2011)

我怎样才能做到这一点?

答案1

我假设您的参考书目仅包含少数条目,其最终排序顺序取决于 (a) 标准排序(即基于所有作者的姓氏)或 (b) 您的主管的“特殊”排序(即仅基于第一作者的姓氏)是否有效。如果是这种情况,几乎肯定不值得任何人花时间修改文件apalike.bst。相反,我建议您按以下步骤操作:

  • 复制你的 bib 文件。例如,如果 bib 文件的名称为mybib.bib,则复制该文件并将其命名为mybib-harebrained-sorting-order.bib。(你能猜出我对你导师的要求有何看法吗?)

  • 将以下行添加到新的 bib 文件的顶部:

    @preamble{ "\providecommand{\noopsort}[1]{} " }
    

    就 LaTeX 而言,这个宏不执行任何操作;然而,正如我们接下来将看到的,它对分类目的. (因此也得名“noopsort”...)

  • 假设有以下两个条目涉及相同的三个作者(Apple、Banana 和 Pear):

    @misc{abp:2011,
      author = "Anna Apple and Bertha Banana and Petunia Pear",
      title  = "Further Thoughts",
      year   = 2011,
    }
    @misc{apb:2009,
      author = "Anna Apple and Petunia Pear and Bertha Banana",
      title  = "Thoughts",
      year   = 2009,
    }
    

    显然,如果“正常”排序(即基于所有作者的姓氏,然后是出版年份)有效,则该abp:2011条目将排在apb:2009条目之前。

  • 通过提供有针对性的指令来更改author两个条目的字段,\noopsort如下所示:

    @misc{abp:2011,
      author = "Anna Apple\noopsort{b} and Bertha Banana and Petunia Pear",
      title  = "Further Thoughts",
      year   = 2011,
    }
    @misc{apb:2009,
      author = "Anna Apple\noopsort{a} and Petunia Pear and Bertha Banana",
      title  = "Thoughts",
      year   = 2009,
    }
    

    \noopsort观察第一作者姓氏后面附加的两个指令。在 BibTeX 的分类阶段(但幸运的是,在稍后的 LaTeX 处理阶段不会发生这种情况...),两个条目的第一个作者的姓氏将分别被视为“Applea”和“Appleb”。因此,BibTeX 会认为它处理的是两个不同的姓氏。而且,由于“Applea”在“Appleb”之前,按字母顺序排列,apb:2009它将排在之前abp:2011

  • 保存新的 bib 文件,并将参考书目参数从 更改为mybibmybib-harebrained-sorting-order最后,请务必重新运行 LaTeX、BibTeX 和 LaTeX 两次,以完全传播对 bib 文件所做的所有更改。


完整 MWE 的输出:

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{mybib-harebrained-sorting-order.bib}
@preamble{ "\providecommand{\noopsort}[1]{} " }

@misc{abp:2011,
  author = "Anna Apple\noopsort{b} and Bertha Banana and Petunia Pear",
  title  = "Further Thoughts",
  year   = 2011,
}
@misc{apb:2009,
  author = "Anna Apple\noopsort{a} and Petunia Pear and Bertha Banana",
  title  = "Thoughts",
  year   = 2009,
}
\end{filecontents}

\documentclass{article}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalike}
\begin{document}
\nocite{*}
\bibliography{mybib-harebrained-sorting-order}
\end{document}

相关内容