我基本上有和这里相同的问题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。