按第一作者排序参考文献列表(忽略其他作者),然后发布年份

按第一作者排序参考文献列表(忽略其他作者),然后发布年份

如何编辑 .bst 文件以仅按主要作者然后按出版年份对参考文献进行排序。大多数参考文献样式首先对所有作者进行排序。我尝试编辑 .bst 文件中的 FUNCTION {sort.format.names},但不熟悉语法。

答案1

我无法完全确定其中的逻辑,但我认为您已经找到了要编辑的正确函数。语法.bst有点……奇怪,但关键的几行plain.bst是:

  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    {
    ...
    }
  while$

(这是来自plain.bst——许多其他.bst文件都来自此)。我怀疑,作为一个快速破解,如果你将第一行替换为

#1 'numnames :=

那么函数只会循环一次,因此只会向排序键添加一个名称,这样就会得到您想要的效果。


为了让您了解发生了什么,BibTeX 的工作方式如下:

  1. ITERATE {presort}调用遍历所有要处理的条目,presort对每个条目调用该函数。presort您将看到,该函数定义了每个条目的魔法值sort.key$

  2. SORT调用按字母顺序对所有条目进行排序sort.key$

  3. 然后,该ITERATE函数(在 之后被调用两次SORT,在 中plain.bst)再次遍历每个条目,这次按其排序顺序。ITERATE{call.type$}调用实际上是写出文件,因为它根据需要.bbl调用函数article、 或或其他任何函数。inproceedings

有关此内容的权威文档位于文件中btxhak.pdf,该文件可能已存在于您的系统中,或者您可以找到在CTAN

相关内容