似乎最新版本的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.67 版的一个错误。它已在 2.68 版中修复。由于 2.68 版尚未正式发布,您可以从以下存储库获取最新版本:https://github.com/ge-ne/bibtool/ 我将在不久的将来正式发布。
任何不便敬请谅解。
Gerd(BibTool 的作者和维护者)