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 檔案中,我只是將 mps 包含在 \includegraphics 中,但這在這種情況下並不重要。

的行為latexmk很奇怪:latexmk直接運行抱怨缺少圖形檔。但是,如果我運行latexmk -pvc並命令滾動模式併中斷,最後,文件將被正確編譯。

我也嘗試過add_cus_dep('mp', '1', 1, 'mpost');,沒有改變。我究竟做錯了什麼?在第一次 Latex 運行之前必須已經產生一些檔案的情況下,latexmk 無法編譯可能是普遍問題?

這將是一個相當大的差距,因為這適用於各種圖形。

答案1

這其實是一個被偷的答案:約翰‧柯林斯給了決定性的暗示:

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

如果圖形檔案尚不存在,則會發出警告並建立檔案。在下一次乳膠運行中,一切正常。

然而,metapost 有一個特殊點:使用

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

序言將導致創建 mps 檔案。我發現當包含 with 時\includegraphics,必須給出結尾。

這樣其他圖形檔案似乎也可以運作。我嘗試使用 xfig 文件,工作正常。

相關內容