如何抑制 abbrv.bst 中的某些字段

如何抑制 abbrv.bst 中的某些字段

我在 natbib 包下使用 abbrv 样式来编写参考书目。是否可以在输出中隐藏字段,例如“SERIES”?

这是我的 .bib 文件中的一个项目:

@book{GelfandVilenkin64GF4,
      AUTHOR = {Gel'fand, I. M. and Vilenkin, N. Ya.},
      TITLE = {Generalized functions. {V}ol. 4: {A}pplications of harmonic
          analysis},
      SERIES = {Translated by Amiel Feinstein},
      PUBLISHER = {Academic Press},
      ADDRESS = {New York },
      YEAR = {1964},
      PAGES = {xiv+384},
      MRCLASS = {46.00 (46.40)},
      MRNUMBER = {0173945 (30 \#4152)},
      MRREVIEWER = {J. L. B. Cooper},
    }

非常感谢!

答案1

您需要为此定义一种新样式。复制abbrv.bst到一个新文件,例如myabbrv.bst,并将其放在 TeX 可以找到的地方。使用编辑器打开它,并找到函数format.number.series。它应该看起来像这样:

FUNCTION {format.number.series}
{ volume empty$
    { number empty$
        { series field.or.null }
        { output.state mid.sentence =
            { "number" }
            { "Number" }
          if$
          number tie.or.space.connect
          series empty$
            { "there's a number but no series in " cite$ * warning$ }
            { " in " * series * }
          if$
        }
      if$
    }
    { "" }
  if$
}

将其替换为

FUNCTION {format.number.series}
{ volume empty$
    { number empty$
        { "" }
        { output.state mid.sentence =
            { "number" }
            { "Number" }
          if$
          number tie.or.space.connect
          series empty$
            { "there's a number but no series in " cite$ * warning$ }
            { " in " * series * }
          if$
        }
      if$
    }
    { "" }
  if$
}

即,我们删除写入 <series> 的部分。然后使用新样式myabbrv

由于您正在使用natbib,因此您也可以使用abbrvnat样式。在那里,类似的编辑会有所帮助,但是,还有另一种选择,即通过操作\bibinfo宏。

答案2

这是我的解决方案。这可能不是最好的方法。我将 abbrv.bst 复制到我的工作文件夹并将其更改为另一个名称:abbrv_mod.bst。然后删除 ENTRY 部分中的条目“series”:

ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
title
type
volume
year
}

然后在 tex 文件中使用以下命令:

\bibliographystyle{abbrv_mod}

相关内容