
Hay varias formas de modificar la forma en que \includegraphics
se busca el archivo de imagen que se incluirá. Estoy interesado en \DeclareGraphicsExtensions
y \graphicspath
.
¿Qué es \includegraphics
el algoritmo de búsqueda? ¿Buscará?
foreach extension in {<ext-list>}
foreach directory in {<dir-list>}
, o foreach directory ... foreach extension
?
... ¿o incluso busca en paralelo?
Lo pregunto porque a menudo termino convirtiendo imágenes como parte de un Makefile antes de ejecutar LaTeX. Tampoco proporciono extensiones de archivos en mis \includegraphics
declaraciones. No estoy satisfecho con el procedimiento actual de mi Makefile y me gusta optimizarlo. Para hacer eso necesito saber cómo \includegraphics
funciona su búsqueda.
En última instancia, me gustaría tener un directorio con todos mis archivos fuente de imágenes y otro directorio con todas las imágenes convertidas/manipuladas. Quiero asegurarme de que \includegraphics
siempre busque primero en el directorio con todos los convertidos un nombre de archivo coincidente y luego busque en el directorio de archivos fuente, si no encontró una coincidencia en el directorio de convertidos.
Entonces, para cualquier respuesta existe la pregunta adicional: ¿este comportamiento es estable o está sujeto a cambios?
Respuesta1
Si no se proporciona ninguna extensión, prueba cada extensión por turno para ver si ese archivo existe (usando \IfFileExists
la prueba estándar de LaTeX).
entonces , si las extensiones de archivo (en la lista \Gin@extensions
establecida mediante el comando \DeclareGraphicExtensions
) son .png
,, y si la lista establecida por es y usted lo hace.jpg
.pdf
\input@path
\graphispath
{aaa/}{bbb/}
\includegraphics{foo}
Se probará en orden usando\IfFileExists
foo.png
y foo.jpg
luego foo.pdf
, deteniéndose tan pronto como se encuentre un archivo.
\IfFileExists{foo.png}
pruebas en orden
foo.png
, aaa/foo.png
ybbb/foo.png
e informa el éxito tan pronto como la primitiva primitiva de TeX encuentra un archivo \openin
.
En cada caso, \openin
buscará primero en el directorio actual y luego buscará la ruta TEXINPUT completa según lo establecido en su texmf.cnf
configuración de miktex o equivalente.
Dependiendo de la configuración, esto puede implicar buscar en el sistema de archivos o buscar el archivo en un archivo ls-r previamente almacenado usando exactamente la misma lógica que \input
.