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 -pvc并命令 scrollmode 和中断,最后文件就会被正确编译。

我也试过了add_cus_dep('mp', '1', 1, 'mpost');,没有变化。我做错了什么?在第一次运行 latex 之前必须先生成一些文件的情况下,latexmk 无法编译,这可能是一个普遍的问题吗???

因为这适用于各种类型的图形,所以这将是一个相当大的差距。

答案1

这实际上是一个偷来的答案:约翰·柯林斯给出了决定性的暗示:

在 .latexmkrc 中插入 set_tex_cmds('-interaction=nonstopmode %O %S');

如果图形文件尚不存在,则会发出警告并创建文件。在下一次运行 latex 时,一切正常。

不过 metapost 有一个特殊之处:使用

mpost -interaction=nonstopmode -recorder -s prologues=2 

序言将导致创建一个 mps 文件。我发现,当包含 时\includegraphics,必须给出结尾。

这样其他图形文件似乎也能正常工作。我尝试使用 xfig 文件,工作正常。

相关内容