\includegraphics の検索順序は何ですか?

\includegraphics の検索順序は何ですか?

\includegraphics含める画像ファイルを検索する方法を変更する方法は複数あります。私\DeclareGraphicsExtensionsは とに興味があります\graphicspath

検索アルゴリズムとは何ですか\includegraphics?検索しますか?

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

、 またはforeach directory ... foreach extension

...それとも並行して検索するのでしょうか?

私が質問しているのは、LaTeX を実際に実行する前に、Makefile の一部として画像を変換してしまうことがよくあるからです。また、ステートメントでファイル拡張子を指定したこともありません\includegraphics。Makefile の現在の手順に満足していないので、最適化したいと思っています。そのためには、\includegraphicsその検索方法を知る必要があります。

最終的には、すべての画像ソース ファイルを含むディレクトリと、すべての変換/操作された画像を含む別のディレクトリを用意したいと思います。\includegraphics最初にすべての変換対象を含むディレクトリで一致するファイル名を検索し、変換対象ディレクトリで一致するものが見つからない場合は、ソース ファイルのディレクトリを検索するようにしたいと思います。

したがって、どのような答えに対しても、次の質問が加わります。この動作は安定しているのか、それとも変化する可能性があるのか​​?

答え1

拡張子が指定されていない場合は、各拡張子を順番に試して、そのファイルが存在するかどうかを確認します (LaTeX の標準\IfFileExistsテストを使用)。

\Gin@extensionsしたがって、ファイル拡張子(コマンドで設定された リスト内\DeclareGraphicExtensions)が.png、、であり.jpg、によって設定された.pdfリストがであり 、\input@path\graphispath{aaa/}{bbb/}

\includegraphics{foo}

順番にテストします\IfFileExists

foo.png、ファイルが見つかるとすぐに停止しますfoo.jpgfoo.pdf

\IfFileExists{foo.png}

順番にテストする

foo.pngaaa/foo.pngそしてbbb/foo.png

TeX のプリミティブ プリミティブによってファイルが見つかるとすぐに成功を報告します\openin

いずれの場合も、\openin最初に現在のディレクトリを検索し、次に、texmf.cnfまたは同等の miktex 設定で設定された完全な TEXINPUT パスを検索します。

設定に応じて、ファイルシステムの検索、または とまったく同じロジックを使用して事前に保存された ls-r ファイル内のファイルの検索が行われる場合があります\input

関連情報