2009-04-16 37 views
3

我在我的工作Latex文档中添加了一行“\ cite {test}”作为测试。 !当我编译中文提供”中文提供name_of_my_file,我得到了预期的错误:乳胶文档中奇数Bibtex行为

Warning--I didn't find a database entry for "test"

然后,我删除了行,并再次编译中文提供,希望能够再有一个工作的乳胶文件。然而,发生同样的错误。 ,即使有新鲜的壳。我无法理解的行为。这是什么逻辑?我怎样才能让我的乳胶文件再次合作?

[更新信息] 问题dissapeared因为意外,因为它出现了。我有不知道为什么,但它现在有效。你知道奇怪行为的原因吗?

回答

9

我认为你正在绊倒多遍性质LaTex plus Bibtex。如果你看Step 3 in this discussion,你会看到以下内容:

The first run (through latex) generates an auxiliary file, paper.aux, containing information about citations (and other types of references), the bibliography style used, and the name of the bibtex database. The second run (through bibtex) uses the information in the auxiliary file, along with the data contained in the bibtex database, to create a file paper.bbl. This file contains a thebibliography environment with \bibitem entries formatted according to the bibliography style specified.

所以,我认为正在发生的事情是,你name_of_my_file.aux文件仍然包含您的占位符\cite{test}。如果删除辅助文件,你应该能够与开始:

latex name_of_my_file 
bibtex name_of_my_file 
latex name_of_my_file 
latex name_of_my_file 

[根据其他信息更新]:问题是,你有一个.aux文件与\cite{}仍然嵌入。您第二次运行latex时,您将覆盖旧文件。这就是为什么整套步骤包括一个初始的latex呼叫,一个bibtex呼叫和两个后续latex呼叫。把它看作是一个多通道编译器,它可能更直观。

+1

甚至可以让aux文件进入一个非常糟糕的状态,LaTeX在写入新的辅助文件之前退出(这已发生在我身上),并且可能还会传播到新的辅助文件中,即使TeX文件不再生成它(这只是猜测,可能会成为一个有趣的研究问题)。为确保您的文档具有可重现性,您需要在命令序列之前删除aux文件。 – 2009-04-17 09:30:34

2

重新运行胶乳以重新生成辅助文件。

看看this discussion指向更多信息的指针。基本上,你可能已经从.tex文件中引用了你的引用,但它仍然存在于衍生文件之一(aux,bbl,无论...)

3

你可以看看latexmk,它会照顾你的定点编译。

无论如何,即使您缺少书目项目,您也应该可以构建文档(pdflatex blah.tex)。相应的参考文献将在PDF中显示为问号。

1

检查您的围脖文件是否具有扩展名.bib而不是.tex。 如果它是.tex,只需将其更改为.bib即可。 一旦我意外地将它改为tex,通过添加一些引用,并用“另存为”选项保存它,而不指定bib扩展名。这就是突然间发生的情况。