Alle von einem LaTeX-Dokument aufgerufenen Grafikdateien in ein Unterverzeichnis kopieren, unabhängig vom ursprünglichen Pfad?

Alle von einem LaTeX-Dokument aufgerufenen Grafikdateien in ein Unterverzeichnis kopieren, unabhängig vom ursprünglichen Pfad?

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 imgbasierend auf der Auswahl von Dateierweiterungen in das Verzeichnis kopieren.

Beginnen Sie mit einem Latex- file.texDateityp

pdflatex -recover file

Dadurch wird Folgendes erstellt file.fls. Erstellen Sie beispielsweise eine Datei copy_fig_fls.pymit 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.texaufgeführten Erweiterungen in das Verzeichnis kopiert, unabhängig davon, wo sich die ursprüngliche Bilddatei befindet, im aktuellen Verzeichnis oder woanders.EXTENSIONSimg

verwandte Informationen