Копировать все графические файлы, вызываемые документом LaTeX, в подкаталог, независимо от его исходного пути?

Копировать все графические файлы, вызываемые документом LaTeX, в подкаталог, независимо от его исходного пути?

Мне нужен простой (автоматический) способ скопировать все файлы изображений, вызываемые latex, в один каталог. Похожая проблема была решена здесь:Создать список всех внешних файлов, используемых основным документом LaTeX? и мне нравится решение, предложенное @imriss, за исключением того, что для работы требуется, чтобы все файлы находились в том же каталоге, что и файл tex. Некоторые из моих файлов изображений находятся в другом месте и доступны через TEXINPUTS, и не могут быть найдены этой техникой, потому что файл dep, созданный снимком, содержит только имена файлов, а не их пути.

решение1

Построение комментария @muzimuzhi Z и ответа @imriss на вопросСоздать список всех внешних файлов, используемых основным документом LaTeX?, вот способ скопировать все внешние файлы, используемые latex doc, в каталог img, на основе выбора расширений файлов.

file.texНачинаем с типа файла Latex

pdflatex -recover file

который создает file.fls. Создайте файл, скажем copy_fig_fls.py, содержащий следующий код Python:

"""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()

Запустите его, набрав

python3 copy_fig_fls.py

Он скопирует все используемые файлы file.texс расширениями, указанными в EXTENSIONSпеременной, в imgкаталог, независимо от того, где находится исходный файл изображения, в текущем каталоге или в другом месте.

Связанный контент