我正在尝试定制一个.bst 文件,迫切需要一些帮助。
我有一个如下的引文:
在书名后面,我尝试将版本、卷数、编号和页码放在括号中。我可以单独添加括号 [例如,(第 14 卷),(第 207-262 页)],但不能将所有内容都放在一组括号中 [即,(第 14 卷,第 207-262 页)]。
此引用为“incollection”。
另外,有什么方法可以抑制之前出现的逗号吗?
所以它看起来像这样:...研究和理论的进展(第 14 卷,第 207-262 页)。纽约:Academic Press。
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
format.date "year" output.check
date.block
format.title "title" output.check
new.sentence
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.edition output
format.bvolume output
format.number.series output
format.chapter.pages output
new.sentence
format.publisher.address output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
format.note output
fin.entry
}
这是我的完整 .bst 文件:https://pastebin.com/ZQNx0P9U(太长了,无法在这里发布。)
这是 .bib 条目:
@incollection{RaaiShif80,
Address = {New York},
Author = {Raaijmakers, J. G. W. and Shiffrin, R. M.},
Booktitle = {The psychology of learning and motivation: Advances in research and theory},
Date-Added = {2014-09-10 12:47:36 +0000},
Date-Modified = {2014-09-10 12:47:54 +0000},
Editor = {G. H. Bower},
Pages = {207-262},
Publisher = {Academic Press},
Title = {{SAM: A} theory of probabilistic search of associative memory},
Volume = {14},
Year = {1980}}
还有一个示例 .tex 文件:\documentclass{article} \usepackage[english]{babel}
\begin{document}
\section*{Sample Citation}
This is a sample citation: \cite{RaaiShif80}.
\bibliographystyle{mybst.bst}
\bibliography{sample}
\end{document}
感谢您的帮助!
答案1
我有同样的问题,所以首先我创建这个函数来创建括号
FUNCTION {parens}
{ duplicate$ empty$
{ pop$ "" }
{ "(" swap$ * ")" * }
if$
}
但这仅适用于卷或页。我认为你应该创建一个包含卷和页的新格式。像这样:
FUNCTION {format.vol.pages}
{ volume field.or.null
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ", " * pages n.dashify * }
if$
}
if$
}
然后,你需要删除逗号。你需要创建另一个函数
FUNCTION {add.blank}
{ " " * before.all 'output.state :=
}
并在代码中的卷和页数函数之前包含命令parens
和add.blank
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
format.date "year" output.check
date.block
format.title "title" output.check
new.sentence
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.edition output
add.blank
format.vol.pages parens "volume and pages" output.check
format.number.series output
new.sentence
format.publisher.address output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
format.note output
fin.entry
}
希望能帮助到你! :)