Bereinigung org-mode export Zwischendatei

7

Ich benutze den Org-Modus, um PDF zu exportieren. Es macht es durch LaTeX; fein.

Also bekomme ich .pdf- Dateien und .tex- Dateien.

Nur das PDF ist für mich interessant. Gibt es eine Einstellung / Methode, mit der der Organisationsmodus die .tex-Dateien selbst bereinigt (oder in einem temporären Ordner speichert)?

Jocelyn delalande
quelle

Antworten:

6

Sie können die Variable einfach so anpassen org-latex-logfiles-extensions, dass org diese Hilfsdateien nach dem Export automatisch löscht. dh

(setq org-latex-logfiles-extensions (quote ("lof" "lot" "tex~" "aux" "idx" "log" "out" "toc" "nav" "snm" "vrb" "dvi" "fdb_latexmk" "blg" "brf" "fls" "entoc" "ps" "spl" "bbl")))

Fügen Sie der Variablen die Erweiterung hinzu, die Sie löschen möchten.

Leu_Grady
quelle
gute Führung! Meine endgültige Lösung ist:(add-hook 'org-mode-hook (lambda ()(add-to-list 'org-latex-logfiles-extensions "tex")))
Jocelyn delalande
Ich glaube nicht, dass Sie dies zum Org-Modus-Hook hinzufügen müssen. Diese Variable sollte nur im Organisationsmodus funktionieren.
Leu_Grady
@ leu-grady: Die Sache ist, wenn ich benutze add-to-list, muss die var vorhanden sein, was nur der Fall ist, nachdem der org-Modus initialisiert wurde.
Jocelyn delalande
@Jocelyndelalande du hast recht. Aber vielleicht können Sie versuchen, nach dem Laden auszuwerten.
Leu_Grady
Sie müssen auch sicherstellen, dass dies org-latex-remove-logfilesnicht Null ist: Dies ist tstandardmäßig der Fall. Wenn die Dateien jedoch nicht gelöscht werden, wurde der Wert möglicherweise geändert. Dies bereinigt auch nur die verschiedenen Dateien, die Latex produziert. Es werden beispielsweise nicht die Unterverzeichnisse bereinigt, die org selbst (oder emacs) möglicherweise erzeugt.
NickD
2

Dies ist eine einfache Frage, hat aber keine so einfachen Antworten. Die temporären Dateien werden wiederholt bei der Erstellung von PDF-Ausgaben verwendet. Weder AUCTeX noch ORG wissen, wann es sicher ist, sie zu löschen. Daher werden sie dort zur manuellen Löschung belassen, nachdem festgestellt wurde, ob sie nicht mehr benötigt werden.

Hier sind einige Möglichkeiten, um den manuellen Löschvorgang zu beschleunigen. Ein einfacher Shell-Befehl erledigt die Aufgabe ohne großen Aufwand (fügen Sie nach Bedarf weitere Erweiterungen hinzu):

(defun clear-latex-temp-files () (shell-command "rm -rf *.tex *.prv preview.fmt"))

Verwenden Sie latexmk (anstelle von pdflatex) zum Generieren Ihres PDFs, damit Sie die -cOption zum Löschen der temporären Dateien verwenden können:

latexmk -c 

und fügen Sie dann die folgende Zeile in diese Datei ein ~\.latexmkrc, um alle temporären Dateien abzudecken, nicht nur *.texund *.prv:

@generated_exts = qw(aux idx ind lof lot out toc acn acr alg glg glo gls ist);

Sie können je nach Bedarf weitere temporäre Dateien (.synctex .gz .nav .vrb .snm .blg -blx .bib .bbl .run .xml) hinzufügen. Dies ist die am besten anpassbare Option.

Um diese Komplikation für einfache Organisationsdateien zu vermeiden, können Sie die integrierte -output-directoryOption von pdflatex verwenden.

pdflatex -output-directory=target <file>

Dadurch wird auch die PDF-Ausgabe dort im Zielverzeichnis abgelegt. Sie können die PDF-Datei dann von dort weg verschieben, sobald Sie zufrieden sind, dass sie ordnungsgemäß generiert wurde. Alle löschbaren Dateien befinden sich an einem Ort, der regelmäßig gelöscht werden kann.

Warum nicht ein Makro delete-filenachher verwenden org-latex-compile? Weil das manchmal die temporären Dateien vorzeitig löschen kann. Möglicherweise erhalten Sie fehlerhafte Links, nicht verknüpfte Biblioeinträge, nicht verknüpfte Kapitelüberschriften im Inhaltsverzeichnis und unvollendete Indizes, eine Liste der Tabellen und eine Liste der Abbildungen. In der Dokumentationszeichenfolge im Organisationsmodus finden Sie Folgendes C-h f org-latex-compile:

Der Grund, warum dies eine Liste ist, ist, dass es normalerweise mehrere Durchläufe von 'pdflatex' dauert, möglicherweise gemischt mit einem Aufruf von 'bibtex'. Org verfügt nicht über einen cleveren Mechanismus, um zu erkennen, welche dieser Befehle ausgeführt werden müssen, um ein stabiles Ergebnis zu erzielen, und führt auch keine Fehlerprüfung durch.

Emacs Benutzer
quelle
Ordentlich, ich hatte nur mit einem sehr einfachen Beispiel versucht, dass nur eine einzige ".tex" -Datei erstellt werden musste
Jules
Was denkst du über @ leu-grady Lösung?
Jocelyn delalande
Ich verstehe nur nicht warum: Die Bereinigung im Organisationsmodus scheint nach der Erstellung des PDF zu erfolgen (siehe org-latex-remove-logfilesDokument). wie könnte es noch die .tex brauchen ? Ich würde gerne Ihren Standpunkt verstehen, aber bitte säen Sie mir ein problematisches Beispiel.
Jocelyn delalande
Für andere, die diese Antwort lesen: Wenn Sie fehlende Indizes, Links oder Inhaltsverzeichniseinträge in Ihrem PDF bemerken, verwenden Sie diese Lösung. Bei einfachen Organisationsdateien spielt es keine Rolle, wann die temporären Dateien gelöscht werden. Ansonsten gibt es ein falsches Gefühl der Vollständigkeit. Das OP möchte ein problematisches Beispiel sehen, aber wie in der Dokumentation angegeben, erfolgt keine Fehlerprüfung. Je nachdem, wann die temporären Dateien gelöscht wurden (nach dem ersten, zweiten oder dritten Durchgang), können bei jedem Lauf zufällige Dinge in Ihrem PDF fehlen.
Emacs User
1

Sie können nach der Funktion Ratschläge zum Löschen der Zwischendatei wie folgt einfügen:

(advice-add 'org-latex-compile :after #'delete-file)
Jules
quelle
0

Ich org-latex-pdf-processhabe so etwas eingestellt wie:

latexmk -outdir=/tmp/latexmk -f -pdf %F; mv %f /tmp/latexmk; mv /tmp/latexmk/%b.pdf %o

Auf diese Weise bewahre ich alle Zwischendateien an einem "versteckten" Ort auf, um aufeinanderfolgende Kompilierungen zu beschleunigen, aber nur das PDF wird am ursprünglichen Ort aufbewahrt.

memeplex
quelle