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스크롤 모드와 인터럽트를 실행하고 명령하면 결국 파일이 올바르게 컴파일됩니다.

나는 또한 시도했지만 add_cus_dep('mp', '1', 1, 'mpost');변화가 없었습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 첫 번째 라텍스 실행 전에 일부 파일이 이미 생성되어야 하는 상황에서 latexmk가 컴파일할 수 없는 일반적인 문제일까요???

이는 다양한 종류의 그래픽에 적용되기 때문에 상당한 격차가 될 것입니다.

답변1

이것은 실제로 훔친 답변입니다. John Collins는 결정적인 힌트를 제공했습니다.

.latexmkrc 삽입 set_tex_cmds('-interaction=nonstopmode %O %S');

그래픽 파일이 아직 없으면 경고가 표시되고 파일이 생성됩니다. 다음 라텍스 실행에서는 모든 것이 정상입니다.

그럼에도 불구하고 메타포스트에는 한 가지 특별한 점이 있습니다.

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

프롤로그로 인해 mps 파일이 생성됩니다. 를 포함할 때 \includegraphics엔딩을 주어야 한다는 것을 알았습니다 .

그렇게 하면 다른 그래픽 파일도 작동하는 것 같습니다. xfig 파일로 시도했는데 잘 작동합니다.

관련 정보