我试图引用以下内容
@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.
主要有两个原因:
- 要么可以按表面意思理解,然后说你使用的参考书目风格与
natbib
的authoryear
引用选项不兼容 - 或者您使用的样式原则上与
natbib
的authoryear
引用选项兼容,但缺少某些条目author
/editor
或year
字段。
这一切都归因于作者-年份引用在 中的实现方式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
如果样式不兼容,另一个直接的解决方案是选择兼容的样式。 样式natbib
、plainnat
、abbrvnat
显然unsrtnat
是很好的natbib
兼容选择,但还有更多样式可以工作。
如果问题只是由于您的输入缺少author
/editor
或year
字段而导致的,那么显而易见的解决方案是尝试提供这些字段。如果这不可能,那么为这些字段添加占位符值可能会获得稍好的结果。例如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
,现在不再出现错误。但不知道为什么。