创建 BibTeX 样式格式化函数

创建 BibTeX 样式格式化函数

我想破解一个基于 的新 BibTeX 样式文件plain.bst,在其中我可以显示条目类型location中字段的值inproceedings。我已经开始如下:

  1. 我已将其添加location到块中定义的字段列表中ENTRY
  2. 在中,我只是在打印的位置之后FUNCTION{inproceedings}插入了一行。location outputbooktitle

这可行!但是,现在我只想将的值括location在括号中。我尝试定义一个FUNCTION{format.location},但我对 BibTeX 语言的理解不够好,无法做到这一点。对该函数有什么建议吗?我该如何在中调用它FUNCTION{inproceedings}

答案1

一个简单的解决方案可能是这样的:

FUNCTION {format.location}
{
  location empty$
    {}
    {"(" location * ")" *}
    if$
    output
}

该函数的工作原理如下:首先,它检查location条目 ( location empty$) 是否已给出。如果测试失败(即 有值location),则

  1. 它放到(堆栈上,
  2. 它放到location堆栈上,
  3. *将堆栈上的最后两个元素连接起来,并将结果放入堆栈。所以在这一步之后,我们有(<location>
  4. 放入)堆栈
  5. *将堆栈上的最后两个元素连接起来,并将结果放入堆栈。所以在这一步之后,我们有(<location>)

最后一步output检查当前状态,并包括适当的标点符号。

相关内容