使用makebst
例程,我创建了一个 bst 文件,该文件基本符合我的需要,唯一的例外是条目incollection
。目前,参考文献的编译方式如下:
尽管如此,参考样式应该是这样的:
所以有三个不同点。(eds)应该在编辑姓名后面,其次,我需要删除最后一位编辑后面的最后一个逗号,最后在出版商位置之后和页码之前,应该有一个分号而不是逗号。
以下是包含用于复制的完整 bst 文件的 Gist 链接:https://gist.github.com/anonymous/d2c33f3ecc03f5f52109d4d291b68013
这是incollection
我的 bst 文件中的函数:
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
author format.key output
format.date "year" output.check
date.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.publisher.address output
format.bvolume output
format.number.series output
format.chapter.pages output
new.sentence
format.edition output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
format.note output
fin.entry
}
我发现需要调整的部分是format.in.ed.booktitle
:
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$
{
bbl.editors
" " * swap$ *
swap$
"" *
", " * swap$
* }
if$
word.in swap$ *
}
if$
}
其中bbl.editors
已重新定义了产品(编辑):
FUNCTION {bbl.editors}
{ "(eds)" }
此外,这里是确切的围兜条目:
@incollection{Greene2008,
address = {New York, NY},
author = {Greene, William},
booktitle = {The Measurement of Productive Efficiency and Productivity},
editor = {Fried, Harold O. and Lovell, C.A. Knox and Schmidt, Shelton S.},
pages = {92--250},
publisher = {Oxford University Press},
title = {{The Econometric Approach to Efficiency Analysis}},
year = {2008}
}
如果您需要任何进一步的代码片段或信息来回答这个问题,请告诉我,我们将非常感激您的帮助。
编辑:我意识到这可能是一个很难的问题,但如果有人能向我描述第二段代码中到底发生了什么,可能会有所帮助,因为我确信问题和解决方案就在这里。
答案1
经过几天的努力,我终于解决了这个问题。以下是修订后的部分,希望以后有人会对此感兴趣:
FUNCTION {format.in.ed.booktitle}
{ format.booktitle duplicate$ empty$ 'skip$
{
editor "editor" format.names.ed duplicate$ empty$ 'pop$
{
get.bbl.editor
swap$ "" *
" " * swap$ *
swap$
"," *
" " * swap$
* }
if$
word.in swap$ *
}
if$
}
也:
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
author format.key output
format.date "year" output.check
date.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
new.block
format.publisher.address output
new.block
format.bvolume output
format.number.series output
format.chapter.pages output
new.sentence
format.edition output
format.isbn output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
format.doi output
new.block
format.note output
fin.entry
}