当在 \bibliography 中给出扩展名时,bibfile 的名称是什么?

当在 \bibliography 中给出扩展名时,bibfile 的名称是什么?

使用 时bibtex,需要提供命令(如\bibliography{test}文档中所示)来指示使用 bibfile test.bib,并省略扩展名。但是,用户自然也会提供扩展名,如\bibliography{test.bib}。在这种情况下, 的实际行为及其日志文件的内容与屏幕输出之间存在差异bibtex

  1. 如果\bibliography{test.bib}在文档中,则bibtex打开并读取test.bib,这从用户的角度来看很自然。但是bibtex报告说它打开了文件test.bib.bib

    Database file #1: test.bib.bib
    
  2. 如果该文件test.bib不存在,但是文件test.bib.bib确实存在,那么 bibtex 就会失败,而且,即使该文件存在,它也会显示以下错误消息:

    I couldn't open database file test.bib.bib
    
  3. 如果附加了非 bib 扩展名,如\bibliography{test.tbb},则bibtex使用test.tbb.bib

(测试是在当前安装的 TeXLive 2012 上进行的。)

看起来,其主要逻辑bibtex及其消息的工作方式好像扩展名.bib始终添加到用户提供的文件名中。但是,只要存在.bib双扩展名,文件打开例程就会默默地打开带有扩展名的文件,而不是 .bib.bib 。.bib

这是有记录的行为吗?这是 TeXLive 2012 版 bibtex 特有的行为吗?还是在所有版本中都一样bibtex

这个答案为什么重要? 我是 的维护者,它会自动根据和文件latexmk中的信息确定依赖关系。 需要找出所使用的文件的名称,并分析 中的错误消息。如果上述错误/功能存在版本依赖性,并且在其日志文件 ( ) 中输入了不正确的信息,则 很难确定该怎么做。.log.auxlatexmk.bibbibtexbibtexbibtex.blglatexmk

答案1

MiKTeX 不会表现出相同的行为(至少在我的系统上),并且只会在附加后查找文件.bib(因此查找.bib.bib是否.bib已经存在)。TeXLive 显示与实际打开的文件名不同的文件名的行为bibtex显然是一个错误,而不是记录的行为。最好在 TeXLive 端修复此错误,并且latexmk仍然可以警告错误的扩展名,因为它不正确且不可移植。

相关内容