修改 .aux 输出 \bibdata,使用带有构建目录的 biblatex/bibtex8

修改 .aux 输出 \bibdata,使用带有构建目录的 biblatex/bibtex8

我想使用biblatex,但在使用时出现错误bibtex8(或其他后端,无所谓)。我已经确定了问题所在:我正在使用“build”目录。

所以我的文件结构是:

myfile.tex
mybib.bib
/build [all copiled files go here, including myfile.aux and myfile-blx.bib]

在我的.tex我有:

\addbibresource{mybib.bib}

在文件中生成以下内容.aux

\bibdata{myfile-blx,mybib}

现在bibtex8使用(Texmaker)从基础目录运行:

bibtex8 --wolfgang build/%

它正确地找到了该.aux文件和该mybib.bib文件,但没有找到该-blx.bib文件。

我目前有三种解决方法:

  • 不使用构建目录,所以所有内容都在一个目录中(我不喜欢这样)
  • 运行 (pdf)latex 后手动将-blx.bib文件复制到父目录
  • 手动编辑.aux文件以:\bibdata{build/myfile-blx,mybib}

显然,这些都不是我们想要的。

那么我怎样才能自动将这一行添加到我的.aux文件中呢?

\bibdata{build/myfile-blx,mybib}

编辑2012-09-04:

@PLK:我会尝试使用biber。但我在两台机器上使用它。主工作站是 Windows 7 64 位,而 biber 主页上没有它的二进制文件。32 位无法执行。

我主要在 [Windows 7,64 位,miktex、texmaker、jabref] 上运行,也在 [xubuntu,32 位,texlive、texmaker、jabref] 上运行。

我个人认为最小的例子并不是那么有用,因为除非我使用构建目录,否则所有内容都会编译而没有任何错误。MWE:

\documentclass[a4paper, fontsize=12pt]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{mybib.bib}
% This file was created with JabRef 2.8.1.
% Encoding: ISO8859_1

@ARTICLE{author2010,
  author = {Some Author},
  title = {Fancy Title},
  journal = {Another Journal},
  year = {2010},
  volume = {91},
  pages = {229-261},
  number = {2},
  timestamp = {2012.09.01}
}

@comment{jabref-meta: selector_review:}

@comment{jabref-meta: selector_publisher:}

@comment{jabref-meta: selector_author:}

@comment{jabref-meta: selector_journal:}

@comment{jabref-meta: selector_keywords:}
\end{filecontents}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel}

\usepackage{csquotes}
\usepackage[backend=bibtex8,bibencoding=latin1]{biblatex}
\addbibresource{mybib.bib}

\begin{document}

\section{Section}
Lots of text.
\footnote[111]{\cite[S.~250--255]{author2010}}

\printbibliography

\end{document}

如上所述,没有构建目录时,一切都会顺利运行。当我使用构建目录时,第一次pdflatex运行正常。然后bibtex8在文件中产生以下错误/输出./build/myfile.blg

The 8-bit codepage and sorting file: 88591lat.csf
The top-level auxiliary file: build/myfile.aux
The style file: biblatex.bst
I couldn't open database file myfile-blx.bib
---line 4 of file build/myfile.aux
 : \bibdata{myfile-blx
 :                    ,mybib}
I'm skipping whatever remains of this command

这是因为它期望myfile-blx.bibmybib.bib都位于父目录中./。如上所述,我可以通过.aux运行前手动编辑文件来解决bibtex8。当我这样做时,它运行时不会出现错误。

答案1

biber选项--output_directory可以解决这个问题。

答案2

我认为您正在寻找的是BIBINPUTS来自bibtex手册页的环境变量。

对于您来说,bibtex编译脚本的部分内容可能是:

export BIBINTPUTS=..
cd build
bibtex myfile
cd ..

我发现这个读物

相关内容