如何验证 BiBTeX 文件的正确性?我所说的验证主要指:
- 重复的密钥,甚至可能是重复的条目
- 确保每个条目的所有必填字段(取决于其类型)都已填写。
- 确保它不包含任何不良 TeX。例如,
\emphh{foo bar}
在note
字段中包含类似的东西。
我发现本网站这似乎解决了上面的第一项问题。AUCTeX/RefTeX
提供bibtex-validate-globally
似乎可以测试键(和字符串?)的重复。
您还拥有/使用哪些其他工具?我对检查给定文件的工具特别感兴趣.bib
。正如评论中提到的那样 - 似乎参考经理也可以提供解决方案。
我主要将BibTeX
其BibLaTeX
视为管理工具。
答案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.rule
A.12.2 中的基础结构)。
它的一个很好的特性bibtool
是它可以从大型 BibTeX 数据库中提取 LaTeX 文档中实际使用的条目。
答案3
betterbib是我的一个小项目,可以帮助您直接获取 BibTeX 文件的内容;它还可以检查重复的键。
pip install betterbib
betterbib in.bib out.bib