Ich möchte eine einfache (automatische) Möglichkeit, alle von Latex aufgerufenen Bilddateien in ein einziges Verzeichnis zu kopieren. Ein ähnliches Problem wurde hier behandelt:Liste aller vom Master-LaTeX-Dokument verwendeten externen Dateien erstellen? und mir gefällt die von @imriss vorgeschlagene Lösung, außer dass alle Dateien im selben Verzeichnis wie die Tex-Datei liegen müssen, damit sie funktioniert. Einige meiner Bilddateien liegen woanders und werden über TEXINPUTS aufgerufen und mit dieser Technik nicht gefunden, da die von Snapshot erstellte Dep-Datei nur die Namen der Dateien enthält, nicht ihren Pfad.
Antwort1
Erstellen des Kommentars von @muzimuzhi Z und der Antwort von @imriss auf die FrageListe aller vom Master-LaTeX-Dokument verwendeten externen Dateien erstellen?, hier können Sie alle von einem Latex-Dokument verwendeten externen Dateien img
basierend auf der Auswahl von Dateierweiterungen in das Verzeichnis kopieren.
Beginnen Sie mit einem Latex- file.tex
Dateityp
pdflatex -recover file
Dadurch wird Folgendes erstellt file.fls
. Erstellen Sie beispielsweise eine Datei copy_fig_fls.py
mit dem folgenden Python-Code:
"""Copy figures used by document."""
import os
import shutil
FLS_FILE = 'file.fls'
TARGET_DIR = 'img/'
EXTENSIONS = ['pdf', 'png', 'jpg']
def copy_image_files():
with open(FLS_FILE, 'r') as f:
for line in f:
if 'INPUT' not in line:
continue
source = line.split(' ')[1].rstrip()
_, e = os.path.splitext(source)
e = e.lower()[1:]
if e in EXTENSIONS:
shutil.copy(source, TARGET_DIR)
if __name__ == '__main__':
copy_image_files()
Führen Sie es aus, indem Sie Folgendes eingeben
python3 copy_fig_fls.py
Dabei werden alle von verwendeten Dateien mit den in der Variablen file.tex
aufgeführten Erweiterungen in das Verzeichnis kopiert, unabhängig davon, wo sich die ursprüngliche Bilddatei befindet, im aktuellen Verzeichnis oder woanders.EXTENSIONS
img