BibTeX 清理与校验工具
粘贴或载入一个 .bib 文件,即可获得经过检查和整理的结果:缺失的必填字段、重复的键、重复的 DOI 和未定义的宏都会附上行号标出;页码范围、月份、花括号和字段顺序统一规范;每项更改都会列出,方便您看清做了哪些改动。免费,无需注册,文件也不会离开您的浏览器。
清理选项
粘贴一个 .bib 文件,或将其载入。文件在您的浏览器中读取,不会上传任何内容。
如何使用 BibTeX 清理工具
- 1. 粘贴或载入您的 .bib 文件。 工具会按 BibTeX 本身读取整个文件的方式处理:
@string宏、#连接、@preamble、@comment、嵌套花括号以及条目之间的注释。 - 2. 选择清理选项。 除大写保护和排序外,所有选项默认开启;如需保留某项原样,请将其关闭。结果会随选项的改变而实时更新。
- 3. 阅读问题。 错误和警告会与其所在的行号和引用键一同列出,从缺少期刊名到键被重复使用都包括在内。
- 4. 检查更改后下载。 每项更改都按条目和字段记录,并显示更改前后的值;结果会以
cleaned.bib的文件名下载。
校验工具检查什么
经典 BibTeX 定义了十四种条目类型,以及每种类型所需的字段。校验工具采用 Oren Patashnik 的 BibTeXing 中的这张表(该文档随 BibTeX 一同发布),并接受 biblatex 对同一数据所用的名称,因此 journaltitle、date 以及学位论文的 institution 都会被视为其经典对应字段。
| 条目类型 | 必填字段 |
|---|---|
@article | author, title, journal, year |
@book | author 或 editor, title, publisher, year |
@inbook | author 或 editor, title, chapter 或 pages, publisher, year |
@incollection | author, title, booktitle, publisher, year |
@inproceedings | author, title, booktitle, year |
@phdthesis, @mastersthesis | author, title, school, year |
@techreport | author, title, institution, year |
@misc | 无 |
@booklet 和 @manual 只需要 title;@proceedings 需要 title 和 year;@unpublished 需要 author、title 和 note;@conference 是 @inproceedings 的另一种名称。
它还会标出被重复使用的键(BibTeX 只保留第一个条目)、仅在大小写上不同的键、含有空格或 BibTeX 无法识别字符的键、在两个条目中重复出现的 DOI、两个条目中相同的标题和年份、重复给出的字段、使用了却未用 @string 定义的宏,以及不是四位数字的年份。读取器无法完成的条目——例如缺少逗号或花括号不成对——会附上行号报告,并原样保留,因此清理操作绝不会删除任何文字。
清理会做哪些更改
- 条目类型和字段名改为小写:
@ARTICLE变为@article,Author变为author。 - 空白字符:值内部的换行和连续空格合并为单个空格。
- 定界符:带引号的值改用花括号,这样即使标题中有多余的引号也不会出错。
- 页码范围使用 LaTeX 排印为 en 破折号的双连字符:16569-16572 变为 16569--16572。
- 月份写成 BibTeX 的宏
jan至dec,不加花括号,使每种样式都能将其排印或缩写。 - 空字段(如
note = {})会被删除。 - DOI 会去掉 https://doi.org/ 前缀;会排印 DOI 的样式会自行添加。
- 标题中的大写字母(可选):为缩写和大小写混合的词加上花括号——
{DNA}、{mRNA}、{iPhone}——或为首词之后的每个大写词加上花括号,使采用句首大写格式的样式无法将其小写化。 - 字段顺序:作者、标题、期刊或书名、卷、期、页码、年份、月份、出版社,然后是标识符;也可以按字母顺序排列,或保持原样。
- 排序(可选):按键、第一作者或年份排序。
@string定义保持在最前,因为宏必须在条目使用它之前定义。
一个条目的前后对比
粘贴的内容
@ARTICLE{hirsch2005,
Author = {Hirsch, J. E.},
title = "An index to quantify an individual's scientific research output",
journal = {Proceedings of the National Academy of Sciences},
year = 2005, month = {November},
pages = {16569-16572},
note = {}
}清理后
@article{hirsch2005,
author = {Hirsch, J. E.},
title = {An index to quantify an individual's scientific research output},
journal = {Proceedings of the National Academy of Sciences},
pages = {16569--16572},
year = 2005,
month = nov
}该条目的更改日志共有七行:类型转为小写,Author 改名为 author,标题加上花括号,November 变为宏 nov,页码范围改为双连字符,空的 note 被删除,字段重新排序。年份保持为裸数字,BibTeX 接受这种写法。
BibTeX 还是 biblatex?
同一个 .bib 文件可以供两种系统使用。经典 BibTeX 配合 plain 或期刊自己的 .bst 文件,只认识十四种标准类型,并会静默忽略它不认识的字段。由 biber 处理的 biblatex 则增加了 @online、@report、@thesis 等类型,以及 journaltitle、date、location、urldate、eprint 等字段,并且可以直接读取带重音的字母,而无需 LaTeX 重音命令。校验工具在条目使用仅 biblatex 支持的类型时会发出警告——经典样式会退回为 @misc 并给出警告——但绝不会把 biblatex 的字段名报告为缺失字段。
常见问题
- 如何检查 BibTeX 文件中的错误?
- 将其粘贴到上方的文本框中,或载入 .bib 文件。校验工具会列出每一个问题,并附上行号和引用键:无法读取的条目、缺失的必填字段、重复的键、重复的 DOI 或标题、未定义的宏,以及不是四位数字的年份。请先修正错误;它们正是导致 BibTeX 发出警告或丢弃文献的原因。
- “I'm skipping whatever remains of this entry”是什么意思?
- 这是 BibTeX 在无法解析某个条目时放弃处理的提示——通常是因为两个字段之间缺少逗号、花括号不成对,或带引号的值中含有引号。清理工具会把同样的条目报告为解析错误,并附上行号,同时把它们原样保留在输出中,方便您就地修复。
- BibTeX 中的页码范围应该用 -- 吗?
- 应该。BibTeX 把 pages 字段传给 LaTeX,在那里 -- 会排印为 en 破折号,这是表示范围的正确符号。许多标准样式会自行把单个连字符转换为 --,但并非所有样式都会这样做,因此在文件中写 -- 是更安全的选择,而本清理工具会替您完成这一步。
- 为什么 BibTeX 会把我的标题小写化?如何阻止?
- 许多样式以句首大写格式排印文章标题,并把所有未被花括号保护的字母小写,因此 DNA 会变成 dna。用花括号把词括起来——{DNA}——即可保护它。清理工具的大写选项会为缩写和大小写混合的词加上花括号,或者当您的标题中有大量专有名词时,为首词之后的每个大写词加上花括号。
- 重复的引用键是问题吗?
- 是的。BibTeX 只使用具有某个键的第一个条目,并忽略其余条目,因此某个引用可能会悄悄指向错误的文献。仅在大小写上不同的键也会被标出:BibTeX 会对它们发出警告,而 biber 则将它们视为两个键,因此同一引用在两种系统中的表现可能不同。
- 我的 .bib 文件会被上传吗?
- 不会。文件完全在您的浏览器中读取和清理,不会发送到服务器;清理后的副本则在您下载时于自己的设备上生成。