latexmk 单独构建目录

latexmk 单独构建目录

我第一次尝试latexmk在 Ubuntu 中使用。我的项目目录如下:

  • 项目
    • 源码
    • 建造
    • 图片

目录中src.tex.bib文件。我希望.aux.bbl.log文件进入构建目录。

在根目录中我有以下脚本:

#!/bin/sh

if [ $# -gt 0 ];then
    if [ $1 = "-c" ];then
        cd build
        latexmk -c ../src/poly-paper.tex
    fi
else
    cd build
    latexmk -pdf ../src/poly-paper.tex
    mv poly-paper.pdf ..
fi

问题是使用此脚本会导致找不到参考书目。我的latexmk是 v4.24,不支持这些-auxdir命令,我​​不得不放弃它,以便其他人也可以编译它。

有人可以提出一个解决方案吗?

编辑:我不知道latexmk这是一个简单的脚本,所以我安装了最新版本,但在使用-auxdir-outdir命令时遇到了问题。问题是 Ubuntu 自带的 TexLive 2009 不支持-output-directoryfor pdflatex

答案1

如果底层latex命令不支持该-output-directory选项,则latexmk-outdir选项将不起作用。

您正在使用的脚本的一个简单解决方案是设置 BIBINPUTS 环境变量以包含源目录,例如,

export BIBINPUTS=:../src

答案2

补充一下 John 的回答,需要注意的是,您不需要单独的脚本。我使用下面的代码latexmkrc来编译所有内容_build;由于我只有一个目标,因此这大大简化了。

system ("mkdir -p _build; ln -f -s ../src/main.tex _build/main.tex");
$ENV{'TEXINPUTS'}='../src:../lib:../img:';
$ENV{'BIBINPUTS'}='../src:';

@default_files = ('_build/main.tex');
$do_cd = 1

这甚至可以与 TeXlive 一起使用,因为它不依赖于 LaTeX 二进制文件的附加选项。

相关内容