Quero uma maneira fácil (automática) de copiar todos os arquivos de imagem chamados pelo latex em um único diretório. Um problema semelhante foi abordado aqui:Criar uma lista de todos os arquivos externos usados pelo documento mestre LaTeX? e gosto da solução proposta por @imriss, exceto que exige que todos os arquivos residam no mesmo diretório do arquivo tex para funcionar. Alguns dos meus arquivos de imagem residem em outro lugar e são acessados através de TEXINPUTS e não são encontrados por esta técnica porque o arquivo dep produzido pelo snapshot contém apenas os nomes dos arquivos, não seu caminho.
Responder1
Construção do comentário de @muzimuzhi Z e resposta de @imriss à perguntaCriar uma lista de todos os arquivos externos usados pelo documento mestre LaTeX?, aqui está uma maneira de copiar todos os arquivos externos usados por um documento látex para o diretório img
, com base em uma escolha de extensões de arquivo.
file.tex
Começando com um tipo de arquivo látex
pdflatex -recover file
que cria file.fls
. Crie um arquivo, digamos copy_fig_fls.py
, contendo o seguinte código 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()
Execute-o digitando
python3 copy_fig_fls.py
Ele copiará todos os arquivos usados file.tex
com extensões listadas na EXTENSIONS
variável para o img
diretório, independentemente de onde o arquivo de imagem original resida, no diretório atual ou em outro lugar.