Current File : //usr/share/texlive/texmf-dist/tex/latex/grffile/grffile-2017-06-30.sty |
%%
%% This is file `grffile-2017-06-30.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% grffile.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% Project: grffile
%%
%% Copyright (C) 2006-2012 Heiko Oberdiek
%% 2016-2019 Oberdiek Package Support Group
%% https://github.com/ho-tex/grffile/issues
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
%% http://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Heiko Oberdiek.
%%
%% This work consists of the main source file grffile.dtx
%% and the derived files
%% grffile.sty, grffile.pdf, grffile.ins, grffile.drv,
%% grffile-test1.tex.
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{grffile}%
[2017/06/30 v1.18 Extended file name support for graphics (HO)]%
\edef\grffile@RestoreCatcodes{%
\catcode`\noexpand\=\the\catcode`\=\relax
\catcode`\noexpand\:\the\catcode`\:\relax
\catcode`\noexpand\.\the\catcode`\.\relax
\catcode`\noexpand\'\the\catcode`\'\relax
\catcode`\noexpand\<\the\catcode`\<\relax
\catcode`\noexpand\>\the\catcode`\>\relax
\catcode`\noexpand\*\the\catcode`\*\relax
\catcode`\noexpand\^\the\catcode`\^\relax
\catcode`\noexpand\~\the\catcode`\~\relax
}
\@makeother\=
\@makeother\:
\@makeother\.
\@makeother\'
\@makeother\<
\@makeother\>
\@makeother\*
\catcode`\^=7 %
\catcode`\~=\active
\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}
\DeclareBoolOption{space}
\DeclareVoidOption{encoding}{%
\RequirePackage{stringenc}\relax
}
\DeclareStringOption{inputencoding}
\DeclareStringOption{filenameencoding}
\DeclareDefaultOption{%
\PassOptionsToPackage\CurrentOption{graphics}%
}
\RequirePackage{pdftexcmds}[2007/11/11]
\ifxetex
\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
\ProcessKeyvalOptions*
\AtBeginDocument{%
\DisableKeyvalOption[package=grffile]{Gin}{encoding}%
}
\RequirePackage{graphics}
\newcommand*{\grffilesetup}{%
\setkeys{Gin}%
}
\let\grffile@org@Ginclude@graphics\Ginclude@graphics
\renewcommand*{\Ginclude@graphics}{%
\ifx\grffile@filenameencoding\@empty
\else
\ifx\grffile@inputencoding\@empty
\expandafter\ifx\csname inputencodingname\endcsname\relax
\expandafter\ifx\csname
CurrentInputEncodingOption\endcsname\relax
\else
\let\grffile@inputencoding\CurrentInputEncodingOption
\fi
\else
\let\grffile@inputencoding\inputencodingname
\fi
\fi
\ifx\grffile@inputencoding\@empty
\else
\grffile@extendedcharstrue
\fi
\fi
\ifnum0\ifgrffile@babel 1\fi\ifgrffile@extendedchars 1\fi>\z@
\begingroup
\ifgrffile@babel
\csname @safe@activestrue\endcsname
\edef~{\string~}%
\fi
\ifgrffile@extendedchars
\grffile@inputenc@loop\^^A\^^H%
\grffile@inputenc@loop\^^K\^^K%
\grffile@inputenc@loop\^^N\^^_%
\grffile@inputenc@loop\^^?\^^ff%
\fi
\expandafter\grffile@extchar@Ginclude@graphics
\else
\expandafter\grffile@Ginclude@graphics
\fi
}
\def\grffile@extchar@Ginclude@graphics#1{%
\toks@{#1}%
\edef\grffile@filename{\the\toks@}%
\ifx\grffile@inputencoding\@empty
\else
\ifx\grfile@filenameencoding\@empty
\else
\ifx\grffile@inputencoding\grffile@filenameencoding
\else
\expandafter\ifx\csname StringEncodingConvert\endcsname\relax
\PackageError{grffile}{%
Package `stringenc' is not loaded,\MessageBreak
omitting file name conversion%
}\@ehc
\else
\StringEncodingConvert\grffile@temp\grffile@filename
\grffile@inputencoding\grffile@filenameencoding
\StringEncodingSuccessFailure{%
\let\grffile@filename\grffile@temp
}{%
\PackageError{grffile}{%
Filename conversion failed%
}\@ehc
}%
\fi
\fi
\fi
\fi
\edef\x{\endgroup
\noexpand\grffile@Ginclude@graphics{\grffile@filename}%
}%
\x
}
\def\grffile@inputenc@loop#1#2{%
\count@=`#1\relax
\loop
\begingroup
\uccode`\~=\count@
\uppercase{%
\endgroup
\edef~{\string~}%
}%
\ifnum\count@<`#2\relax
\advance\count@\@ne
\repeat
}
\def\grffile@space@getbase#1{%
\edef\grffile@tempa{%
\def\noexpand\@tempa####1#1\noexpand\@nil{%
\def\noexpand\Gin@base{####1}%
}%
}%
\grffile@IfFileExists{\filename@area\filename@base#1}{%
\grffile@tempa
\expandafter\@tempa\grffile@file@found\@nil
\edef\Gin@ext{#1}%
}{%
}%
}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdf@filesize\endcsname\relax
\ifxetex
\long\def\grffile@XeTeX@IfFileExists#1{%
\openin\@inputcheck"#1" %
\ifeof\@inputcheck
\closein\@inputcheck
\expandafter\@secondoftwo
\else
\closein\@inputcheck
\expandafter\@firstoftwo
\fi
}%
\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
\iftrue\@break@tfor\fi
}{}%
}%
\fi
\reserved@a
}%
}%
\def\grffile@org@Gread@QTm#1{%
\IfFileExists{\Gin@base.bb}{%
\Gread@eps{\Gin@base.bb}%
}{%
\G@measure@QTm{\Gin@base}{\Gin@ext}%
}%
}%
\ifx\Gread@QTm\grffile@org@Gread@QTm
\def\Gread@QTm#1{%
\grffile@IfFileExists{\Gin@base.bb}{%
\Gread@eps{\Gin@base.bb}%
}{%
\G@measure@QTm{\Gin@base}{\Gin@ext}%
}%
}%
\PackageInfo{grffile}{\string\Gread@QTm\space patched}%
\else
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname Gread@QTm\endcsname\relax
\@ifpackagelater{graphics}{2017/06/01}
{}
{%
\PackageWarning{grffile}{%
\string\Gread@QTm\space of xetex.def not found%
}%
}%
\else
\let\grffile@org@Gread@QTm\Gread@QTm
\def\Gread@QTm#1{%
\let\grffile@saved@IfFileExists\IfFileExists
\let\IfFileExists\grffile@IfFileExists
\grffile@org@GreadQTm{#1}%
\let\IfFileExists\grffile@saved@IfFileExists
}%
\fi
\fi
\let\grffile@org@Gread@eps\Gread@eps
\def\grffile@temp#1\immediate\openin#2 #3\grffile@nil#4\grffile@NIL{%
\begingroup
\toks@{#2}%
\edef\grffile@temp{\the\toks@}%
\def\grffile@test{\@inputcheck####1}%
\ifx\grffile@temp\grffile@test
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{%
\toks@{%
#1%
\immediate\openin\@inputcheck"##1"\relax
#3%
}%
\expandafter\endgroup
\expandafter\def\expandafter\Gread@eps
\expandafter##\expandafter1\expandafter{%
\the\toks@
}%
\PackageInfo{grffile}{%
\string\Gread@eps\space patched%
}%
}{%
\@ifpackagelater{graphics}{2017/06/01}
{}
{%
\PackageWarning{grffile}{%
Unsupported \string\Gread@eps\space not patched%
}%
}%
\endgroup
}%
}%
\expandafter\grffile@temp\Gread@eps{#1}\grffile@nil
\immediate\openin{} \grffile@nil\grffile@NIL
\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
\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
}%
\fi
\else
\long\def\grffile@IfFileExists#1{%
\expandafter\expandafter\expandafter
\ifx\expandafter\expandafter\expandafter\\\pdf@filesize{#1}\\%
\let\reserved@a\@secondoftwo
\ifx\input@path\@undefined
\else
\expandafter\@tfor\expandafter\reserved@b\expandafter
:\expandafter=\input@path\do{%
\expandafter\expandafter\expandafter
\ifx\expandafter\expandafter\expandafter
\\\pdf@filesize{\reserved@b#1}\\%
\else
\edef\grffile@file@found{\reserved@b#1}%
\let\reserved@a\@firstoftwo
\@break@tfor
\fi
}%
\fi
\expandafter\reserved@a
\else
\edef\grffile@file@found{#1}%
\expandafter\@firstoftwo
\fi
}%
\fi
\def\grffile@Ginclude@graphics#1{%
\begingroup
\ifgrffile@space
\let\Gin@getbase\grffile@space@getbase
\fi
\ifgrffile@multidot
\let\filename@base\@empty
\let\filename@simple\grffile@filename@simple
\fi
\grffile@org@Ginclude@graphics{#1}%
\endgroup
}%
\def\grffile@filename@simple#1.#2\\{%
\ifx\\#2\\%
\def\filename@base{#1}%
\let\filename@ext\relax
\else
\def\filename@base{}%
\grffile@analyze@ext{#1}.{#2}\\%
\fi
}
\def\grffile@analyze@ext#1.#2\\{%
\let\grffile@next\relax
\ifx\\#2\\%
\edef\filename@base{\filename@base#1}%
\let\filename@ext\relax
\def\grffile@next{\grffile@try@extlist}%
\else
\edef\filename@base{\filename@base #1}%
\edef\filename@ext{\filename@dot#2\\}%
\expandafter\ifx\csname Gin@rule@.\filename@ext\endcsname\relax
\edef\filename@base{\filename@base.}%
\def\grffile@next{\grffile@analyze@ext#2\\}%
\else
\grffile@IfFileExists{\filename@area\filename@base.\filename@ext}{%
% success
}{%
\edef\filename@base{\filename@base.\filename@ext}%
\let\filename@ext\relax
\def\grffile@next{\grffile@try@extlist}%
}%
\fi
\fi
\grffile@next
}
\def\grffile@try@extlist{%
\@for\grffile@temp:=\Gin@extensions\do{%
\grffile@IfFileExists{\filename@area\filename@base\grffile@temp}{%
\ifx\filename@ext\relax
\edef\filename@ext{\expandafter\@gobble\grffile@temp\@empty}%
\fi
}{}%
}%
\ifx\filename@ext\relax
\expandafter\let\expandafter\filename@base\expandafter\@empty
\expandafter\grffile@use@last@ext\filename@base.\\%
\fi
}
\def\grffile@use@last@ext#1.#2\\{%
\ifx\\#2\\%
\edef\filename@base{\expandafter\filename@dot\filename@base\\}%
\def\filename@ext{#1}%
\expandafter\@gobble
\else
\edef\filename@base{\filename@base#1.}%
\expandafter\@firstofone
\fi
{%
\grffile@use@last@ext#2\\%
}%
}
\def\grffile@option@status#1{%
\begingroup
\let\on@line\@empty
\PackageInfo{grffile}{%
Option `#1' is %
\expandafter\ifx\csname ifgrffile@#1\expandafter\endcsname
\csname iftrue\endcsname
set to `true'%
\else
\expandafter\ifx\csname grffile@#1@disabled\endcsname\@empty
not available%
\else
set to `false'%
\fi
\fi
}%
\endgroup
}
\grffile@option@status{multidot}
\grffile@option@status{extendedchars}
\grffile@option@status{space}
\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
}
\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
}
\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
}
\ifx\Gin@ii\grffile@Gin@ii@graphicx
\grffile@Fix@Gin@ii
\else
\AtBeginDocument{\grffile@Fix@Gin@ii}%
\fi
\grffile@RestoreCatcodes
\endinput
%%
%% End of file `grffile-2017-06-30.sty'.