Мне нужен простой (автоматический) способ скопировать все файлы изображений, вызываемые 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
каталог, независимо от того, где находится исходный файл изображения, в текущем каталоге или в другом месте.