使用 时bibtex
,需要提供命令(如\bibliography{test}
文档中所示)来指示使用 bibfile test.bib
,并省略扩展名。但是,用户自然也会提供扩展名,如\bibliography{test.bib}
。在这种情况下, 的实际行为及其日志文件的内容与屏幕输出之间存在差异bibtex
:
如果
\bibliography{test.bib}
在文档中,则bibtex
打开并读取test.bib
,这从用户的角度来看很自然。但是bibtex
报告说它打开了文件test.bib.bib
:Database file #1: test.bib.bib
如果该文件
test.bib
不存在,但是文件test.bib.bib
确实存在,那么 bibtex 就会失败,而且,即使该文件存在,它也会显示以下错误消息:I couldn't open database file test.bib.bib
如果附加了非 bib 扩展名,如
\bibliography{test.tbb}
,则bibtex
使用test.tbb.bib
。
(测试是在当前安装的 TeXLive 2012 上进行的。)
看起来,其主要逻辑bibtex
及其消息的工作方式好像扩展名.bib
始终添加到用户提供的文件名中。但是,只要存在.bib
双扩展名,文件打开例程就会默默地打开带有扩展名的文件,而不是 .bib.bib 。.bib
这是有记录的行为吗?这是 TeXLive 2012 版 bibtex 特有的行为吗?还是在所有版本中都一样bibtex
?
这个答案为什么重要? 我是 的维护者,它会自动根据和文件latexmk
中的信息确定依赖关系。 需要找出所使用的文件的名称,并分析 中的错误消息。如果上述错误/功能存在版本依赖性,并且在其日志文件 ( ) 中输入了不正确的信息,则 很难确定该怎么做。.log
.aux
latexmk
.bib
bibtex
bibtex
bibtex
.blg
latexmk
答案1
MiKTeX 不会表现出相同的行为(至少在我的系统上),并且只会在附加后查找文件.bib
(因此查找.bib.bib
是否.bib
已经存在)。TeXLive 显示与实际打开的文件名不同的文件名的行为bibtex
显然是一个错误,而不是记录的行为。最好在 TeXLive 端修复此错误,并且latexmk
仍然可以警告错误的扩展名,因为它不正确且不可移植。