2009-04-16 41 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擴展名。這就是突然間發生的情況。