У меня есть файл 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, которая гарантирует правильную работу кавычек в командной строке, передаваемой в систему.)