假设我有三个目录src
、aux-dir
和out-dir
,它们都位于同一个工作区目录 中work
,还有一些独立但格式相似的文件bleb1.tex
、bleb2.tex
、... 位于 中src
。我想通过配置latexmk
将一些文件编译bleb<i>.tex
成 ,bleb<i>.pdf
这样辅助文件就会写入 的子目录中bleb<i>
,aux-dir
而输出文件(例如bleb<i>.pdf
)则会写入 的子目录中bleb<i>
。out-dir
由于会有许多bleb<i>.tex
文件,我想避免在第一次编译每个文件之前手动创建这些子目录bleb<i>.tex
。
为此,我定义了一个自定义latexmk
配置文件work
。我知道在配置文件中,辅助文件目标和输出文件目标可以分别通过变量$aux_dir
和$out_dir
指定,这latexmk
甚至非常方便,即使变量中指定的路径尚不存在,也可以创建它们。但是,我不知道如何让子目录名称依赖于bleb<i>
源 .tex 文件的基本名称。
除了覆盖命令变量(例如)之外,配置文件中的任何占位符变量%A
、等似乎都无法访问。我的第一次尝试是更改为访问源文件名并将其插入到我自己的子程序中。我的第二次尝试是尝试将和变量设置为包含要在挂钩上调用的自定义子程序中给出的文件名的路径。对于这两次尝试,在默认情况下将所有辅助和输出文件吐入之前,都没有发现对和的更改。的文档似乎没有指定如何在配置文件中以任何其他方式访问 latexmk 传递的命令行参数(特别是源文件名)。在第三次尝试中,我没有更改和,而是尝试更改第一次尝试中在子程序内部对进行的Perl 调用中的相应和标志,但是,同样,忽略了这些标志并只转储中的文件。%R
$latex = "latex %O %S"
$latex
internal mylatex %A
$aux_dir
$out_dir
mylatex
$aux_dir
$out_dir
$$Pbase
before_xlatex
latexmk
$aux_dir
$out_dir
work
latexmk
$aux_dir
$out_dir
-aux-directory
-output-directory
system
latex
mylatex
latexmk
work
此时我意识到我最初计划的目录结构work
并不理想,因为可能会出现一些问题,比如说,bibtex
但我已经花了足够多的时间来尝试让最初的计划发挥作用,我很好奇想看看它是否可行,或者我是否误解了的一些基本设计原则latexmk
。
答案1
目前,latexmk 不支持您请求的功能。可以实现它;这将需要更改 latexmk 在开始处理 tex 文件之前使用的代码。目前
您所做的尝试都太迟了,无法完成所需的操作。在对给定的 .tex 文件进行初始化后,目录$aux_out
和$out_dir
需要保持固定,并让 latexmk 知道。