latexmk não pode criar documento com mpost

latexmk não pode criar documento com mpost

Eu uso latexmk 4.77. A seguir está meu arquivo .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;
}

No meu arquivo mp eu configurei

prologues := 2;
outputtemplate := "%j.mps";

para que realmente um arquivo mps seja criado. Em um arquivo tex acabei de incluir os mps com \includegraphics, mas isso é irrelevante neste contexto.

O comportamento de latexmké bastante estranho: a execução latexmkreclama diretamente da falta de arquivo gráfico. Mas então, se eu executar latexmk -pvce comandar scrollmode e interromper, no final, os arquivos serão compilados corretamente.

Eu também tentei add_cus_dep('mp', '1', 1, 'mpost');, sem alteração. O que estou fazendo de errado? É possivelmente um problema geral que o latexmk não pode compilar em situações onde antes da primeira execução do latex alguns arquivos já devem ser gerados???

Esta seria uma lacuna considerável, uma vez que se aplica a vários tipos de gráficos.

Responder1

Esta é na verdade uma resposta roubada: John Collins deu a dica decisiva:

na inserção .latexmkrc set_tex_cmds('-interaction=nonstopmode %O %S');

Se um arquivo gráfico ainda não estiver presente, um aviso será emitido e o arquivo será criado. Na próxima corrida de látex, está tudo bem.

No entanto, há um ponto especial com o metapost: use

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

O prólogo causará a criação de um arquivo mps. Descobri que ao incluir with \includegraphics, o final deve ser fornecido.

Dessa forma também outros arquivos gráficos parecem funcionar. Eu tentei com arquivos xfig, funciona bem.

informação relacionada