包 natbib 错误:参考书目与作者年份引用不兼容(再次!)

包 natbib 错误:参考书目与作者年份引用不兼容(再次!)

我试图引用以下内容

@article{ghahramani2015probabilistic,
title={Probabilistic machine learning and artificial intelligence},
author={Ghahramani, Zoubin},
journal={Nature},
volume={521},
number={7553},
pages={452--459},
year={2015},
publisher={Nature Publishing Group}
}

\citet{ghahramani2015probabilistic}

但我一直收到错误

包 natbib 错误:参考书目与作者年份引用不兼容。

但该引文包含年份和作者。我正在natbib使用选项导入square,并使用\bibliographystyle{alpha}。有什么想法吗?

我已经删除了所有文件并再次编译了所有内容,但仍然出现同样的错误。

我正在编译

"pdflatex" -synctex=1 -interaction=nonstopmode %.tex|"bibtex" %.aux|"pdflatex" -synctex=1 -interaction=nonstopmode %.tex|"pdflatex" -synctex=1 -interaction=nonstopmode %.tex

我有一个模板,经常用它来编制参考书目。

答案1

要提取引用的作者和年份,natbib需要一个参考书目条目(在 bbl 中),其开头如下:

\bibitem[Ghahramani(2015)]{ghahramani2015probabilistic}

重要的部分是可选参数的语法[Ghahramani(2015)]。natbib 扫描它并按作者和年份拆分。

\bibliographystyle{alpha}条目如下所示:

\bibitem[Gha15]{ghahramani2015probabilistic}

这对于 natbib 来说是不可用的,因为它无法提取年份或作者。

如果您想使用 natbib,则应使用兼容的样式,例如 plainnat 而不是 alpha。如果您想要 alpha 样式,您可以尝试使用以下方式创建自己的 bsthttps://tex.stackexchange.com/a/495642/2388或者您可以切换到支持更多样式的 biblatex 和 biber。

答案2

错误消息

Package natbib Error: Bibliography not compatible with author-year citations.

主要有两个原因:

  • 要么可以按表面意思理解,然后说你使用的参考书目风格与natbibauthoryear引用选项不兼容
  • 或者您使用的样式原则上与natbibauthoryear引用选项兼容,但缺少某些条目author/editoryear字段。

这一切都归因于作者-年份引用在 中的实现方式natbib。通常由 BibTeX 创建的参考书目本质上是一个美化的enumerate环境,\cite其工作方式就像 a\ref到 a一样\label(您可以在以下网址阅读更多相关信息设计问题:引用命令)。为了能够生成灵活的作者-年份引用,natbib使用了一种巧妙的方法在文档中显示作者和年份。但这意味着 BibTeX 创建的参考书目必须具有特定的格式,这在代码注释中进行了解释natbib.sty

 % If author-year citations are selected, \bibitem must have one of the
 %   following forms:
 %   \bibitem[Jones et al.(1990)]{key}...
 %   \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
 %   \bibitem[Jones et al., 1990]{key}...
 %   \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
 %       et al.}{1990}]{key}...
 %   \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
 %   \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
 %   \bibitem[\protect\citename{Jones et al., }1990]{key}...
 %   \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...

\bibliographystyle如果您的作品看起来像这样,您只能获得作者年份引用\bibitem。并非所有样式都与此格式兼容。

如果缺少作者或年份字段,即使原则上与此格式兼容的样式也会产生\bibitem无法natbib根据上述规范进行解析的结果。在这种情况下,您也会收到此错误。

一个可以同时解决这两个问题的“解决方案”是忘记作者年份引用,并natbib通过加载选项来指示使用数字引用numbers。然后natbib不会尝试提取正常引用的作者年份数据。但可能仍然无法按预期工作。因此,使用不兼容的样式\citet是毫无意义的。natbib

如果样式不兼容,另一个直接的解决方案是选择兼容的样式。 样式natbibplainnatabbrvnat显然unsrtnat是很好的natbib兼容选择,但还有更多样式可以工作。

如果问题只是由于您的输入缺少author/editoryear字段而导致的,那么显而易见的解决方案是尝试提供这些字段。如果这不可能,那么为这些字段添加占位符值可能会获得稍好的结果。例如author = {N.N.},year = {n.d.},


natbib对于某些常见样式,有一个非常巧妙的方法可以避免此类错误:如果您只是加载natbib而不使用任何附加的引用样式选项,\usepackage{natbib}某些样式会自动强制使用此numbers选项,而无需您明确设置它,即使您已传递该authoryear选项。但是当您使用引用样式选项时,该方法将被禁用 square

比较以下带有和不带有该square选项的 MWE。

\documentclass{article}
\usepackage[square]{natbib}

\begin{filecontents}{\jobname.bib}
@article{ghahramani2015probabilistic,
  title   = {Probabilistic machine learning and artificial intelligence},
  author  = {Ghahramani, Zoubin},
  journal = {Nature},
  volume  = {521},
  number  = {7553},
  pages   = {452--459},
  year    = {2015},
}
\end{filecontents}

\begin{document}
\citep{ghahramani2015probabilistic}
\citet{ghahramani2015probabilistic}
\bibliographystyle{alpha}
\bibliography{\jobname}
\end{document}

答案3

numbers我在导入时添加了选项natbib,现在不再出现错误。但不知道为什么。

相关内容