我使用的是natbib
和书目样式apalike
。这对我来说看起来不错,但我的导师希望书目按照 1.) 第一作者的姓氏、2.) 年份排序。因此,如果我有几篇论文来自同一个第一作者,它们不应该按第二作者的名字排序,而应该按出版年份排序。
什么apalike
是
- 苹果、香蕉、梨 (2011)
- 苹果、梨、香蕉 (2009)
我想要的是
- 苹果、梨、香蕉 (2009)
- 苹果、香蕉、梨 (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 文件,并将参考书目参数从 更改为
mybib
。mybib-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}