我在 Mac 上使用 TexShop,并使用 BibDesk 作为引文管理器。
这是我的问题的简短版本,如果你能回答,则无需继续阅读:我如何修改.bst
按作者排序,但当作者和年份都匹配时,按照文章中引用的顺序排序?
现在来看看更长的版本,其中包括 MWE。
以下是两个 MWE,错误发生在第二个中。在编写我的 MWE 时,我使用的所有代码均引用了我文章中出现的参考书目。
\documentclass{article}
\usepackage{natbib,url}
\bibpunct{(}{)}{;}{a}{ }{,}
\begin{document}
Minimal working example \citep{Author:2013}.
\newpage
\bibliographystyle{myapalike-url}
\bibliography{\string~/Desktop/Test}
\end{document}
打印结果如下:
最小工作示例(作者 2013)。
创建.bbl
的如下:
\begin{thebibliography}{}
\bibitem[{Author}, 2013]{author:2013}
{Author} (2013).
\newblock {Protected Sites Map}.
\newblock Available from:
\url{http://}
[Accessed 1 October 2013].
\end{thebibliography}
当我为该年份添加第二个参考文献时,尽管引用关键字不同,后缀仍然无效:
\documentclass{article}
\usepackage{natbib,url}
\bibpunct{(}{)}{;}{a}{ }{,}
\begin{document}
Minimal working example \citep{author:2013}.
And another \citep{author:2013b}.
\newpage
\bibliographystyle{myapalike-url}
\bibliography{\string~/Desktop/Test}
\end{document}
打印结果如下:
最小工作示例 (Author 2013b)。还有另一个 (Author 2013a)。
请注意,第一个引文之前打印为 (Author 2013),现已修改为 (Author 2013b)
现在.bbl
看起来像这样:
\begin{thebibliography}{}
\bibitem[Author, 2013a]{author:2013b}
Author (2013a).
\newblock {Eryri}.
\bibitem[Author, 2013b]{author:2013}
Author (2013b).
\newblock {Protected Sites Map}.
\end{thebibliography}
现在,我知道我正在使用我自己的myapalike-url.bst
,但那是因为我已经对其进行了编辑(非常小心且很少改变 URL)。
我还知道我可以使用 unsrtnat 之类的包,它使我的引文在文本中的显示顺序与输入顺序相同(即它不会混淆“a”和“b”后缀),但也会从完整参考书目中删除任何排序。这也让我认为.bbl
错误发生在文件的生成和排序过程中(而不是文件内的命令错误.tex
)。
当我处理这个问题时,我想我已经找到了问题所在,但我不知道如何解决它。引用 2013b 的标题是“Eryri”,而引用 2013a 的标题是“受保护的站点地图”。看起来,如果作者相同,它会检查年份,但如果年份相同,它会检查标题,然后按字母顺序排序。
所以问题是:我该如何修改.bst
以按作者排序,但是当作者和年份都匹配时,然后按照文章中引用的顺序排序?
编辑:
查看 .bst 文件内部,第 42-43 行显示以下内容:
% 24-jan-88 (OP) Updated for BibTeX version 0.99a, from alpha.bst 0.99a;
% apalike now sorts by author, then year, then title;
因此我想将其改为按作者排序,然后按年份排序,然后文章中调用的命令。我想你会同意,将对作者的第一次引用写为 2013b,将第二次引用写为 2013a,这完全是错误的。
答案1
不,这没错,如果参考书目的顺序是作者、年份、标题,这是标准的。BibTeX 在这里是正确的,没有必要尝试更改它。