在 plainnat 或

在 plainnat 或

我基本上有和这里相同的问题1- 我使用 bibentry 在文档中包含参考文献,需要隐藏年份后的字母。我使用 plainnat 以便显示 doi,但无法弄清楚如何更改 bst 文件。我也尝试创建自己的 bst 文件,但没有选项可以隐藏多余的字母(使用 makebst),当我尝试修改该样式时也遇到了同样的问题。

我尝试修改 bst 文件的这一部分

FUNCTION {format.date}
{ year duplicate$ empty$
    { "empty year in " cite$ * warning$
       pop$ "" }
    'skip$
  if$
  month empty$
    'skip$
    { month
      " " * swap$ *
    }
  if$
   extra.label *
}

通过删除extra.label标签 - 因此这些行将是

  if$
    *

虽然这会隐藏字母,但会导致页码和年份连在一起,因此

A. Smith and B. Jones. Title of article. Journal of something, 6:1 –7, 2016b. doi:12.2341/SR02734

变成

A. Smith and B. Jones. Title of article. Journal of something, 6:1 –72016. doi:12.2341/SR02734

我该如何解决这个问题?或者有没有适合 CV 等的 bibstyle,既没有多余的字母,又能打印 doi 信息?

答案1

我有两个建议。两者都是从复制文件plainnat.bst并命名副本开始,例如plainnat-nolab.bst。(不要直接编辑 TeX 发行版的原始文件。)

  • 注释掉从第 1392 行开始的三条指令plainnat-nolab.bst

     EXECUTE {initialize.longest.label}
    
     ITERATE {forward.pass}
    
     REVERSE {reverse.pass}
    

    这会略微加快 BibTeX 的处理速度,但也会使一些引用标注无法解决,即标记为?。但是,这对您来说可能并不重要,特别是如果您使用\nocite说明来激活 bib 文件中的各种条目。

  • 采取一种不太激进的方法,您可以注释掉(或只是删除)函数中的最后一行(在我的文件副本中为 l.429)format.date

       extra.label *
    

    (@moewe 在之前的评论中也提出了这个建议。)额外的标签将不再出现在格式化的 bib 条目中,但它们将继续显示在引用标注中——您并不关心,对吗?

无论使用哪种方法,请确保将文件保存plainnat-nolab.bst在包含主 tex 文件的目录中,更改为\bibliographystyle{plainnat}\bibliographystyle{plainnat-nolab}然后运行完整的重新编译循环:LaTeX、BibTeX,然后再运行两次 LaTeX。

相关内容