From d489c836c2056895e0f4f2d67ecc90c69cf0e594 Mon Sep 17 00:00:00 2001 From: Sergiu Deitsch Date: Tue, 12 Jan 2021 18:07:09 +0100 Subject: [PATCH] added \graphicspath support to \pgfdeclareimage --- .../pgf/text-en/pgfmanual-en-base-images.tex | 3 ++ .../pgf/basiclayer/pgfcoreimage.code.tex | 33 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex b/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex index d5ea0b5d2..b59d1ada7 100644 --- a/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex +++ b/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex @@ -70,6 +70,9 @@ \subsection{Declaring an Image} will automatically tried. For PostScript, the extensions |.eps|, |.epsi|, and |.ps| will be tried. + You may use |\graphicspath| to specify a list of directories in which to + search for graphics files. + The following options are possible: % \begin{itemize} diff --git a/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex b/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex index 597561a00..a17b261a4 100644 --- a/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +++ b/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex @@ -36,10 +36,10 @@ % If page= parameter is not empty, try that file first: \ifx\pgf@imagepage\pgfutil@empty% \else% - \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3.page\pgf@imagepage}% + \expandafter\pgf@findimage\pgfsys@imagesuffixlist:+{#3.page\pgf@imagepage}% \fi% \ifx\pgf@filename\pgfutil@empty% - \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}% + \expandafter\pgf@findimage\pgfsys@imagesuffixlist:+{#3}% \else% \pgfkeys{/pgf/images/page=}% make page empty \fi% @@ -89,6 +89,35 @@ \pgf@findfile#2+{#3}% \fi}} +% Similar to \pgf@findfile but for images. +% Additionally loops over directories in \Ginput@path. +\def\pgf@findimage#1:#2+#3{% + \ifx\Ginput@path\@undefined + \let\Ginput@path\@empty + \fi + \ifx\Ginput@path\@empty + % Graphics search path is empty. + % Pass the arguments to the base command as is. + \@pgf@findfile{#1}:{#2}+{#3}% + \else + \let\pgf@cur\@secondoftwo + \expandafter\@tfor\expandafter + \pgf@cur\expandafter:\expandafter=\Ginput@path\do{% + \def\pgf@curfilename{\pgf@cur/#3#1}% + \pgfutil@IfFileExists{\pgf@curfilename}% + {\xdef\pgf@filename{\pgf@curfilename}% + % Found the file. We're done searching. + \@break@tfor + }% + {\def\pgf@mightbeempty{#2}% + \ifx\pgf@mightbeempty\pgfutil@empty\else% + \pgf@findimage#2+{#3}% + \fi + }% + }% + \fi +}% + % #1: image name % #2: file name \def\pgf@declaredraftimage#1#2{%