我浏览了论坛,发现了许多解决此问题的帖子,但似乎没有一个解决方案对我有用。我有以下脚本,我刚从 bibtex 主页复制了它以熟悉它。我得到的不是引用编号,而是问号。我按照之前的建议使用 Latex+Bibtex+Latex+Latex+PDFLatex+ViewPDF 进行编译,问题仍然存在。
\documentclass[11pt]{article}
\usepackage{cite}
\begin{document}
\title{My Article}
\author{Nobody Jr.}
\date{Today}
\maketitle
Blablabla said Nobody ~\cite{Nobody06}.
\bibliography{mybib}
\bibliographystyle{plain}
\end{document}
我的书目(Bib.bbl)
@misc{ Nobody06,
author = "Nobody Jr",
title = "My Article",
year = "2006" }
查看以前的帖子,有一件事令人担忧,那就是我的 .bbl 看起来是空的,如下所示。此外,我没有 .blg
\begin{thebibliography}{}
\end{thebibliography}
答案1
由于这个问题经常出现,我想我应该尝试补充ArTourter 的正确答案并提出更一般性的评论。
问号是什么意思
这意味着在某个地方,LaTeX 和 BibTeX 的组合无法找到并格式化引用所需的引用数据:LaTeX 可以看到您想要引用某些内容,但不知道如何引用。
缺失引用在以下情况下显示不同:biblatex
如果您正在使用,biblatex
则不会看到问号,而是会以粗体显示您的引文关键字。例如,如果您的.bib
文件中有一个带有关键字的项目Jones1999
,您将看到琼斯1999在您的 PDF 中。
这一切是如何运作的
要弄清楚发生了什么,您需要了解这个过程(应该)如何工作。想象一下 LaTeX 和 BibTeX 是两个独立的人。LaTeX 是排字员。BibTeX 是档案管理员。大致来说,这个过程应该按如下方式运行:
LaTeX(排字员)通读手稿并向 BibTeX(档案管理员)提供三条信息:从命令中提取的需要引用的参考文献列表
\cite
;从命令中提取的可以找到这些参考文献的文件的注释\bibliography
;从命令中提取的所需格式类型的注释\bibliographystyle
。然后,BibTeX 开始运行,在它被告知要读取的文件中查找数据,查阅告诉它如何格式化数据的文件,并以已组织的形式生成一个包含该数据的新文件,以便 LaTeX 可以使用它(文件
.bbl
)。然后,LaTeX 必须获取该数据并排版文档 - 并且可能确实需要多次“运行”才能正确执行此操作(因为数据内部可能存在内部关系,或者与稿件的其余部分之间可能存在内部关系,而 BibTeX 既不知道也不关心这些关系,但这些关系对于排版很重要。
您的问号告诉您这个过程出了问题。
更多biblatex
和biber
注释
如果您正在使用
biblatex
,则样式信息位于传递给包的选项中biblatex
,而原始数据位于\addbibresource
命令中。如果您正在使用
biber
,则本答案中描述为BibTeX的阶段通常会被不同的、更狡猾的档案管理员Biber所取代。
该怎么办
首先要确保你已经至少经历过一次整个过程:这就是为什么,为了处理任何新的引用,你总是需要至少一次 LaTeX 运行(准备需要交给 BibTeX 的信息)、一次 BibTeX 运行和一次或多次后续的 LaTeX 运行。所以首先,确保你已经完成了这些。请注意,和latex
/bibtex
需要biber
在主文件上运行(没有文件结尾)。换句话说,你的主文件的基本名称:你不是对该.bib
文件运行任何命令。
latex MainFile
bibtex MainFile
latex MainFile
latex MainFile
如果问题仍然存在,那么一定是某个地方出了问题。而且几乎总是信息流出了问题。
您首先要查看的是 BibTeX 日志.blg
文件 ( )。它通常会为您提供诊断问题所需的信息。因此,请打开该文件(该文件的名称为blah.blg
“blah”,其中“blah”是源文件的名称)。
大致按照以下逻辑顺序:
BibTeX 没有找到样式文件。该文件告诉它如何格式化引用。在本例中,您将得到一个错误,BibTeX 会报错
I couldn't open the style file badstyle.bst
。如果您尝试使用标准样式,那几乎肯定是因为您在命令中没有正确拼写样式\bibliographystyle
- 因此请检查一下。如果您尝试使用非标准样式,可能是因为您将它放在了 TeX 找不到的地方。(出于测试目的,我发现,最好记住,如果它与源文件位于同一目录中,则始终会找到它;但如果您使用 TeX 系统的功能进行安装 - 就像一个没有经验的人应该做的那样 - 您不太可能遇到该问题。)BibTeX 没有找到数据库文件。这是
.bib
包含数据的文件。在这种情况下,日志文件将显示I couldn't open database file badfile.bib
,然后会警告您它没有找到数据库文件。解决方法是相同的:返回并检查文件名是否拼写正确,以及它是否在 TeX 可以找到的地方(如果有疑问,请将其放在包含源文件的文件夹中)。BibTeX 找到了该文件,但是不包含引用数据对于您尝试引用的内容。现在您将在日志文件中得到:
Warning--I didn't find a database entry for "yourcitation"
。这就是发生在您身上的事情。您可能会认为您应该遇到第 2 类错误:但实际上并没有,因为碰巧有一个名为的文件mybib.bib
挂在系统中(如下kpsewhich mybib.bib
所示)——因此 BibTeX 找到了它应该查找的位置,但找不到它需要的数据。但本质上诊断的顺序是相同的:检查命令中的文件名是否正确\bibliography
。如果一切正常,则该文件或引用命令有问题。这里最可能出现的错误是您忘记在文件中包含数据,或者您.bib
使用了多个.bib
文件而将 BibTeX 发送到了错误的文件,或者您拼错了引用标签(例如,您\cite{nobdoy06}
对所做的是\cite{nobody06}
)。文件中条目的格式有问题
.bib
。这并不罕见:例如,很容易忘记逗号。在这种情况下,您应该会遇到 BibTeX 错误,尤其是类似这样的错误I was expecting a ',' or a '}'
,您会被告知它是skipping whatever remains of this entry
。这是否真的会阻止生成任何引用可能取决于错误;我认为 BibTeX 通常能够生成一些东西——但biblatex
可能会完全被难倒。无论如何,请检查并更正特定条目。
biblatex
和biber
注释
如果您使用的是biblatex
,那么通常您也会使用 Biber 程序而不是 BibTeX 程序来处理您的参考书目,但适用相同的一般原则。因此,编译顺序变为
latex MainFile
biber MainFile
latex MainFile
latex MainFile
概括
诊断顺序如下:
我已经运行过 LaTex、BibTeX(或 Biber)、LaTeX、LaTeX 了吗?
查看该
.blg
文件,它将对回答以下问题有很大帮助。BibTeX/Biber 是否找到了我的样式文件?(检查您是否有一个有效的
\bibliographystyle
命令以及是否存在.bst
可找到的同名命令。)BibTeX/Biber 找到我的数据库了吗?(检查
\bibliography
名称是否正确,是否能够找到。)它是否找到了正确的数据库?
数据库是否包含与我实际输入的引文相匹配的条目?
该条目有效吗?
最后:当您更改了某些内容时,请不要忘记您需要再次通过相同的 LaTeX -- BibTeX(或 Biber)-- LaTeX -- LaTeX 运行才能使其正确。(这实际上并不完全正确:但直到您对该过程有了更多的了解,这是一个安全的假设。)
答案2
该命令的语法\bibliography{}
是\bibliography{file1,file2,...}
就您而言,您似乎正在调用一个名为的文件,mybib
而您的 bib 文件实际上是Bib
。
还要注意,bibtex 文件应该具有.bib
扩展名。该.bbl
文件将由 bibtex 创建。
因此,您应该重命名参考书目文件mybib.bib
并删除调用{}
中的多余内容\bibliography{mybib}{}
,然后重新编译。这应该可以解决您的问题。
答案3
只是一点补充意见。我遇到同样的问题很多天了,一直在努力寻找解决方案。最后,我意识到在 .cls 文件中我有以下库
\RequirePackage{chapterbib}
我将其删除后问题就解决了。