latexmk ignora el archivo incrustado

latexmk ignora el archivo incrustado

Tengo un archivo TeX con un archivo incrustado del comando \embedfile{\jobname.org}. Me gustaría dejar latexmkde ejecutarlo cuando cambie el archivo incrustado. No existe una opción oficial para latexmkignorar ciertos archivos, pero parece que en mi caso de uso específico podría ser posible con la $hash_calc_ignore_patternopción.

Agregué cada uno de los siguientes (uno a la vez) a mi ~/.latexmkrc:

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

Sin embargo, cada vez que cambio el .orgarchivo, latexmktodavía se ejecuta. ¿Alguien tiene algún consejo sobre cómo hacer funcionar esta funcionalidad?

Respuesta1

Aquí hay dos soluciones, dependiendo de sus necesidades.

Establecer el valor de $hash_calc_ignore_pattern{'pdf'}no es lo que desea, porque eso indica latexmkque se ignoren ciertas líneas en .pdflos archivos. En su lugar, puede indicar latexmkque se ignoren todas las líneas de .orglos archivos mediante

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

Esto se aplicará a todos los archivos con extensión .org, no sólo a \jobname.org.

Una alternativa es disponer que en cada ejecución pdflatexlos síntomas del uso del archivo incrustado se eliminen del .flsarchivo generado por pdflatex. Lo siguiente en un archivo latexmkrc funcionó para mí:

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

(He dividido la definición en dos líneas para que copiar y pegar sea seguro. Hay algo de magia específica de UNIX para garantizar que las comillas funcionen correctamente en la línea de comando que se pasa al sistema).

información relacionada