¿Cuál es el orden de búsqueda de \includegraphics?

¿Cuál es el orden de búsqueda de \includegraphics?

Hay varias formas de modificar la forma en que \includegraphicsse busca el archivo de imagen que se incluirá. Estoy interesado en \DeclareGraphicsExtensionsy \graphicspath.

¿Qué es \includegraphicsel 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 \includegraphicsdeclaraciones. No estoy satisfecho con el procedimiento actual de mi Makefile y me gusta optimizarlo. Para hacer eso necesito saber cómo \includegraphicsfunciona 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 \includegraphicssiempre 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 \IfFileExistsla prueba estándar de LaTeX).

entonces , si las extensiones de archivo (en la lista \Gin@extensionsestablecida 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.pngy foo.jpgluego foo.pdf, deteniéndose tan pronto como se encuentre un archivo.

\IfFileExists{foo.png}

pruebas en orden

foo.png, aaa/foo.pngybbb/foo.png

e informa el éxito tan pronto como la primitiva primitiva de TeX encuentra un archivo \openin.

En cada caso, \openinbuscará primero en el directorio actual y luego buscará la ruta TEXINPUT completa según lo establecido en su texmf.cnfconfiguració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.

información relacionada