怎么写bst文件中完整的FUNCTION {format.names},使得最后一个作者前为&
时间: 2024-02-06 17:11:43 浏览: 49
下面是一个完整的 FUNCTION {format.names} 的例子,可以实现最后一个作者名字前加上 & 的效果:
```
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
", " *
s nameptr "{ll}" format.name$ " \& " *
t *
}
if$
}
{ t * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
```
在这个例子中,我们首先定义了一个变量 `s` 来存储作者列表的字符串,然后定义了变量 `nameptr` 来追踪当前处理的作者的编号,变量 `numnames` 来存储作者的总数,以及变量 `namesleft` 来存储还剩下多少个作者没有处理。
在 while 循环中,我们依次处理每个作者的名字,通过 `format.name$` 函数将其格式化成 `{f.~}{vv~}{ll}{, jj}` 的格式,并将结果存储在变量 `t` 中。然后根据当前处理的作者是不是最后一个作者,来决定是否在最后一个作者前加上 `"\&"` 字符串,最后将格式化好的作者名字和之前的结果 `t` 进行合并,并将结果存储在变量 `t` 中。
最后,我们使用 `while$` 循环来迭代处理所有的作者,将得到的结果输出。这样,我们就能够实现在最后一个作者前加上 `"\&"` 字符串的效果。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)