
有多種方法可以修改\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
is{aaa/}{bbb/}
並且您這樣做
\includegraphics{foo}
它將按順序測試使用\IfFileExists
foo.png
,foo.jpg
然後foo.pdf
,一旦找到文件就停止。
\IfFileExists{foo.png}
按順序進行測試
foo.png
,aaa/foo.png
和bbb/foo.png
一旦 TeX 的原始\openin
原語找到文件,就會報告成功。
在每種情況下,將首先搜尋目前目錄,然後搜尋您或等效 miktex 設定\openin
中設定的完整 TEXINPUT 路徑。texmf.cnf
根據設置,這可能涉及搜尋檔案系統,或使用與\input
.