\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設定為\graphispathis{aaa/}{bbb/} 並且您這樣做

\includegraphics{foo}

它將按順序測試使用\IfFileExists

foo.pngfoo.jpg然後foo.pdf,一旦找到文件就停止。

\IfFileExists{foo.png}

按順序進行測試

foo.pngaaa/foo.pngbbb/foo.png

一旦 TeX 的原始\openin原語找到文件,就會報告成功。

在每種情況下,將首先搜尋目前目錄,然後搜尋您或等效 miktex 設定\openin中設定的完整 TEXINPUT 路徑。texmf.cnf

根據設置,這可能涉及搜尋檔案系統,或使用與\input.

相關內容