我认识到biber
总是用指定的完全编译output-directory
。
设置:
1)PdfLaTex
通过 编译我的 tex 文档的所有 aux 文件pdflatex -synctex=1 -interaction=nonstopmode -aux-directory=+Aux_Files %.tex
。
2a) 使用它来编制参考书目时biber.exe --input-directory=+Aux_Files --output-directory=+Aux_Files %
总是进行完整的编制。
2b) 编译时biber.exe --input-directory=+Aux_Files %
仅在发生更改时进行编译(这是希望的),但将存储*.bbl
在*.blg
主目录中(这是不希望的)。
有人知道在指定时如何修复“始终新编译”问题吗output-directory
?我希望将*.bbl
和*.blg
存储在+Aux_Files
目录中,而不是每次都进行完整编译。
答案1
作为乌尔丽克·菲舍尔 评论、比伯总是调用时执行完整的编译运行。Biber 不会(目前)检测任何更改,只能执行“增量”运行或仅在需要时运行(从和.bib
文件.bcf
)。
如果仅在引文或参考书目发生变化时才运行 Biber,则说明您已经在使用脚本或其他实用程序来检测这些变化并自动运行 Biber。
如果 Biber 的输出文件被转移,则该工具可能无法正确接收 Biber 运行--output-directory
(我猜想您的工具会检查.bbl
文件是否存在,如果找不到,则重新运行 Biber,并将文件--output-directory
定向.bbl
到子目录中,而脚本显然不会检查子目录)。特别是您将构建目录信息直接传递给 Biber 和 pdfLaTeX 这一事实可能意味着您的工具/脚本甚至不知道“构建目录”,也不会考虑在那里检查文件。如果您的工具/脚本支持“构建目录”,您可能需要直接告诉它。
不要使用构建目录:它们给您带来的麻烦远比它们可能给您带来的有限好处多得多。
“构建目录”的问题在于它们会导致辅助文件出现在意想不到的地方。内容根本不在每个人预期的位置。
如果您的文档只需要使用 LaTeX 运行,这可能不是什么大问题,但如果涉及到 BibTeX/Biber(用于参考书目)或makeindex
/ makeglossaries
(用于索引)等其他工具,情况就会变得越来越令人沮丧。本质上,辅助程序假设它们用于与 LaTeX 通信的辅助文件位于工作目录中(通常应该是主文件的目录.tex
):它们希望找到由 LaTeX 编写的辅助文件来告诉它们在那里做什么,它们也会编写自己的辅助文件,将某些数据反馈给 LaTeX。如果您使用“构建目录”,LaTeX 会将辅助文件输出到构建目录。现在,辅助工具将无法在工作目录中找到这些文件,它们需要转到“构建目录”。但随后,这些工具需要确保它们仍然解析.bib
相对于工作目录而不是“构建目录”的所有其他文件名(例如文件)。
某些工具(例如 Biber)具有可帮助其处理“构建目录”的选项,但如果某些工具根本无法处理工作目录和“构建目录”之间的差异,我不会感到太惊讶。