参考书目条目偶尔会包含多余的逗号

参考书目条目偶尔会包含多余的逗号

偶尔,我会看到使用 natbib 和 unsrtnat 样式的参考书目条目中插入了多余的逗号。为什么会发生这种情况?我该如何解决?

这是一个简单的例子:

\begin{filecontents*}{bibliography.bib}
@misc{bib1,
    title="{Title One}",
    url="https://dummyurl"
}
@misc{bib2,
    title="{Title Two}",
    url="https://dummyurl"
}
\end{filecontents*}

\documentclass[]{article}
\usepackage[numbers]{natbib}
\begin{document}

This is a citation.~\cite{bib1}

%%This is another citation.~\cite{bib2} %% <--- if this line is uncommented, both bib entries will have an extra comma after the title

\bibliographystyle{unsrtnat}
\bibliography{bibliography}

\end{document}

下面是我看到的截图:(左边显示 MWE 中注释掉的那一行的输出,右边显示取消注释后的输出)

在此处输入图片描述

答案1

这种行为源于unsrtnat在参考书目中区分不同条目的方式。以下内容可能不完整,但据我对 MWE 进行一些更改并查看生成的.bbl文件后所理解。

  1. 如果指定了作者,例如一个条目为“FirstNameA LastNameA”,另一个条目为“FirstNameB LastNameB”,则它们各自的标签LastNameA()LastNameB()
  2. 如果没有指定姓氏,则使用名字代替:FirstNameA()FirstNameB()
  3. 如果指定了日期,也会使用日期。这可以区分同一作者的条目,LastNameA(2019)例如LastNameA(1999)
  4. 如果多个条目具有相同的作者和日期,则会在标签中的日期中添加一个不可见的字母,但该字母不会出现在最终编译的文档中,例如LastNameA(2019{\natexlab{a}})LastNameA(2019{\natexlab{b}})等等
  5. 如果未指定作者和日期,则引用标签的前三个字符将用于识别条目:例如bib(),在问题中的 MWE 的情况下。

现在,对于 5. 的情况,当参考书目中有两个(或更多)条目的标签以相同的三个字符开头时,将应用 4. 的相同程序:它们的标签为bib({\natexlab{a}})bib({\natexlab{b}})

错误就出在这里:尽管这些条目没有指定日期,但隐形{\natexlab{a}}{\natexlab{b}}生成的日期unsrtnat仍然存在,因此被解释为日期。这导致人们natbib认为日期已指定,但当然,最终 PDF 中的此字段不会打印任何内容。

为了避免这个问题,可以指定作者和/或日期,正如 David Purton 在他的评论中所建议的那样。否则,确保引文标签的前三个字符不同就足够了,例如,在上面的 MWE 中,除了定义bib1and之外,还可以定义and 。bib21bib2bib

答案2

因为 {\natexlab{b}} 将被视为日期;然而它是空的。

修改*.bst文件:

  1. 找到函数:FUNCTION {misc}
  2. 删除此行:format.date 输出
  3. 完毕。

相关内容