我的电脑上有一个文件夹,里面有很多不同作者的数学论文。有些已经发表,有些在 arXiv 上,有些永远不会发表或上传到 arXiv。
我的问题如下:是否有一个脚本或某种自动化方式来生成一个包含该文件夹中所有论文书目数据的大型 BibTeX 文件?
一些观察:
这样的脚本主要应该在 arXiv、Mathscinet、Google scholar 上查找数据。很明显,我的文件夹中并非所有条目都会提供完整的书目信息(例如不打算发表的论文),因此脚本可能会返回一些错误或部分信息。无论如何,一切都应该由人来检查。
Bibdesk、Jabref、Zotero 或 Mendeley 等软件可能提供类似的服务。我尝试寻找此类功能,但没有找到任何明确信息。我实际上有 Bibdesk,我非常喜欢它,因此如果能提供涉及 Bibdesk 的解决方案,我将不胜感激。
如果脚本具有以标准方式生成引文密钥的功能,那就太好了。例如,论文“Auth1 和 Auth2 的数学中的 Blabla 和 blable”将具有引文密钥“auth1_auth2:blabla_and_blable_in_mathematics”。
部分解决方案似乎是这里建议的:http://www.math.tamu.edu/~comech/tools/bibget/。我还没有检查过这是否能正常工作;如果能,我们可以将这个脚本与一个类似的脚本结合起来,搜索 arXiv。
先感谢您
答案1
免责声明:这个解决方案并不完美,但可能是一个好的开始。PDF 的解析是我编写的,因为我有大量的 PDF 在我的 BibTeX 数据库中不可用。可能其他选择例如文件和门德利据说具有良好的 PDF 解析和 BibTeX 导出功能。我是 JabRef 的作者之一,喜欢开源开发。
贾布雷夫是一个麻省理工学院许可积极开发的开源 BibTeX 和 BibLaTeX 书目管理器GitHub. 它提供从 PDF 导入书目数据的功能。
调整 JabRef 密钥生成模式以满足您的需求
JabRef 提供了 BibTeX 密钥生成,并提供了不同的模式,描述如下https://help.jabref.org/en/BibtexKeyPatterns。就您而言,最接近的匹配是[authors]:[camel]
。
将 PDF 链接到您的 bib 文件
创建或打开一个 .bib 文件。
使用“浏览”按钮选择一个目录。
点击“扫描目录”。
要为所有文件创建条目,请单击“应用”。
-
对话框在“XMP 元数据”区域中显示 PDF 中存储的 XMP 元数据。如果此数据符合您的需求,请选择“基于 XMP 数据创建条目”。通常,XMP 元数据不够好。选择“基于内容创建条目”。
点击“确定”开始导入
打开一个对话框询问链接 您可以选择“将文件保留在当前目录中”以将文件保留在原处。通常,这就是人们想要的。如果您选择“将文件移动到文件目录”,您还可以选择将文件重命名为生成的 BibTeX 密钥。
按“确定”将文件链接到 BibTeX 条目
每个文件都会发生这种情况。之后,会显示“查找未链接的文件”对话框。只需单击“关闭”即可关闭它。
您现在可以保存文件并且已经完成。
更多信息
适用的 PDF
基于内容的导入器是为 IEEE 编写的,伦斯勒公司格式的论文。其他格式尚不支持。如果在第一页找到 DOI,则使用 DOI 生成 BibTeX 信息。
下一步开发是提取 PDF 的标题,使用“查找 DOI”,然后从 DOI 获取 BibTeX 数据来自 JabRef 的功能来获取 BibTeX 数据。
我们也思考使用另一个库完全替换代码。这需要付出很多努力,而且没有时间表。
更好的文件名
JabRef 还提供更改文件名的功能。您可以在“首选项”->“导入”中调整模式
选择“选择模式”,然后选择“bibtexkey - 标题” 其结果为设置“\bibtexkey\begin{title} - \format[RemoveBrackets]{\title}\end{title}”。
这使得文件名以 bibtey 键开头,后跟完整标题。在具体情况下,\bibtexkey
only 可能是更好的选择,因为描述的 bibtey 键已经包含标题。
测试过 JabRef 版本
必须使用最新版本的 JabRef。JabRef 3.6 无法使用此功能:https://github.com/JabRef/jabref/issues/2214
图书馆学博士
JabRef 曾经支持图书馆学博士,返回完整的 BibTeX 条目或 PDF。由于所用图书馆的版权情况不明,该服务已被删除。此外,Mr.DLib 改变了其重点,并将提供文献推荐。参见https://github.com/JabRef/jabref/pull/2189。
相关问题:
答案2
在 Unix 系统(例如 Ubuntu)上安装萨佩斯:
sudo apt-get install xapers
Xapers 将从 PDF 中提取元信息,例如 doi。然后可以使用它来查询http://dx.doi.org/
这个 bash 脚本提供了一个良好的开端:
#!/bin/bash
for f in *.pdf; do
id=`xapers scandoc $f | head -n1`
echo $f $id
url="http://dx.doi.org/"$id
echo "`curl -LH 'Accept: application/x-bibtex' $url`"$'\n' >> bibfile.txt
done
答案3
为了完整起见,我将提供一个针对 Emacs 的答案。
如果您是 Emacs 用户或愿意为此特定目的安装 Emacs,请查看此软件包:
https://github.com/jkitchin/org-ref
它包含一个名为 的函数org-ref-pdf-dir-to-bibtex
。它尝试从 *.pdf 文件目录中聚合所有 bibtex 信息。根据我的经验,它不适用于非常异构的目录,即来自不同来源的论文。如果您的文件主要来自 arXiv,那么这可能非常有效,因为该包专门支持 arXiv。
如果仍然遇到冲突,您还可以使用org-ref-pdf-to-bibtex
一些交互来处理单个文件。例如,如果解析器在文件中找到两个可能的 DOI 候选者,这可能很重要。在这种情况下,从弹出的对话框中选择正确的候选者通常非常简单。
答案4
pdf2bib
它是一个 Python 库,其功能正如其名称所示。
https://pypi.org/project/pdf2bib/
用法:
$ pdf2bib file.pdf
⟨⟹ prints the bib content⟩
根据我的经验,它运行完美;除非它没有 DOI,否则程序将尝试在 Google 上搜索 PDF 文本并获取第一个包含 DOI 的搜索结果(这当然不是所需的论文)
在另一个网站上也可以找到同样的问题: 引用 - 是否有一个开源工具可以从纸质 PDF 生成 bibtex 条目? - Academia Stack Exchange。那里有更多的解决方案。