LaTeX参考文献模板 BST语法

BST表达式语法

变量前要加上',比如表示变量A:’A

BST语法是逆波兰表达式,即后缀表达式。 A B + 的含义是A+B,遇到符号,就把栈顶的两个元素拿出来做运算再压回栈内。

部分语法可见连接:关于修改.bst文件(bibtex模板)的几点说明 - 简书 (jianshu.com)

if条件判断

1
2
3
4
condition
{function1} % function1是条件为真时的逻辑
{function2} % function2是条件为false的逻辑。
if$

if的示例见链接:通过修改bst文件手动设置LaTeX参考文献格式 | Weitang Li’s blog (liwt31.github.io)

示例:

自己用过的一个示例,

中文文献,超过3个人名时,用小明,小红,小白等,等前面不用逗号,

英文文献,超过3个人名时,用Tom,Alice,Bob, et al,et al前面要有逗号。

1
2
3
4
5
6
7
8
9
language empty$       %增加判断语句,判断中文文献还是英文文献
{ punc.comma *
bbl.etal *
num.names 'idx.names :=
}
{ bbl.etal * % 中文作者数量超限时,等字前面没有逗号。
num.names 'idx.names :=
}
if$

while循环

1
2
3
{condition}
{function} %条件为真时的逻辑
while$

BST内置函数

一般以$结尾的大部分是内置函数

示例:

num.names$ 弹出堆栈最上层的字符串,计算其中的人名的个数,其中每出现一个 “and” (忽略大小写),并之前有非空的字符,则计数加一。最后将结果压入堆栈。

empty$ 弹出堆栈最上层的一个元素,如果它是空白字符串或没有内容,压入 1 至堆栈;否则,压入 0 。

format.name$ 弹出堆栈最上层的三个元素,分别是字符串,整数,字符串。第一个字符串代表一个名字列表(人名),第二个整数表示将列表中哪一个人名提出,最后一个字符串代表如何进行格式化。最后将格式化后的人名结果压回堆栈。

更多内部函数见链接:BibTeX 定制自己的参考文献模板 bst_Xue Shengke 博客-CSDN博客

人名格式化

参考链接:latex写姓名_Latex中bibtex的命名_weixin_39713686的博客-CSDN博客