2009-04-16 9 views
3

J'ai ajouté une ligne "\ cite {test}" comme test pour mon document Latex fonctionnel. ! Quand je compila les bibtex » bibtex name_of_my_file, je suis l'erreur attendue:Comportement Odd Bibtex dans un document Latex

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

Ensuite, je l'ai enlevé la ligne et compila les bibtex à nouveau, dans l'espoir d'avoir un fichier de latex fonctionne à nouveau Cependant, la même erreur se produit. , même avec une coquille fraîche. Je ne comprends pas le comportement. Quelle est la logique? Comment puis-je obtenir mon document latex fonctionne à nouveau?

[info Mise à jour] le problème Disparu aussi inopinément il est apparu. Je Je ne sais pas pourquoi mais ça marche maintenant Connaissez-vous la raison de ce comportement étrange?

Répondre

9

Je pense que vous trébucher sur la nature multi-passe de LaTex plus Bibtex. Si vous regardez Step 3 in this discussion, vous verrez les suivantes:

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.

Alors, ce que je pense qui se passe est que votre fichier name_of_my_file.aux contient encore votre espace réservé \cite{test}. Si vous supprimez le fichier auxiliaire, vous devriez être en mesure de recommencer avec:

latex name_of_my_file 
bibtex name_of_my_file 
latex name_of_my_file 
latex name_of_my_file 

[Mise à jour sur la base des informations supplémentaires]: Le problème est que vous avez un fichier .aux avec votre \cite{} empêtrés. La deuxième fois que vous avez exécuté latex, vous avez remplacé l'ancien fichier par le nouveau. C'est pourquoi l'ensemble des étapes comprend un appel latex initial, un appel bibtex et deux appels latex de suivi. Pensez-y comme un compilateur à passages multiples et cela pourrait être plus intuitif.

+1

Il est même possible d'obtenir le fichier aux dans un état suffisamment mauvais que LaTeX se ferme avant d'écrire un nouveau fichier aux (ce qui m'est arrivé), et probablement aussi à un état qui est propagé dans le nouveau fichier AUX le fichier TeX ne le produit plus (ce n'est que de la spéculation et pourrait faire un problème de recherche amusant). Pour être sûr que votre document est reproductible, vous devez supprimer le fichier aux avant la séquence de commandes. –

+0

Très vrai - si vous êtes vraiment paniqué, le fichier que vous devez conserver est nom_du_fichier_my.tex. –

+0

"La deuxième fois que vous avez exécuté latex, vous avez remplacé l'ancien fichier par le nouveau." J'ai fait plus de deux fois. Je cours la commande "!bibtex the_file "au moins 50 fois, et la commande" pdflatex% "environ 30 fois.C'est peut-être une autre raison.Peut-être, c'est en raison de Mac OS, ou quelque chose comme ça. –

2

Rétablissez le latex pour régénérer le fichier AUX.

Jetez un oeil à this discussion pour des pointeurs vers un peu plus d'informations. Fondamentalement, vous avez peut-être pris votre citation du fichier .tex, mais il existe toujours dans l'un des fichiers dérivés (aux, bbl, peu importe ...)

3

Vous pouvez jeter un oeil à latexmk, qui s'occupera de la compilation du point fixe pour vous. Quoi qu'il en soit, vous devriez être capable de construire le document (pdflatex blah.tex), même s'il vous manque un élément bibliographique. Les références correspondantes apparaîtront simplement comme des points d'interrogation dans le fichier PDF.

1

Vérifiez si votre fichier bib a l'extension .bib et non .tex. Si c'est .tex, il suffit de le changer en .bib et cela devrait le faire. Une fois je l'ai changé accidentellement à tex, en ajoutant quelques références, et en l'enregistrant avec l'option "enregistrer sous", sans spécifier l'extension de dossard. C'est comme ça que ça peut arriver tout à coup.

Questions connexes