Eu tenho um arquivo TeX com um arquivo incorporado do comando \embedfile{\jobname.org}
. Gostaria de interromper latexmk
a execução quando o arquivo incorporado for alterado. Não existe uma opção oficial para latexmk
ignorar determinados arquivos, mas parece que no meu caso de uso específico isso pode ser possível com a $hash_calc_ignore_pattern
opçã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 .org
arquivo, latexmk
ele 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 latexmk
a ignorar certas linhas nos .pdf
arquivos. Em vez disso, você pode instruir latexmk
para ignorar todas as linhas nos .org
arquivos,
$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 pdflatex
os sintomas do uso do arquivo incorporado sejam removidos do .fls
arquivo 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.)