将单词“volume”添加到自定义 bst

将单词“volume”添加到自定义 bst

我正在编辑参考书目样式“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

相关内容