![LaTeX:“未定义引用”警告](https://linux22.com/image/392229/LaTeX%EF%BC%9A%E2%80%9C%E6%9C%AA%E5%AE%9A%E4%B9%89%E5%BC%95%E7%94%A8%E2%80%9D%E8%AD%A6%E5%91%8A.png)
运行此示例代码时:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage{natbib}
\begin{document}
Hello World \cite{greenwood_theoretical_2016}
\end{document}
\bibliography{Bibliography}
\bibliographystyle{plain}
我不断收到警告:
'第 1 页上的引用 greenwood_theoretical_2016 在输入第 10 行未定义'
并且引用被标记为'?' 在文件中。
LaTeXTools
我在 macOS High Sierra 上使用 Sublime Text 3.2 。
构建器设置为“基本的' 因此它运行:
pdflatex
bibtex
pdflatex
pdflatex
我从 Zotero 导出了我的参考书目(格式:Bibtex;编码:UTF-8)并检查了“Bibliography.bib”文件(位于同一目录中),引用似乎是正确的(示例):
@article{greenwood_theoretical_2016,
title = {Theoretical, contemporary observational and palaeo-perspectives on ice sheet hydrology: {Processes} and products},
volume = {155},
issn = {0012-8252},
shorttitle = {Theoretical, contemporary observational and palaeo-perspectives on ice sheet hydrology},
url = {http://www.sciencedirect.com/science/article/pii/S0012825216300095},
doi = {10.1016/j.earscirev.2016.01.010},
urldate = {2018-12-05},
journal = {Earth-Science Reviews},
author = {Greenwood, Sarah L. and Clason, Caroline C. and Helanow, Christian and Margold, Martin},
month = apr,
year = {2016},
keywords = {Geomorphology, Esker, Meltwater, Review, Hydrology, Channel, Glacier, Ice Sheet},
pages = {1--27}
使用biblatex
而不是natbib
给我方括号中的参考标签,即
你好,世界 [greenwood_theoretical_2016]
我也尝试过使用不同的风格,但没有任何改变。
我知道对此有很多疑问,但似乎没有什么办法。
答案1
您给出的代码中存在一些问题:
- 您的代码中的调用顺序
\bibliographystyle
应该\bibliography
改变(样式第一!)。 - 使用加载时你
natbib
最好使用样式plainnat
plain
- 您
\end{document}
在调用参考书目之前就已经执行了。这意味着之后的代码\end{document}
不会被执行。
请使用以下代码:
\RequirePackage{filecontents}
\begin{filecontents*}{Bibliography.bib}
@article{greenwood_theoretical_2016,
title = {Theoretical, contemporary observational and palaeo-perspectives
on ice sheet hydrology: {Processes} and products},
volume = {155},
issn = {0012-8252},
shorttitle = {Theoretical, contemporary observational and
palaeo-perspectives on ice sheet hydrology},
url = {http://www.sciencedirect.com/science/article/pii/S0012825216300095},
doi = {10.1016/j.earscirev.2016.01.010},
urldate = {2018-12-05},
journal = {Earth-Science Reviews},
author = {Greenwood, Sarah L. and Clason, Caroline C. and Helanow,
Christian and Margold, Martin},
month = apr,
year = {2016},
keywords = {Geomorphology, Esker, Meltwater, Review, Hydrology,
Channel, Glacier, Ice Sheet, Read Level 3},
pages = {1--27},
}
\end{filecontents*}
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage{natbib}
\begin{document}
Hello World \cite{greenwood_theoretical_2016}
\bibliographystyle{plainnat} % plain
\bibliography{Bibliography} % Bibliography
\end{document}
并查看预期结果:
如果您想要获得编号的参考书目,请添加numbers
选项natbib
:
\usepackage[numbers]{natbib}
正确的编译代码biblatex
是
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage{csquotes}
\usepackage[%
natbib=true, % <=======================================
backend=biber, % <=====================================
]{biblatex}
\addbibresource{Bibliography.bib} % Bibliography <=======
\begin{document}
Hello World \cite{greenwood_theoretical_2016}
\printbibliography
\end{document}
结果如下:
答案2
此处原始答案的一部分说“我几乎确定命令
\bibliographystyle{plain}
应该在命令之前\bibliography{Bibliography}
”,这并不正确,因为 bibtex 编译将单独完成,因此只会使用已经具有参考书目样式信息的辅助文件。 (感谢@barbarabeeton 和@moewe...) 当然,编程习惯仍然会让更多人将其添加到打印命令之前,因为通过说“获取样式并打印它”,代码将更易于阅读...而不是“打印它...啊!别忘了......我需要这种风格!” :P
未经测试,但我几乎可以肯定该命令\bibliographystyle{plain}
应该在命令之前\bibliography{Bibliography}
,并且最重要的是(在这里我确信),两个命令都应该在命令之前\end{document}
。
请尝试一下,如果可以的话请回答。