Quiero una manera fácil (automática) de copiar todos los archivos de imagen llamados por látex en un único directorio. Aquí se abordó un problema similar:¿Crear una lista de todos los archivos externos utilizados por el documento maestro LaTeX? y me gusta la solución propuesta por @imriss excepto que requiere que todos los archivos residan en el mismo directorio que el archivo tex para funcionar. Algunos de mis archivos de imagen residen en otro lugar y se accede a ellos a través de TEXINPUTS y esta técnica no los encuentra porque el archivo dep producido por la instantánea solo contiene los nombres de los archivos, no su ruta.
Respuesta1
Construcción del comentario de @muzimuzhi Z y la respuesta de @imriss a la pregunta¿Crear una lista de todos los archivos externos utilizados por el documento maestro LaTeX?, esta es una forma de copiar todos los archivos externos utilizados por un documento de látex al directorio img
, según una selección de extensiones de archivo.
Comenzando con un file.tex
tipo de archivo de látex
pdflatex -recover file
que crea file.fls
. Cree un archivo, digamos copy_fig_fls.py
, que contenga el siguiente 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()
Ejecútelo escribiendo
python3 copy_fig_fls.py
Copiará todos los archivos utilizados file.tex
con las extensiones enumeradas en la EXTENSIONS
variable en el img
directorio, independientemente de dónde resida el archivo de imagen original, en el directorio actual o en otro lugar.