我有一个非常简单的文件report.tex
:
\documentclass{article}
\begin{document}
AlexNet \cite{krizhevsky2012imagenet} is great
\bibliographystyle{plain}
\bibliography{references}
\end{document}
还有一个非常简单的.bib
文件references.bib
:
@article{krizhevsky2012imagenet,
title={Imagenet classification with deep convolutional neural networks},
author={Krizhevsky, Alex and Sutskever, Ilya and Hinton, Geoffrey E},
journal={Advances in neural information processing systems},
volume={25},
year={2012}
}
当我使用 进行编译时pdflatex report.tex
,出现以下警告,并且引用无法正确呈现:
LaTeX Warning: Citation `krizhevsky2012imagenet' on page 1 undefined on input l
ine 5.
No file report.bbl.
...
LaTeX Warning: There were undefined references.
该命令pdflatex report.tex
生成一个输出文件report.aux
。如果我运行该命令bibtex report.aux
,我将获得以下输出:
...
Database file #1: references.bib
You're missing an entry type---line 1 of file references.bib
: ■@
: article{krizhevsky2012imagenet,
I'm skipping whatever remains of this entry
Warning--I didn't find a database entry for "krizhevsky2012imagenet"
(There was 1 error message)
为什么我会收到此错误消息?我该怎么办?
答案1
简短回答:该文件references.bib
使用了一种不常见的文本编码,显然称为“UTF-16 LE”(根据我的 VS Code IDE)。我切换到“UTF-8”文本编码,现在一切都恢复正常了。
我怎么会得到这种不寻常的编码?好吧,由于touch
Powershell 中没有该命令,我references.bib
使用 Powershell 命令创建了该文件echo "" >> references.bib
。当我在 VS Code 中打开此文件时,VS Code 将文件解释为“UTF-16 LE”,当我粘贴 BiBTeX 引用时,VS Code 将该引用转换为与文件的文本编码相匹配。但bibtex
显然无法识别这种不寻常的文本编码。我花了一段时间(以及一些比喻性的用头撞墙)才弄清楚。
编辑:我通过添加到系统环境变量来添加touch
到 Powershell 。现在我可以文件,它们被解释为 UTF-8。对我来说不再需要 UTF-16 LE :-)C:\Program Files\Git\usr\bin
PATH
touch