我第一次尝试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-directory
for 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 二进制文件的附加选项。