如何编辑 .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 的工作方式如下:
该
ITERATE {presort}
调用遍历所有要处理的条目,presort
对每个条目调用该函数。presort
您将看到,该函数定义了每个条目的魔法值sort.key$
。该
SORT
调用按字母顺序对所有条目进行排序sort.key$
。然后,该
ITERATE
函数(在 之后被调用两次SORT
,在 中plain.bst
)再次遍历每个条目,这次按其排序顺序。ITERATE{call.type$}
调用实际上是写出文件,因为它根据需要.bbl
调用函数article
、 或或其他任何函数。inproceedings
有关此内容的权威文档位于文件中btxhak.pdf
,该文件可能已存在于您的系统中,或者您可以找到在CTAN。