From 3c9b5c2960ae2455180bdb3a4e67bf10175b39af Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 12 Apr 2011 22:56:39 +0000
Subject: oberdiek (12apr11)

git-svn-id: svn://tug.org/texlive/trunk@22061 c570f23f-e606-0410-a88d-b1316a301751
---
 .../texmf-dist/source/latex/oberdiek/grffile.dtx   | 324 ++++++++++++++++++---
 1 file changed, 282 insertions(+), 42 deletions(-)

(limited to 'Master/texmf-dist/source/latex/oberdiek/grffile.dtx')

diff --git a/Master/texmf-dist/source/latex/oberdiek/grffile.dtx b/Master/texmf-dist/source/latex/oberdiek/grffile.dtx
index 5bd691494db..e1562c4e039 100644
--- a/Master/texmf-dist/source/latex/oberdiek/grffile.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/grffile.dtx
@@ -73,7 +73,7 @@
 \input docstrip.tex
 \Msg{************************************************************************}
 \Msg{* Installation}
-\Msg{* Package: grffile 2010/01/28 v1.11 Extended file name support for graphics (HO)}
+\Msg{* Package: grffile 2010/12/09 v1.13 Extended file name support for graphics (HO)}
 \Msg{************************************************************************}
 
 \keepsilent
@@ -146,7 +146,7 @@ and the derived files
 %<*driver>
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesFile{grffile.drv}%
-  [2010/01/28 v1.11 Extended file name support for graphics (HO)]%
+  [2010/12/09 v1.13 Extended file name support for graphics (HO)]%
 \documentclass{ltxdoc}
 \usepackage{holtxdoc}[2008/08/11]
 \begin{document}
@@ -155,7 +155,7 @@ and the derived files
 %</driver>
 % \fi
 %
-% \CheckSum{596}
+% \CheckSum{803}
 %
 % \CharacterTable
 %  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -176,7 +176,7 @@ and the derived files
 % \GetFileInfo{grffile.drv}
 %
 % \title{The \xpackage{grffile} package}
-% \date{2010/01/28 v1.11}
+% \date{2010/12/09 v1.13}
 % \author{Heiko Oberdiek\\\xemail{heiko.oberdiek at googlemail.com}}
 %
 % \maketitle
@@ -328,18 +328,26 @@ and the derived files
 %       drivers \xoption{dvips} or \xoption{dvipdfm} do not allow
 %       spaces. However \pdfTeX's primitive \cs{pdfximage}
 %       uses curly braces to delimit the file name and allows spaces.
+%       In case of \hologo{XeTeX} file names can be enclosed in quotes
+%       to support spaces (at the cost that quotes no longer work).
 % \item \cs{includegraphics} checks the existence of the file.
 %       Also it looks for the right extension if the extension is
-%       not given. If \pdfTeX\ 1.30 is given, the file existence test
+%       not given.
+%
+%       If \pdfTeX\ 1.30 is given, the file existence test
 %       can be rewritten using a new primitive that allows spaces.
 %       This works in both modes DVI and PDF.
+%
+%       In case of \hologo{XeTeX} the file existence test is rewritten
+%       to automatically add quotes.
 % \item Sometimes files are read as \TeX\ input files. For example,
 %       \verb|.bb| files or MPS files.
 % \end{enumerate}
 % If \pdfTeX\ 1.30 or greater is used in PDF mode then the
 % graphics file names may contain spaces except for MPS files.
 % Therefore option \xoption{space} is only enabled by default,
-% if the supported \pdfTeX\ in PDF mode is detected.
+% if the supported \pdfTeX\ in PDF mode is detected or \hologo{XeTeX}
+% is running.
 % You can enable the option manually, if you know, your DVI driver
 % supports spaces in its \cs{special} syntax and if there is no
 % need to read the image file as \TeX\ input file (third context).
@@ -384,7 +392,7 @@ and the derived files
 %<*package>
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{grffile}%
-  [2010/01/28 v1.11 Extended file name support for graphics (HO)]%
+  [2010/12/09 v1.13 Extended file name support for graphics (HO)]%
 %    \end{macrocode}
 %
 % \subsection{Catcode stuff}
@@ -415,12 +423,14 @@ and the derived files
 % \subsection{Options}
 %
 %    \begin{macrocode}
-\RequirePackage{ifpdf}
+\RequirePackage{ifpdf}[2010/01/28]
+\RequirePackage{ifxetex}[2010/09/12]
 \RequirePackage{kvoptions}[2006/08/17]
 \SetupKeyvalOptions{%
   family=Gin,%
   prefix=grffile@%
 }
+\DeclareDefaultOption{\@unknownoptionerror}
 \DeclareBoolOption[true]{multidot}
 \DeclareBoolOption[true]{babel}
 \DeclareBoolOption[false]{extendedchars}
@@ -437,21 +447,25 @@ and the derived files
 %    Default setting for option \xoption{space}.
 %    \begin{macrocode}
 \RequirePackage{pdftexcmds}[2007/11/11]
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname pdf@filesize\endcsname\relax
-  \grffile@spacefalse
-  \let\grffile@space@disabled\@empty
-  \def\grffile@spacetrue{%
-    \PackageWarning{grffile}{%
-      Option `space' is not available,\MessageBreak
-      because it needs pdfTeX >= 1.30%
-    }%
-  }%
+\ifxetex
+  \grffile@spacetrue
 \else
-  \ifpdf
-    \grffile@spacetrue
-  \else
+  \begingroup\expandafter\expandafter\expandafter\endgroup
+  \expandafter\ifx\csname pdf@filesize\endcsname\relax
     \grffile@spacefalse
+    \let\grffile@space@disabled\@empty
+    \def\grffile@spacetrue{%
+      \PackageWarning{grffile}{%
+        Option `space' is not available,\MessageBreak
+        because it needs pdfTeX >= 1.30 or XeTeX%
+      }%
+    }%
+  \else
+    \ifpdf
+      \grffile@spacetrue
+    \else
+      \grffile@spacefalse
+    \fi
   \fi
 \fi
 %    \end{macrocode}
@@ -473,8 +487,13 @@ and the derived files
 %    \end{macrocode}
 %    \end{macro}
 %
+%    \begin{macro}{\grffile@org@Ginclude@graphics}
 %    \begin{macrocode}
 \let\grffile@org@Ginclude@graphics\Ginclude@graphics
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Ginclude@graphics}
+%    \begin{macrocode}
 \renewcommand*{\Ginclude@graphics}{%
   \ifx\grffile@filenameencoding\@empty
   \else
@@ -520,8 +539,13 @@ and the derived files
     \expandafter\grffile@Ginclude@graphics
   \fi
 }
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@extchar@Ginclude@graphics}
+%    \begin{macrocode}
 \def\grffile@extchar@Ginclude@graphics#1{%
-  \def\grffile@filename{#1}%
+  \toks@{#1}%
+  \edef\grffile@filename{\the\toks@}%
   \ifx\grffile@inputencoding\@empty
   \else
     \ifx\grfile@filenameencoding\@empty
@@ -547,11 +571,16 @@ and the derived files
       \fi
     \fi
   \fi
+  \toks@\expandafter{\grffile@filename}%
   \edef\x{\endgroup
-    \noexpand\grffile@Ginclude@graphics{\grffile@filename}%
+    \noexpand\grffile@Ginclude@graphics{\the\toks@}%
   }%
   \x
 }
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@inputenc@loop}
+%    \begin{macrocode}
 \def\grffile@inputenc@loop#1#2{%
   \count@=`#1\relax
   \loop
@@ -566,7 +595,9 @@ and the derived files
   \repeat
 }
 %    \end{macrocode}
+%    \end{macro}
 %    Support for option \xoption{space}
+%    \begin{macro}{\grffile@space@getbase}
 %    \begin{macrocode}
 \def\grffile@space@getbase#1{%
   \edef\grffile@tempa{%
@@ -581,26 +612,137 @@ and the derived files
   }{%
   }%
 }
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname pdf@filesize\endcsname\relax
-  \begingroup
-    \let\on@line\@empty
-    \PackageInfo{grffile}{%
-      \string\grffile@IfFileExists\space without space support,%
-      \MessageBreak
-      because pdfTeX's \string\pdffilesize\space is not available%
+  \ifxetex
+%    \end{macrocode}
+%    \begin{macro}{\grffile@XeTeX@IfFileExists}
+%    \begin{macrocode}
+    \long\def\grffile@XeTeX@IfFileExists#1{%
+      \openin\@inputcheck"#1" %
+      \ifeof\@inputcheck
+        \closein\@inputcheck
+        \expandafter\@secondoftwo
+      \else
+        \closein\@inputcheck
+        \expandafter\@firstoftwo
+      \fi
     }%
-  \endgroup
-  \def\grffile@IfFileExists#1{%
-    \IfFileExists{#1}{%
-      \let\grffile@IFE@next\@firstoftwo
-    }{%
-      \let\grffile@IFE@next\@secondoftwo
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@IfFileExists}
+%    \begin{macrocode}
+    \long\def\grffile@IfFileExists#1{%
+      \grffile@XeTeX@IfFileExists{#1}{%
+        \edef\grffile@file@found{#1}%
+        \@firstoftwo
+      }{%
+        \let\reserved@a\@secondoftwo
+        \ifx\input@path\@undefined
+        \else
+          \expandafter\@tfor\expandafter\reserved@b\expandafter
+              :\expandafter=\input@path\do{%
+            \grffile@XeTeX@IfFileExists{\reserved@b#1}{%
+              \edef\grffile@file@found{\reserved@b#1}%
+              \let\reserved@a\@firstoftwo
+              \@break@tfor
+            }{}%
+          }%
+        \fi
+        \reserved@a
+      }%
     }%
-    \grffile@IFE@next
-  }%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@org@Gread@QTm}
+%    Patch \cs{Gread@QTm} of \xfile{xetex.def}.
+%    \begin{macrocode}
+    \def\grffile@org@Gread@QTm#1{%
+      \IfFileExists{\Gin@base.bb}{%
+        \Gread@eps{\Gin@base.bb}%
+      }{%
+        \G@measure@QTm{\Gin@base}{\Gin@ext}%
+      }%
+    }%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
+    \ifx\Gread@QTm\grffile@org@Gread@QTm
+%    \end{macrocode}
+%    \begin{macro}{\Gread@QTm}
+%    \begin{macrocode}
+      \def\Gread@QTm#1{%
+        \grffile@IfFileExists{\Gin@base.bb}{%
+          \Gread@eps{\Gin@base.bb}%
+        }{%
+          \G@measure@QTm{\Gin@base}{\Gin@ext}%
+        }%
+      }%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
+      \PackageInfo{grffile}{\string\Gread@QTm\space patched}%
+    \else
+      \begingroup\expandafter\expandafter\expandafter\endgroup
+      \expandafter\ifx\csname Gread@QTm\endcsname\relax
+        \PackageWarning{grffile}{%
+          \string\Gread@QTm\space of xetex.def not found%
+        }%
+      \else
+%    \end{macrocode}
+%    \begin{macro}{\grffile@org@Gread@QTm}
+%    \begin{macrocode}
+        \let\grffile@org@Gread@QTm\Gread@QTm
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gread@QTm}
+%    \begin{macrocode}
+        \def\Gread@QTm#1{%
+          \let\grffile@saved@IfFileExists\IfFileExists
+          \let\IfFileExists\grffile@IfFileExists
+          \grffile@org@GreadQTm{#1}%
+          \let\IfFileExists\grffile@saved@IfFileExists
+        }%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
+      \fi
+    \fi
+  \else
+    \begingroup
+      \let\on@line\@empty
+      \PackageInfo{grffile}{%
+        \string\grffile@IfFileExists\space without space support,%
+        \MessageBreak
+        because pdfTeX's \string\pdffilesize\space is not available%
+        \MessageBreak
+        or XeTeX is not running%
+      }%
+    \endgroup
+%    \end{macrocode}
+%    \begin{macro}{\grffile@IfFileExists}
+%    \begin{macrocode}
+    \long\def\grffile@IfFileExists#1{%
+      \IfFileExists{#1}{%
+        \let\grffile@IFE@next\@firstoftwo
+      }{%
+        \let\grffile@file@found\@filef@und
+        \let\grffile@IFE@next\@secondoftwo
+      }%
+      \grffile@IFE@next
+    }%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
+  \fi
 \else
-  \def\grffile@IfFileExists#1{%
+%    \end{macrocode}
+%    \begin{macro}{\grffile@IfFileExists}
+%    \begin{macrocode}
+  \long\def\grffile@IfFileExists#1{%
     \expandafter\expandafter\expandafter
     \ifx\expandafter\expandafter\expandafter\\\pdf@filesize{#1}\\%
       \let\reserved@a\@secondoftwo
@@ -624,7 +766,13 @@ and the derived files
       \expandafter\@firstoftwo
     \fi
   }%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
 \fi
+%    \end{macrocode}
+%    \begin{macro}{\grffile@Ginclude@graphics}
+%    \begin{macrocode}
 \def\grffile@Ginclude@graphics#1{%
   \begingroup
     \ifgrffile@space
@@ -637,7 +785,10 @@ and the derived files
     \grffile@org@Ginclude@graphics{#1}%
   \endgroup
 }%
-
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@filename@simple}
+%    \begin{macrocode}
 \def\grffile@filename@simple#1.#2\\{%
   \ifx\\#2\\%
     \def\filename@base{#1}%
@@ -647,7 +798,10 @@ and the derived files
     \grffile@analyze@ext{#1}.{#2}\\%
   \fi
 }
-
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@analyze@ext}
+%    \begin{macrocode}
 \def\grffile@analyze@ext#1.#2\\{%
   \let\grffile@next\relax
   \ifx\\#2\\%
@@ -672,7 +826,10 @@ and the derived files
   \fi
   \grffile@next
 }
-
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@try@extlist}
+%    \begin{macrocode}
 \def\grffile@try@extlist{%
   \@for\grffile@temp:=\Gin@extensions\do{%
     \grffile@IfFileExists{\filename@area\filename@base\grffile@temp}{%
@@ -686,7 +843,10 @@ and the derived files
     \expandafter\grffile@use@last@ext\filename@base.\\%
   \fi
 }
-
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@use@last@ext}
+%    \begin{macrocode}
 \def\grffile@use@last@ext#1.#2\\{%
   \ifx\\#2\\%
     \edef\filename@base{\expandafter\filename@dot\filename@base\\}%
@@ -701,8 +861,10 @@ and the derived files
   }%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
 %    Print current option setting
+%    \begin{macro}{\grffile@option@status}
 %    \begin{macrocode}
 \def\grffile@option@status#1{%
   \begingroup
@@ -722,11 +884,80 @@ and the derived files
     }%
   \endgroup
 }
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
 \grffile@option@status{multidot}
 \grffile@option@status{extendedchars}
 \grffile@option@status{space}
 %    \end{macrocode}
 %
+% \subsection{Fix \cs{Gin@ii} of package \xpackage{graphicx}}
+%
+%    If the image file name contains the hash character
+%    macro \cs{Gin@ii} of package \xpackage{graphicx} breaks.
+%    \begin{macro}{\grffile@Gin@ii@graphicx}
+%    \begin{macrocode}
+\def\grffile@Gin@ii@graphicx[#1]#2{%
+  \def\@tempa{[}%
+  \def\@tempb{#2}%
+  \ifx\@tempa\@tempb
+    \def\@tempa{\Gin@iii[#1][}% hash-ok
+    \expandafter\@tempa
+  \else
+    \begingroup
+      \@tempswafalse
+      \toks@{\Ginclude@graphics{#2}}%
+      \setkeys{Gin}{#1}%
+      \Gin@esetsize
+      \the\toks@
+    \endgroup
+  \fi
+}
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@Gin@ii@fixed}
+%    \begin{macrocode}
+\def\grffile@Gin@ii@fixed[#1]#2{%
+  \def\@tempa{[}%
+  \begingroup
+    \toks@={#2}%
+    \edef\@tempb{\the\toks@}%
+  \expandafter\endgroup
+  \ifx\@tempa\@tempb
+    \def\@tempa{\Gin@iii[#1][}% hash-ok
+    \expandafter\@tempa
+  \else
+    \begingroup
+      \@tempswafalse
+      \toks@{\Ginclude@graphics{#2}}%
+      \setkeys{Gin}{#1}%
+      \Gin@esetsize
+      \the\toks@
+    \endgroup
+  \fi
+}
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\grffile@Fix@Gin@ii}
+%    \begin{macrocode}
+\def\grffile@Fix@Gin@ii{%
+  \let\Gin@ii\grffile@Gin@ii@fixed
+  \begingroup
+    \escapechar=92 %
+    \PackageInfo{grffile}{\string\Gin@ii\space of package `graphicx' fixed}%
+  \endgroup
+}
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
+\ifx\Gin@ii\grffile@Gin@ii@graphicx
+  \grffile@Fix@Gin@ii
+\else
+  \AtBeginDocument{\grffile@Fix@Gin@ii}%
+\fi
+%    \end{macrocode}
+%
 %    \begin{macrocode}
 \grffile@RestoreCatcodes
 %    \end{macrocode}
@@ -1041,6 +1272,15 @@ showpage
 %   \item
 %     Undefined \cs{pdf@filesize} fixed.
 %   \end{Version}
+%   \begin{Version}{2010/08/26 v1.12}
+%   \item
+%     Macro \cs{Gin@ii} of package \xpackage{graphicx} fixed
+%     for the case that the file name contains a hash.
+%   \end{Version}
+%   \begin{Version}{2010/12/09 v1.13}
+%   \item
+%     Option \xoption{space} also supports \hologo{XeTeX}.
+%   \end{Version}
 % \end{History}
 %
 % \PrintIndex
-- 
cgit v1.2.3

