latexmk 忽略嵌入文件

latexmk 忽略嵌入文件

我有一个 TeX 文件,其中嵌入了来自命令的文件\embedfile{\jobname.org}。我想latexmk在嵌入文件发生更改时停止运行。没有官方选项可以latexmk忽略某些文件,但在我的特定用例中,似乎可以使用该$hash_calc_ignore_pattern选项。

我已将下面的每一个内容(一次一个)添加到我的~/.latexmkrc

$hash_calc_ignore_pattern{'pdf'} = '^\\embedfile{\\jobname.org}';
$hash_calc_ignore_pattern{'pdf'} = 'jobname.org';
$hash_calc_ignore_pattern{'pdf'} = '.*jobname.org.*';

但是,每次我更改文件时.orglatexmk它仍然会运行。有人能给出如何让此功能正常运行的建议吗?

答案1

这里有两种解决方案,具体取决于您的需求。

设置的值$hash_calc_ignore_pattern{'pdf'}不是您想要的,因为这指示latexmk忽略.pdf文件中的某些行。相反,您可以通过以下方式指示latexmk忽略.org文件中的所有行

$hash_calc_ignore_pattern{'org'} = '^';

这将适用于所有带有扩展名的文件.org,而不仅仅是\jobname.org

另一种方法是安排在每次运行时从生成的文件pdflatex中删除使用嵌入文件的症状。 latexmkrc 文件中的以下内容对我有用:.flspdflatex

$pdflatex = "pdflatex %O %S && ".
"perl -i -p -e \"s[^INPUT (\./|)\"%R\"\\.org\\s*\$][];\" %Y%R.fls";

(我将定义分成两行以确保复制和粘贴的安全。有一些 UNIX 特有的魔法可以确保引用在传递给系统的命令行上正常工作。)

相关内容