Ich habe eine TeX-Datei mit einer eingebetteten Datei aus dem Befehl \embedfile{\jobname.org}
. Ich möchte latexmk
die Ausführung beenden, wenn sich die eingebettete Datei ändert. Es gibt keine offizielle Option zum latexmk
Ignorieren bestimmter Dateien, aber es scheint, dass dies in meinem speziellen Anwendungsfall mit der Option möglich sein könnte $hash_calc_ignore_pattern
.
Ich habe Folgendes (einzeln) zu meinem hinzugefügt ~/.latexmkrc
:
$hash_calc_ignore_pattern{'pdf'} = '^\\embedfile{\\jobname.org}';
$hash_calc_ignore_pattern{'pdf'} = 'jobname.org';
$hash_calc_ignore_pattern{'pdf'} = '.*jobname.org.*';
Wenn ich die .org
Datei ändere, latexmk
läuft sie jedoch immer noch. Hat jemand einen Rat, wie ich diese Funktion zum Laufen bekomme?
Antwort1
Hier sind zwei Lösungen, je nach Ihren Anforderungen.
Das Setzen des Wertes $hash_calc_ignore_pattern{'pdf'}
ist nicht das, was Sie wollen, da dies anweist, latexmk
bestimmte Zeilen in .pdf
Dateien zu ignorieren. Stattdessen können Sie anweisen, latexmk
alle Zeilen in .org
Dateien zu ignorieren, indem Sie
$hash_calc_ignore_pattern{'org'} = '^';
Dies gilt für alle Dateien mit der Erweiterung .org
, nicht nur für \jobname.org
.
Eine Alternative besteht darin, dafür zu sorgen, dass bei jedem Durchlauf pdflatex
die Symptome der Verwendung der eingebetteten Datei aus der .fls
von generierten Datei entfernt werden pdflatex
. Folgendes in einer latexmkrc-Datei hat bei mir funktioniert:
$pdflatex = "pdflatex %O %S && ".
"perl -i -p -e \"s[^INPUT (\./|)\"%R\"\\.org\\s*\$][];\" %Y%R.fls";
(Ich habe die Definition auf zwei Zeilen aufgeteilt, um das Kopieren und Einfügen sicher zu machen. Es gibt einige UNIX-spezifische Tricks, um sicherzustellen, dass die Anführungszeichen in der an das System übergebenen Befehlszeile richtig funktionieren.)