我正在尝试修改某个.bst
文件。目前,我可以破解该文件以获取以下条目的参考输出inbook
:
Jones, WP 1994. 变密度和燃烧流的湍流建模和数值求解方法,湍流反应流。收录于 Libby, PA 和 Williams, FA, (Eds.) 合著。Academic Press,伦敦,英国。第 309-374 页。
我唯一的问题是,如果你看上面,单词“In”后面有一个逗号。我知道这是因为我试图在文件中包含单词“In” .bst
。有人知道如何正确地做到这一点吗?这是我修改以获得“In”的代码。
FUNCTION {format.editors}
{ editor empty$
{ "" }
{
add.period$ " In" * editor format.names
editor num.names$ #1 >
{ ", " * bbl.editors * }
{ ", " * bbl.editor * }
if$
}
if$
}
inbook
这是入口的代码
FUNCTION {inbook}
{ output.bibitem
format.authors output.nonnull
new.block
format.date "year" output.check
new.sentence
format.chapter.pages "chapter and pages" output.check
format.btitle "title" output.check
crossref missing$
{ format.editors output
new.block
format.publisher
new.sentence
}
{ format.chapter.pages "chapter and pages" output.check
new.block
format.book.crossref output.nonnull
}
if$
format.edition output
new.sentence
format.pages output
new.block
note output
fin.entry
}
答案1
如果我理解正确的话,您想删除“In”和“Libby”之间的逗号:
Jones, WP 1994。变密度和燃烧流的湍流建模和数值解法,湍流反应流。在 Libby, PA 和 Williams, FA, (Eds.) 中。Academic Press,伦敦,英国。第 309-374 页。
如果是这样,这里是运算符的正确使用*
FUNCTION {format.editors}
{ editor empty$
{ "" }
{
add.period$ " In " editor format.names *
editor num.names$ #1 >
{ ", " * bbl.editors * }
{ ", " * bbl.editor * }
if$
}
if$
}
此外,字符串后还添加了空格" In"
。
stack
表达式中 :的解释
" In" * editor format.names
运算符*
连接editor
并," In"
然后使用 解析结果字符串format.names
,这会添加额外的逗号。在表达式中
" In " editor format.names *
运算符将命令和*
的结果连接起来。editor format.names
" In "