从 LaTeX/BibTeX 中的辅助文件中提取参考书目信息时,bibtool 出现问题

从 LaTeX/BibTeX 中的辅助文件中提取参考书目信息时,bibtool 出现问题

似乎最新版本的bibtool(2.67)读取 .aux 文件时出现问题。

MWE(来自这里):

1. 一个名为exampl_01.tex

\documentclass{article}

\begin{document}

Random citation \cite{DUMMY:1} embedded in text.

\newpage

\bibliography{lesson7a1} 
\bibliographystyle{plain}

\end{document}

2. 一个名为的文件lesson7a1.bib

@BOOK{DUMMY:1,
AUTHOR="John Doe",
TITLE="The Book without Title",
PUBLISHER="Dummy Publisher",
YEAR="2100",
}

将上述内容 LaTeX 化后,我们得到(其中包括)文件exampl_01.aux,其内容为

\relax 
\citation{DUMMY:1}
\bibdata{lesson7a1}
\bibcite{DUMMY:1}{1}
\bibstyle{plain}

然后我们运行bibtool如下

bibtool  -x exampl_01.aux -o used_references.bib

我们得到输出

*** BibTool WARNING: File bibstyle not found.

文件used_references.bib已生成,但是是空的。

请注意手动的(第 10-11 页,1.2.4. 提取文档的条目) 给出以下示例命令:bibtool -x document.aux -o document.bib。因此,上面的命令似乎应该有效,但事实并非如此。

\bibstyle{plain}如果我们只是从 .aux 文件中删除该行并重新运行 bibtool,我们会收到错误消息

*** BibTool WARNING: File bibcite not found.

文件used_references.bib再次为空。最后,如果我们也从 .aux 文件中
删除该行并重新运行 bibtool,我们将不会收到任何错误消息,并且文件包含我们期望的内容,即\bibcite{DUMMY:1}{1}used_references.bib

@Book{        dummy:1,
  author    = "John Doe",
  title     = "The Book without Title",
  publisher = "Dummy Publisher",
  year      = "2100"
}

我在 kubuntu 18.04 和 cygwin 下都看到了这种行为。在 bibtool 文档中,我没有看到对此的提及。

我以前能够毫无错误地做到这一点。

这是最新版本的 bibtool 中的错误吗?(实际上这并不是什么新问题:执行后bibtool -help会将 2017 年作为最近的年份。)我做错了什么吗?

到目前为止,有一种对我有用的技巧:使用grep从 .aux 文件中提取相关行(即以\citation或开头的行\bibdata),然后bibtool在该文件上运行。以下是其中一种方法:

grep -E '\\citation|\\bibdata' exampl_01.aux  > cleaned-up_aux_file.aux
bibtool  -x cleaned-up_aux_file.aux -o used_citations_01.bib 
rm cleaned-up_aux_file.aux

问题是我并不真正了解 BibTeX 或bibtool“幕后”工作原理的细节,所以我不知道这种方法是否真的能在所有情况下解决问题,或者我到目前为止只是很幸运。

问题:

  1. 所描述的行为是一个错误吗?

  2. 有没有比我所描述的解决方法更好的方法?

  3. 我的黑客行为会造成什么潜在问题吗?

答案1

这实际上是 2.67 版的一个错误。它已在 2.68 版中修复。由于 2.68 版尚未正式发布,您可以从以下存储库获取最新版本:https://github.com/ge-ne/bibtool/ 我将在不久的将来正式发布。

任何不便敬请谅解。

Gerd(BibTool 的作者和维护者)

相关内容