
\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.jpg
。foo.pdf
\IfFileExists{foo.png}
順番にテストする
foo.png
、aaa/foo.png
そしてbbb/foo.png
TeX のプリミティブ プリミティブによってファイルが見つかるとすぐに成功を報告します\openin
。
いずれの場合も、\openin
最初に現在のディレクトリを検索し、次に、texmf.cnf
または同等の miktex 設定で設定された完全な TEXINPUT パスを検索します。
設定に応じて、ファイルシステムの検索、または とまったく同じロジックを使用して事前に保存された ls-r ファイル内のファイルの検索が行われる場合があります\input
。