latexmk は mpost でドキュメントを作成できません

latexmk は mpost でドキュメントを作成できません

私は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 -pvcscrollmode コマンドを実行して中断すると、最後にファイルが正しくコンパイルされます。

私も試しましたが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 ファイルで試してみましたが、問題なく動作しました。

関連情報