latexmk игнорировать встроенный файл

latexmk игнорировать встроенный файл

У меня есть файл TeX со встроенным файлом из команды \embedfile{\jobname.org}. Я хотел бы прекратить latexmkзапуск при изменении встроенного файла. Официальной опции для игнорирования определенных файлов нет latexmk, но, похоже, в моем конкретном случае использования это может быть возможно с помощью $hash_calc_ignore_patternопции.

Я добавил каждый из следующих пунктов (по одному за раз) в свой ~/.latexmkrc:

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

Однако, всякий раз, когда я меняю файл .org, latexmkвсе равно запускается. Есть ли у кого-нибудь советы, как заставить эту функцию работать?

решение1

Вот два решения в зависимости от ваших потребностей.

Установка значения $hash_calc_ignore_pattern{'pdf'}не то, что вам нужно, потому что это указывает latexmkигнорировать определенные строки в .pdfфайлах. Вместо этого вы можете указать latexmkигнорировать все строки в .orgфайлах ,

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

Это будет применяться ко всем файлам с расширением .org, а не только к \jobname.org.

Альтернативой является организация того, чтобы при каждом запуске pdflatexсимптомы использования встроенного файла удалялись из .flsфайла, сгенерированного pdflatex. Следующее в файле latexmkrc сработало для меня:

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

(Я разделил определение на две строки, чтобы сделать копирование и вставку безопасными. Есть некоторая магия, специфичная для UNIX, которая гарантирует правильную работу кавычек в командной строке, передаваемой в систему.)

Связанный контент