Tengo un documento TeX que incorpora una gran cantidad de figuras de una fig
carpeta que está llena de otra enorme cantidad de otras figuras.
Me gustaría mover el documento junto con sus figuras, pero no quiero tomar toda la fig
carpeta, solo las figuras que están incrustadas en el documento.
¿Existe algún paquete (o cualquier otra forma) que me permita, por ejemplo, imprimir los nombres de archivo de todas las figuras incrustadas en el documento? Algo como:
fig/figurename1.eps
fig/figurename2.eps
...
etc
Luego podría simplemente copiar y pegar esa lista y agregar algunos cp
en un archivo de texto sin formato y automatizar la copia de esos archivos a la ubicación deseada ejecutando el archivo en mi shell:
$ cp fig/figurename1.eps wherever/fig/
$ cp fig/figurename2.eps wherever/fig/
...
etc
Por supuesto, esto es sólo una idea, si alguien tiene una alternativa a "listar archivos y copiar y pegar en un archivo shell", estaría encantado de escuchar =)
Respuesta1
Puede modificar la \includegraphcs
macro para agregarla a una lista e imprimir la lista al final del documento. El MWE a continuación produce el siguiente resultado:
Figures included were
images/figA.jpg
images/figB.png
Notas:
En este caso
\let
también funcionaría (según el comentario de egreg enCambiar el tamaño de todas las imágenes en Latex a un ancho porcentual), pero me he acostumbrado a usar\LetLtxMacro
desdeelletltxmacro
paquetepara macros que tienen parámetros opcionales.\LetLtxMacro
Puede encontrar una descripción detallada en esta pregunta sobre unsímbolo de raíz cuadrada cerrada.La
[demo]
opción se usa para colocar un cuadro negro donde iría la figura para fines de demostración; en su uso real (cuando realmente tenga las figuras disponibles), debe eliminar esta opción.Si lo desea, puede usar
\immediate\write18
y ejecutar elcp
comando Shell dentro del\foreach
bucle y tener un directorio al final de la composición tipográfica que tenga las imágenes que se incluyeron. No se requeriría ningún procesamiento adicional.
Código:
\documentclass{article}
\usepackage[demo]{graphicx}% Remove [demo] option in real usage.
\usepackage{letltxmacro}
\usepackage{pgffor}
%% https://tex.stackexchange.com/questions/14393/how-keep-a-running-list-of-strings-and-then-process-them-one-at-a-time
\newcommand\FigList{}
\newcommand\AddFigToList[1]{\edef\FigList{\FigList#1,}}
\LetLtxMacro{\OldIncludegraphics}{\includegraphics}
\renewcommand{\includegraphics}[2][]{%
\AddFigToList{#2}%
\OldIncludegraphics[#1]{#2}%
}
\newcommand*{\ShowListOfFigures}{%
\typeout{Figures included were}%
\foreach \x in \FigList {%
%\par\x% <-- uncomment if you want the list in the PDF as well
\typeout{ \x}
}%
}
\AtEndDocument{\ShowListOfFigures}
\begin{document}
\includegraphics{images/figA.jpg}
\includegraphics{images/figB.png}
\end{document}
Respuesta2
pdflatex
proporciona la bandera -recorder
, que escribe un .fls
archivo. Todo lo marcado INPUT
allí son archivos que se abrieron durante el procesamiento.
latexmk
usa la bandera -deps
o -deps-out=FILENAME
para mostrar las decencias y en el último caso también las almacena en un make
archivo FILENAME
.
Respuesta3
En Linux, algo como esto funcionará, sin modificar la fuente:
strace -fe open make 2>&1 1>/dev/null | grep plots | sed 's/.*\"\(.*\)\".*/\1/' > plots.list
Dónde :
make
es el comando que utiliza para generar su salida (podría ser alguna variación depdflatex file.tex
).strace
muestra las llamadas al sistema. Con las opciones que proporcionamos, mantenemos solo las llamadas al sistema "abiertas" (-e
opción) para obtener las figuras que se insertan (así como otros archivos abiertos ahora). Las-f
opciones son mostrar llamadas al sistema de subprocesos y las redirecciones son para mantener solo la salida de strace.grep plots
selecciona las líneas que contienen una cadena común en la ruta ("trazados" en este caso).sed
selecciona lo que está dentro de las comillas.La redirección final vuelca el resultado en un archivo.
Es posible que obtenga nombres de archivos duplicados de esta manera, pero podría ser suficiente dependiendo de lo que desee.
Respuesta4
Hay un perl
guión en CTAN,depender de textoque hace todo esto y más. Maneja todo tipo de dependencias internas y externas y puede generar la información en Makefile
formato perl
1 por línea.
>texdepend
Find LaTex dependencies, Version: 0.96, Michael Friendly ([email protected])
Usage: C:\batchfiles\texdepend.pl <options> texfile[.tex]
where <options> may be abbreviated to unique truncations, and are:
-help print this measly help
-expand expand package/include file to full path names
-format = make print dependencies in Makefile format
perl print in the form of perl assignments (LatexMk)
1 print one per line (with # separators)
-ignore = list list of file types to be ignored in .log [default: fd]
-out = filename send output to filename
-print = Any one or more of i (includes) p (packages)
f (figs) b (bibfiles) s (styles) d (all dependencies)
-styles = list list of file types for from .log [default: sty]
-verbose