latexmk ignoriert eingebettete Dateien

latexmk ignoriert eingebettete Dateien

Ich habe eine TeX-Datei mit einer eingebetteten Datei aus dem Befehl \embedfile{\jobname.org}. Ich möchte latexmkdie Ausführung beenden, wenn sich die eingebettete Datei ändert. Es gibt keine offizielle Option zum latexmkIgnorieren 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 .orgDatei ändere, latexmklä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, latexmkbestimmte Zeilen in .pdfDateien zu ignorieren. Stattdessen können Sie anweisen, latexmkalle Zeilen in .orgDateien 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 pdflatexdie Symptome der Verwendung der eingebetteten Datei aus der .flsvon 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.)

verwandte Informationen