我有一个 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.*';
但是,每次我更改文件时.org
,latexmk
它仍然会运行。有人能给出如何让此功能正常运行的建议吗?
答案1
这里有两种解决方案,具体取决于您的需求。
设置的值$hash_calc_ignore_pattern{'pdf'}
不是您想要的,因为这指示latexmk
忽略.pdf
文件中的某些行。相反,您可以通过以下方式指示latexmk
忽略.org
文件中的所有行
$hash_calc_ignore_pattern{'org'} = '^';
这将适用于所有带有扩展名的文件.org
,而不仅仅是\jobname.org
。
另一种方法是安排在每次运行时从生成的文件pdflatex
中删除使用嵌入文件的症状。 latexmkrc 文件中的以下内容对我有用:.fls
pdflatex
$pdflatex = "pdflatex %O %S && ".
"perl -i -p -e \"s[^INPUT (\./|)\"%R\"\\.org\\s*\$][];\" %Y%R.fls";
(我将定义分成两行以确保复制和粘贴的安全。有一些 UNIX 特有的魔法可以确保引用在传递给系统的命令行上正常工作。)