私はlatexmk 4.77を使用しています。以下は私の.latexmkrcファイルです
$pdf_mode = 4;# specifies creation of pdf via lualatex
$bibtex_use = "2";# to configure bibtex
$cleanup_includes_cusdep_generated = 1;
push @generated_exts, "lol";
$clean_ext .= " %R.synctex.gz";
# graphics by metapost
add_cus_dep('mp', 'mps', 0, 'mpost');
# sub mpost {
# #return system("mptopdf $_[0].mp");
# return system("mpost $_[0].mp");
# }
# metapost rule from http://tex.stackexchange.com/questions/37134
#add_cus_dep('mp', '1', 0, 'mpost');
sub mpost {
my $file = $_[0];
my ($name, $path) = fileparse($file);
pushd($path);
my $return = system("mpost $name");
popd();
return $return;
}
私のmpファイルでは
prologues := 2;
outputtemplate := "%j.mps";
実際に mps ファイルが作成されます。tex ファイルでは、\includegraphics を使用して mps を含めましたが、このコンテキストではこれは重要ではありません。
の動作はlatexmk
非常に奇妙です。latexmk
直接実行すると、グラフィック ファイルが見つからないというエラーが表示されます。ただし、latexmk -pvc
scrollmode コマンドを実行して中断すると、最後にファイルが正しくコンパイルされます。
私も試しましたがadd_cus_dep('mp', '1', 1, 'mpost');
、変化はありませんでした。何が間違っているのでしょうか? 最初の LaTeX 実行前にいくつかのファイルがすでに生成されている必要がある状況では、LaTeXmk がコンパイルできないという一般的な問題でしょうか?
これはさまざまな種類のグラフィックスに適用されるため、かなりのギャップになります。
答え1
これは実は盗まれた答えです。ジョン・コリンズが決定的なヒントを与えました。
.latexmkrcに挿入
set_tex_cmds('-interaction=nonstopmode %O %S');
グラフィック ファイルがまだ存在しない場合は、警告が表示され、ファイルが作成されます。次の LaTeX 実行では、すべて正常です。
しかし、メタポストには特別な点が1つあります。
mpost -interaction=nonstopmode -recorder -s prologues=2
プロローグにより、mps ファイルが作成されます。 をインクルードする場合は\includegraphics
、エンディングを指定する必要があることがわかりました。
この方法では、他のグラフィック ファイルも機能するようです。xfig ファイルで試してみましたが、問題なく動作しました。