Qual é a ordem de pesquisa de \includegraphics?

Qual é a ordem de pesquisa de \includegraphics?

Existem várias maneiras de modificar a \includegraphicsaparência do arquivo de imagem a ser incluído. Estou interessado \DeclareGraphicsExtensionse \graphicspath.

O que é \includegraphicsalgoritmo de pesquisa? Será que vai pesquisar

foreach extension in {<ext-list>}
    foreach directory in {<dir-list>}

, ou foreach directory ... foreach extension?

... ou pesquisa em paralelo?

Estou perguntando porque muitas vezes acabo convertendo imagens como parte de um Makefile antes da execução real do LaTeX. Também nunca forneço extensões de arquivo em minhas \includegraphicsdeclarações. Não estou satisfeito com o procedimento atual do meu Makefile e gostaria de otimizá-lo. Para isso preciso saber como \includegraphicsfunciona sua busca.

Por fim, gostaria de ter um diretório com todos os meus arquivos de origem de imagens e outro diretório com todas as imagens convertidas/manipuladas. Quero ter certeza de que \includegraphicssempre procurará primeiro no diretório com todos os convertidos um nome de arquivo correspondente e depois procurará no diretório dos arquivos de origem, se não encontrar uma correspondência no diretório do convertido.

Portanto, para qualquer resposta há uma pergunta adicional: Este comportamento é estável ou está sujeito a alterações?

Responder1

Se nenhuma extensão for fornecida, ele tenta cada extensão para ver se o arquivo existe (usando \IfFileExistso teste padrão do LaTeX).

portanto, se as extensões de arquivo (na lista \Gin@extensionsdefinida por meio do comando \DeclareGraphicExtensions) forem .png, .jpge .pdfse a lista \input@pathdefinida por \graphispathfor {aaa/}{bbb/} e você fizer isso

\includegraphics{foo}

Ele testará em ordem usando\IfFileExists

foo.png, foo.jpgentão foo.pdf, parando assim que um arquivo for encontrado.

\IfFileExists{foo.png}

testes em ordem

foo.png, aaa/foo.pngebbb/foo.png

e relata sucesso assim que um arquivo é encontrado pelo primitivo primitivo do TeX \openin.

Em cada caso, \openinprocurará primeiro o diretório atual e depois pesquisará o caminho completo do TEXINPUT conforme definido nas texmf.cnfconfigurações do miktex ou equivalente.

Dependendo das configurações, isso pode envolver a pesquisa no sistema de arquivos ou a pesquisa do arquivo em um arquivo ls-r pré-armazenado usando exatamente a mesma lógica do \input.

informação relacionada