latexmk ignora arquivo incorporado

latexmk ignora arquivo incorporado

Eu tenho um arquivo TeX com um arquivo incorporado do comando \embedfile{\jobname.org}. Gostaria de interromper latexmka execução quando o arquivo incorporado for alterado. Não existe uma opção oficial para latexmkignorar determinados arquivos, mas parece que no meu caso de uso específico isso pode ser possível com a $hash_calc_ignore_patternopção.

Eu adicionei cada um dos seguintes (um de cada vez) ao meu ~/.latexmkrc:

$hash_calc_ignore_pattern{'pdf'} = '^\\embedfile{\\jobname.org}';
$hash_calc_ignore_pattern{'pdf'} = 'jobname.org';
$hash_calc_ignore_pattern{'pdf'} = '.*jobname.org.*';

Porém, sempre que altero o .orgarquivo, latexmkele ainda funciona. Alguém tem algum conselho sobre como fazer essa funcionalidade funcionar?

Responder1

Aqui estão duas soluções, dependendo de suas necessidades.

Definir o valor de $hash_calc_ignore_pattern{'pdf'}não é o que você deseja, porque instrui latexmka ignorar certas linhas nos .pdfarquivos. Em vez disso, você pode instruir latexmkpara ignorar todas as linhas nos .orgarquivos,

$hash_calc_ignore_pattern{'org'} = '^';

Isso se aplicará a todos os arquivos com extensão .org, não apenas a \jobname.org.

Uma alternativa é providenciar que a cada execução pdflatexos sintomas do uso do arquivo incorporado sejam removidos do .flsarquivo gerado por pdflatex. O seguinte em um arquivo latexmkrc funcionou para mim:

$pdflatex = "pdflatex %O %S && ".
"perl -i -p -e \"s[^INPUT (\./|)\"%R\"\\.org\\s*\$][];\" %Y%R.fls";

(Dividi a definição em duas linhas para tornar a cópia e a colagem seguras. Há alguma mágica específica do UNIX para garantir que a citação funcione corretamente na linha de comando que é passada para o sistema.)

informação relacionada