引文列表:将版本、卷数、页码放在括号中

引文列表:将版本、卷数、页码放在括号中

我正在尝试定制一个.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 :=
}

并在代码中的卷和页数函数之前包含命令parensadd.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
}

希望能帮助到你! :)

相关内容