Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Odd Bibtex behaviour in a Latex document

Tags:

latex

bibtex

I added a line "\cite{test}" as a test to my working Latex document. When I compiled the bibtex "!bibtex name_of_my_file, I got the expected error:

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

Then, I removed the line and compiled the bibtex again, hoping to have a working Latex file again. However, the same error occurs, even with a fresh shell. I cannot understand the behaviour. What is the logic? How can I get my Latex document working again?

[Updated Info] The problem dissapeared as unexpectedly as it emerged. I have no idea why but it works now. Do you know the reason for the odd behaviour?

like image 411
Léo Léopold Hertz 준영 Avatar asked Apr 16 '09 20:04

Léo Léopold Hertz 준영


4 Answers

I think you are tripping over the multi-pass nature of LaTex plus Bibtex. If you look at Step 3 in this discussion, you'll see the following:

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.

So, what I think is happening is that your name_of_my_file.aux file still contains your placeholder \cite{test}. If you remove the auxiliary file, you should be able to start over with:

latex name_of_my_file
bibtex name_of_my_file
latex name_of_my_file
latex name_of_my_file

[Update based on additional info]: The problem was that you had a .aux file with your \cite{} still embedded. The second time that you ran latex, you overrode the old file with the new. That's why the complete set of steps includes an initial latex call, a bibtex call and two follow-up latex calls. Think of it as a multi-pass compiler and it might be more intuitive.

like image 130
Bob Cross Avatar answered Sep 27 '22 10:09

Bob Cross


You could have a look at latexmk, which will take care of the fix point compilation for you.

Anyway, you should be able to build the document (pdflatex blah.tex), even if you're missing a bibliography item. The corresponding references will just appear as question marks in the PDF.

like image 30
Damien Pollet Avatar answered Sep 27 '22 10:09

Damien Pollet


Rerun latex to regenerate the aux file.

Have a look at this discussion for pointers to a bit more information. Basically, you may have taken your citation out of the .tex file, but it still exists in one of the derived files (aux, bbl, whatever...)

like image 23
andersoj Avatar answered Sep 26 '22 10:09

andersoj


Check if your bib file has the extension .bib and not .tex. If it is .tex, just change it to .bib and that should do it. Once I changed it accidentally to tex, by adding some references, and saving it with the "save as" option, without specifying the bib extension. That's how it can happen all of a sudden.

like image 37
Michiel Avatar answered Sep 28 '22 10:09

Michiel