如何验证 bib 文件?

如何验证 bib 文件?

如何验证 BiBTeX 文件的正确性?我所说的验证主要指:

  • 重复的密钥,甚至可能是重复的条目
  • 确保每个条目的所有必填字段(取决于其类型)都已填写。
  • 确保它不包含任何不良 TeX。例如,\emphh{foo bar}note字段中包含类似的东西。

我发现本网站这似乎解决了上面的第一项问题。AUCTeX/RefTeX提供bibtex-validate-globally似乎可以测试键(和字符串?)的重复。

您还拥有/使用哪些其他工具?我对检查给定文件的工具特别感兴趣.bib。正如评论中提到的那样 - 似乎参考经理也可以提供解决方案。

我主要将BibTeXBibLaTeX视为管理工具。

答案1

我有一些.bib文件,其中一些有 1000 行。

为了确保它们运行良好,我总是使用这个测试 MWE(仅为正在运行的 MWE 添加的包filecontents和示例.bib文件;请删除它并使用您自己的.bib文件):

\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}

示例文件包含两个错误:adams您将找到两次键(给出错误)并且Mathetitle缺少一个字段(给出警告)。

MWE 是.bib为使用 BibTeX 测试文件而构建的。您必须选择您使用的 bib 样式(我的示例使用natbib带有 的包numbers)。因此,此 MWE 向您显示了使用 BibTeX 给出的结果错误和警告.bib以及可能导致的tex错误。

这是我确保文件中没有bib错误或失误的方法。 tex.bib

答案2

您可能会调查bibtool网站)。文档(参见第 A.12 章)具体描述了如何使用该应用程序删除(或注释掉)重复项。该应用程序还可以对条目执行其他语义检查,但看起来您必须自己编写这些代码(参见check.ruleA.12.2 中的基础结构)。

它的一个很好的特性bibtool是它可以从大型 BibTeX 数据库中提取 LaTeX 文档中实际使用的条目。

答案3

betterbib是我的一个小项目,可以帮助您直接获取 BibTeX 文件的内容;它还可以检查重复的键。

pip install betterbib
betterbib in.bib out.bib

相关内容