我正在尝试调整随附的 BibTeX 样式文件LNI LaTeX 模板真正匹配在指导方针来自同一个页(抱歉,与指南文档相反,带有链接的页面仅提供德语版本)。我以前从未研究过 BST 语言,因此很高兴能够轻松修改显示的名称数量和名称格式,但作者列表后的分隔符仍然是一个悬而未决的问题:
样式文件坚持使用命令add.period
在参考书目条目的每个部分后添加句号。但是,指南要求在作者姓名后添加冒号。
我暂时在各个模板函数中插入了冒号,一般结构如下:
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
并且output.check
是在同一 BST 文件中定义的通用函数。在其中的某个地方add.period
被调用。
不幸的是,如果我在之前或之后添加冒号new.block
,则会添加另一个句点后冒号,使得引用看起来像这样:
样本,S.;示例,E.:供您参考书目的示例论文。
显然,add.period
忽略了冒号(好吧,文档隐含地说明了这一点)。因此,我的想法是包装该add.period
函数(该函数在 BST 文件中只被调用了三次,因此用对包装函数的调用替换所有调用应该是可行的),该函数检查最后一个字符是否是冒号,如果是,则不执行任何操作,否则add.period
将调用该函数。
这是我的包装函数:
FUNCTION {safe.add.period}
{ 's :=
s s text.length$
#1 substring$
":" =
'skip$
{ s add.period$ 's := }
if$
s
}
它应该像这样工作:
- 从堆栈中取出最顶部的字符串并将其存储为
s
- 将该字符串及其长度放入堆栈
- 将这两个替换为字符串的最后一个字符
- 将该字符与冒号进行比较
- 如果比较返回 true,则不执行任何操作,否则调用
add.period
并将s
结果分配回s
- 放回
s
堆栈,就像add.period
纯
我已将 的所有三个调用替换add.period
为safe.add.period
,但现在所有句号都消失了。似乎add.period
从未被调用过。我做错了什么?