latexmk 埋め込みファイルを無視する

latexmk 埋め込みファイルを無視する

コマンドからの埋め込みファイルを含む TeX ファイルがあります\embedfile{\jobname.org}。埋め込みファイルが変更されたときに実行を停止したいと思いますlatexmk。 には特定のファイルを無視する公式オプションはありませlatexmkんが、私の特定の使用例では オプションでそれが可能になるようです$hash_calc_ignore_pattern

私は以下の各項目を(一度に 1 つずつ) に追加しました~/.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

ニーズに応じて、2 つのソリューションがあります。

の値を設定するのは、ファイル内の特定の行を無視するように$hash_calc_ignore_pattern{'pdf'}指示するため、望んでいることではありません。代わりに、ファイル内のすべての行を無視するように指示することができます。latexmk.pdflatexmk.org

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

.orgこれは、 だけでなく、拡張子 を持つすべてのファイルに適用されます\jobname.org

代替案としては、 を実行するたびに、pdflatex埋め込みファイルの使用の症状が.flsによって生成されたファイルから削除されるように設定することですpdflatex。私の場合は、latexmkrc ファイルで次のようにするとうまくいきました。

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

(コピーと貼り付けを安全に行うために、定義を 2 行に分割しました。システムに渡されるコマンド ラインで引用符が正しく機能するようにするための UNIX 固有のマジックがあります。)

関連情報