如何更改 bst 文件中 @incollection 字段中单词 eds. 的顺序?

如何更改 bst 文件中 @incollection 字段中单词 eds. 的顺序?

我正在调整自定义的 bst 文件,但遇到了这个问题。我希望 eds. 一词出现在编辑姓名之前,而不是之后。

我越来越

Saalfeld, Thomas。2000 年。“德国:稳定的政党、总理民主和非正式解决的艺术。”《西欧联合政府》,Wolfgang C. Muller 和 Kaare Strøm 编,第 32-85 页,牛津:牛津大学出版社。

但应该

Saalfeld, Thomas。2000 年。“德国:稳定的政党、总理民主和非正式解决的艺术。”《西欧联合政府》,Wolfgang C. Muller 和 Kaare Strøm 编,第 32-85 页,牛津:牛津大学出版社。

bst 文件中与此相关的函数是

FUNCTION {format.in.ed.booktitle}
{ format.booktitle duplicate$ empty$ 'skip$
  {
  format.bvolume duplicate$ empty$ 'pop$
    { ", " swap$ * * }
  if$
  editor "editor" format.names.ed duplicate$ empty$ 'pop$
    {
      get.bbl.editor
      swap$ "," *
      " " * swap$ *
      swap$
      "," *
      " " * swap$
      * }
  if$
  word.in swap$ *
  }
  if$
  }

添加单词 ed 的函数是 get.bbl.editor,但我无法改变它出现的顺序。

有人知道该怎么做吗?或者我可以在序言中使用宏来做到这一点吗?

编辑:

这是我的 bibtex 条目

@incollection{saalfeld:2000,
address = {Oxford},
author = {Saalfeld, Thomas},
booktitle = {Coalition Governments in Western Europe},
editor = {M\"{u}ller, Wolfgang C. and Str{\o}m, Kaare},
pages = {32--85},
publisher = {Oxford University Press},
title = {{Germany: Stable parties, Chancellor Democracy, and the Art of Informal Settlement}},
year = {2000}
}

答案1

上述方法的另一种方法是使用嗜酒作为 BibTeX 的替代品,这样人们就可以使用易于理解的样式模板,而不是 BibTeX 基于堆栈的语言的细节。使用 OP 的示例,我们有数据库文件

@incollection{mycitekey,
  author = {Thomas Saalfeld},
  year = {2000},
  title = {Germany: Stable parties, Chancellor Democracy, and the Art of Informal Settlement},
  booktitle = {Coalition Governments in Western Europe},
  editor = {Wolfgang C. Muller and Kaare Str{\o}m},
  pages = {32-85},
  publisher = {Oxford University Press},
  address = {Oxford}
}

使用模板文件

TEMPLATES:
incollection = <au>. <year>. \enquote{<title>.} In <booktitle>, [<nothing.if_singular(editorlist, edmsg1, edmsg2)>~<ed>], [pages~<startpage>--<endpage>|page~<startpage>|<eid>|], <address>: <publisher>.

SPECIAL-TEMPLATES:
citelabel = <citenum>
sortkey = <citenum>
authorlist = <author.to_namelist()>
editorlist = <editor.to_namelist()>
authorname.n = [<authorlist.n.prefix> ]<authorlist.n.last>[, <authorlist.n.suffix>][, <authorlist.n.first>][ <authorlist.n.middle.initial()>.]
au = <authorname.0>, ...,{ and }<authorname.9>
editorname.n = [<editorlist.n.first> ][<editorlist.n.middle.initial()>. ][<editorlist.n.prefix> ] <editorlist.n.last>[, <editorlist.n.suffix>]
ed = <editorname.0>, ...,{ and }<editorname.3>
nothing = {}

OPTIONS:
edmsg1 = ed.,
edmsg2 = eds.,

我们获得格式化的参考列表

在此处输入图片描述

请注意,在incollection样式模板文件中的模板中,变量<nothing.if_singular(editorlist, edmsg1, edmsg2)>是插入“ed.”(如果只有一个编辑器)或“eds.”(如果有多个编辑器)的变量。因此,将此变量移动到模板的其他位置可以实现 OP 的要求。

相关内容