[Tex/LaTex] How to one validate a bib file

bibtex

How do you validate the correctness of your BiBTeX files? By validate I mean mainly:

  • Duplicated keys, and maybe also duplicated entries
  • Make sure that all the mandatory fields of each entry (depending on its type) are filled.
  • Make sure that it doesn't contain any bad TeX in it. For example, having something like \emphh{foo bar} in a note field.

I found this site which seems to take care of the first item above. AUCTeX/RefTeX provides bibtex-validate-globally which seems to test for duplications of key (and strings?)

What other tools do you have/use? I am particularly interested in tools that check a given .bib file. As mentioned in the comments – it seems like reference managers can provide a solution as well.

I mainly consider BibTeX and BibLaTeX as management tool.

Best Answer

I have some .bib files, some of them have 1000 lines.

To be sure that they are working well I always use this test MWE (package filecontents and sample .bib file added only for a running MWE; delete it and use your own .bib file please):

\RequirePackage{filecontents}        % loading package filecontents
% writing file \jobname.bib, for example mb-bibtex.bib.
\begin{filecontents*}{\jobname.bib}
@Book{adams,
  author    = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander},
  title     = {The LaTeX Companion},
  edition   = {1},
  publisher = {Addison-Wesley},
  location  = {Reading, Mass.},
  year      = {1994},
}
@Book{adams,
  title     = {The Restaurant at the End of the Universe},
  author    = {Douglas Adams},
  series    = {The Hitchhiker's Guide to the Galaxy},
  publisher = {Pan Macmillan},
  year      = {1980}
}
@Article{Mathetitle,
  author  = {Mezzacapo, F. and Cirac, J. I.},
  title   = {Ground-state properties of the spin-$\frac{1}{2}$ antiferromagnetic Heisenberg 
             model on the triangular lattice: a variational study based on 
             entangled-plaquette states.},
  year    = {2010},
  journal = {New. J. Phys.},
  number  = {12},
  issn    = {103039},
}
\end{filecontents*}


\documentclass{article}

\usepackage[numbers]{natbib}         % bibliography style
\usepackage[colorlinks]{hyperref}    % better urls in bibliography

\begin{document}
Test the complete \texttt{.bib} file: \nocite{*}.

\bibliographystyle{plainnat}  % needs package natbib
\bibliography{\jobname}       % uses \jobname.bib, according to \jobname.tex
\end{document}

The sample file includes two errors: key adams you will find twice (that gives an error) and in the Mathetitle there is an field missing (that gives a warning).

The MWE is build to test a .bib file with BibTeX. You have to choose your used bib style (my example uses package natbib with numbers). So this MWE shows you the resulting errors and warnings for the given .bib with BibTeX and perhaps resulting tex errors.

That is my way to be sure there is no bib error or tex error in the .bib file.

Related Question