Wie ist die Suchreihenfolge von \includegraphics?

Wie ist die Suchreihenfolge von \includegraphics?

Es gibt mehrere Möglichkeiten, die \includegraphicsSuche nach der einzubindenden Bilddatei zu ändern. Ich interessiere mich für \DeclareGraphicsExtensionsund \graphicspath.

Was ist \includegraphicsein Suchalgorithmus? Wird er

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

, oder foreach directory ... foreach extension?

... oder sucht es sogar parallel?

Ich frage, weil ich Bilder oft als Teil eines Makefiles konvertiere, bevor LaTeX tatsächlich ausgeführt wird. Außerdem gebe ich in meinen \includegraphicsAnweisungen nie Dateierweiterungen an. Ich bin mit dem aktuellen Verfahren meines Makefiles nicht zufrieden und möchte es optimieren. Dazu muss ich wissen, wie \includegraphicsdie Suche funktioniert.

Letztendlich möchte ich ein Verzeichnis mit allen meinen Bildquelldateien und ein weiteres Verzeichnis mit allen konvertierten/manipulierten Bildern haben. Ich möchte sicherstellen, dass \includegraphicsimmer zuerst im Verzeichnis mit allen Konvertern nach einem passenden Dateinamen gesucht wird und dann im Verzeichnis mit den Quelldateien, wenn im Konverterverzeichnis keine Übereinstimmung gefunden wurde.

Zu jeder Antwort stellt sich also die zusätzliche Frage: Ist dieses Verhalten stabil oder Änderungen unterworfen?

Antwort1

Wenn keine Erweiterung angegeben ist, werden nacheinander alle Erweiterungen ausprobiert, um zu prüfen, ob die Datei vorhanden ist (mithilfe des LaTeX-Standardtests \IfFileExists).

Wenn also die Dateierweiterungen (in der Liste, \Gin@extensionswie sie über den Befehl festgelegt wurde \DeclareGraphicExtensions) .png, , .jpgsind .pdfund die Liste, \input@pathwie sie durch festgelegt wurde, \graphispathist {aaa/}{bbb/} und Sie

\includegraphics{foo}

Es wird der Reihe nach getestet mit\IfFileExists

foo.png, foo.jpgdann foo.pdf, und stoppt, sobald eine Datei gefunden wird.

\IfFileExists{foo.png}

Prüfungen in der Reihenfolge

foo.png, aaa/foo.pngUndbbb/foo.png

und meldet Erfolg, sobald eine Datei vom primitiven \openinPrimitiv von TeX gefunden wird.

In jedem Fall \openinwird zuerst das aktuelle Verzeichnis und dann der vollständige TEXINPUT-Pfad durchsucht, wie in Ihren texmf.cnfoder entsprechenden Miktex-Einstellungen festgelegt.

Abhängig von den Einstellungen kann dies eine Suche im Dateisystem oder die Suche nach der Datei in einer vorgespeicherten ls-r-Datei beinhalten, wobei genau die gleiche Logik wie verwendet wird \input.

verwandte Informationen