我正在编辑参考书目样式“unsortnat”以满足会议要求。
他们要求我在引文末尾加上卷数和页数,年份后面跟着,例如:
S. Adhikari、MI Friswell、DJ Inman。从宽带随机振动中收集压电能量。第 18 卷,第 115005 页。
在函数中编辑 bst 文件
FUNCTION {format.vol.num.pages}
{ volume field.or.null
number empty$
'skip$
{ "{\ No.\ " number * "}" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ",~pp.~" * pages n.dashify * }
if$
}
if$
}
我明白了:
S. Adhikari、MI Friswell、DJ Inman。从宽带随机振动中收集压电能量。18,第 115005 页。
所需的输出,但没有“音量”一词,我不知道如何在最佳修改中添加它。
任何帮助都将不胜感激。
答案1
我猜你的意思是你正在修改unsrtnat.bst
。无论如何,你需要重写一下函数来添加这个字符串,因为第一行
volume field.or.null
当卷号不为空时,立即将其放入堆栈。以下是如何重写的建议:
FUNCTION {format.vol.num.pages}
{ volume empty$
{ number empty$
{ "" }
{ "\penalty0 (" number * ")" * *
"there's a number but no volume in " cite$ * warning$
}
if$
}
{ "Volume " volume *
number empty$
'skip$
{ "\penalty0 (" number * ")" * * }
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":\penalty0 " * pages n.dashify * }
if$
}
if$
}
逻辑是,我们
- 测试是否
volume
为空- 如果是,测试是否
number
为空- 如果是,则将空字符串添加到堆栈
- 否则,请在括号中提供编号信息,并警告没有卷号
- 如果
volume
不为空,则打印“Volume”和卷号,然后对是否number
非空进行类似的检查,这次不需要警告。 - 然后按照之前的方式处理页面信息。
- 如果是,测试是否
调用结果文件myunsrtnat.bst
并使用 tex 发行版中包含的标准xampl.bst
,结果如下
\documentclass{article}
\usepackage{natbib}
\begin{document}
\citet{article-minimal,article-full,whole-collection}
\bibliographystyle{myunsrtnat}
\bibliography{xampl}
\end{document}
第一个条目是没有卷或数量信息的文章,第二个条目是完整详细的文章,第三个条目是另一个没有这些字段的不同类型的条目。
这些\pentaly
来自 的最新版本unsrtnat.bst
。