我正在尝试引用没有卷号的在线期刊:
@article{Meusy2002,
url = {https://doi.org/10.4000/1895.219},
title = {Lorsque l’orgue s’invita au cinéma},
author = {Jean-Jacques Meusy},
journal = {1895. Mille huit cent quatre-vingt-quinze},
number = {38},
year = {2002},
}
根据我需要遵循的风格指南,这应该是这样的:
Meusy, Jean-Jacques, 2002, 《当管弦乐队邀请我去电影院时》1895. 千分之四十九,第 38 号,https://doi.org/10.4000/1895.219。
我已经能够使用提供的简单解决方案实现这一点这里。但是,我必须遵循的样式指南要求,具有卷号的条目在其前面加上“vol”。(卷号和卷号前缀分别在自定义 .bst 文件中定义,使用
FUNCTION {bbl.volume}
{ "vol." }
和 bbl.nr 的等价物);因此,假设的例子:
Meusy, Jean-Jacques, 2002, 《当管弦乐队邀请我去电影院时》1895. 千分之四十九, 第卷1,没有。 38岁,https://doi.org/10.4000/1895.219。
采用我链接到的解决方案,这似乎不起作用,因为我在这种假设情况下得到的输出是:
Meusy, Jean-Jacques, 2002, 《当管弦乐队邀请我去电影院时》1895. 千分之四十九,1,第38号,https://doi.org/10.4000/1895.219。
我尝试了链接解决方案与默认 makebst 代码的各种改编/组合,但到目前为止,我最好的解决方案是
FUNCTION {format.vol.num.pages}
{ volume field.or.null
duplicate$ empty$ 'skip$
{
bbl.volume swap$ tie.or.space.prefix
"volume" bibinfo.check
* *
}
if$
number empty$
'skip$
{ bbl.nr * number * }
if$
}
这让我几乎到达那里;但我不知道如何在两个元素之间添加所需的逗号和空格:
Meusy, Jean-Jacques, 2002, 《当管弦乐队邀请我去电影院时》1895. 千分之四十九,第 1 卷,第 38 期,https://doi.org/10.4000/1895.219。
谢谢!
答案1
找到了!(适用于所有四种可能的变体:音量和数字都存在;只有音量;只有数字;当然如果两者都不存在)
如果有人遇到这样的事情;解决我的问题的方法很简单:
FUNCTION {format.vol.num.pages}
{ volume field.or.null
duplicate$ empty$ 'skip$
{
bbl.volume swap$ tie.or.space.prefix
"volume" bibinfo.check
* *
}
if$
volume empty$
number empty$
or
'skip$
{ ", " * }
if$
number empty$
'skip$
{ bbl.nr * number * }
if$
}
这与我之前的最佳解决方案之间的关键区别在于中间的小检查,这需要我对 bst 文件的语法有一些基本的了解。我建议这和这如果你像我一样不熟悉 bst,但至少有一些基本的编码知识。