
Existem várias maneiras de modificar a \includegraphics
aparência do arquivo de imagem a ser incluído. Estou interessado \DeclareGraphicsExtensions
e \graphicspath
.
O que é \includegraphics
algoritmo 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 \includegraphics
declarações. Não estou satisfeito com o procedimento atual do meu Makefile e gostaria de otimizá-lo. Para isso preciso saber como \includegraphics
funciona 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 \includegraphics
sempre 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 \IfFileExists
o teste padrão do LaTeX).
portanto, se as extensões de arquivo (na lista \Gin@extensions
definida por meio do comando \DeclareGraphicExtensions
) forem .png
, .jpg
e .pdf
se a lista \input@path
definida por \graphispath
for {aaa/}{bbb/}
e você fizer isso
\includegraphics{foo}
Ele testará em ordem usando\IfFileExists
foo.png
, foo.jpg
então foo.pdf
, parando assim que um arquivo for encontrado.
\IfFileExists{foo.png}
testes em ordem
foo.png
, aaa/foo.png
ebbb/foo.png
e relata sucesso assim que um arquivo é encontrado pelo primitivo primitivo do TeX \openin
.
Em cada caso, \openin
procurará primeiro o diretório atual e depois pesquisará o caminho completo do TEXINPUT conforme definido nas texmf.cnf
configuraçõ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
.