我正在调整自定义的 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 的要求。