Copiar todos os arquivos gráficos chamados por um documento LaTeX em um subdiretório, independentemente do seu caminho original?

Copiar todos os arquivos gráficos chamados por um documento LaTeX em um subdiretório, independentemente do seu caminho original?

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.texComeç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 EXTENSIONSvariável para o imgdiretório, independentemente de onde o arquivo de imagem original resida, no diretório atual ou em outro lugar.

informação relacionada