summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty')
-rw-r--r--Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty621
1 files changed, 621 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty b/Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty
new file mode 100644
index 00000000000..7e4ec13cff5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty
@@ -0,0 +1,621 @@
+%%
+%% This is file `interfaces-pgfkeys.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% interfaces.dtx (with options: `pgfkeys')
+%%
+%% This is a generated file.
+%%
+%% interfaces : 2010/10/20 v1.0 - interfaces : interfaces with keys for other packages (FC)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work consists of the main source file interfaces.dtx
+%% and the derived files
+%% interfaces.sty, interfaces.pdf, interfaces.ins,
+%% interfaces-base.sty,
+%% interfaces-LaTeX.sty,
+%% interfaces-tikz.sty,
+%% interfaces-titlesec.sty,
+%% interfaces-hyperref.sty,
+%% interfaces-bookmark.sty,
+%% interfaces-hypbmsec.sty,interfaces-hypbmsec.code.tex,
+%% interfaces-fancyhdr.sty,
+%% interfaces-marks.sty,
+%% interfaces-tocloft.sty,
+%% interfaces-makecell.sty,
+%% interfaces-enumitem.sty,
+%% interfaces-truncate.sty,
+%% interfaces-appendix.sty,
+%% interfaces-embedfile.sty,
+%% interfaces-environ.sty,
+%% interfaces-umrand.sty,
+%% interfaces-scrlfile.sty,
+%% interfaces-pgfkeys.sty,
+%% interfaces-etoolbox.sty,
+%% interfaces-fancyvrb.sty
+%%
+%% interfaces: interfaces with keys for other packages (FC)
+%% Copyright (C) 2010 by Florent Chervet <florent.chervet@free.fr>
+%%
+\ProvidesPackage{interfaces-pgfkeys}
+ [2010/10/22 v1.1 pgfkeys handlers definitions (FC)]
+\RequirePackage{interfaces-base}
+\AtEndOfPackage{%
+ \let\itf@pgfkeys@unpack\pgfkeys@unpack
+ \let\itf@pgfkeys@case@three\pgfkeys@case@three
+ \let\itf@pgfkeys@exp@call\pgfkeys@exp@call
+ \let\itf@pgfkeysaddvalue\pgfkeysaddvalue
+}% AtEndOfPackage
+\def\itf@pgfkeys{%
+ \global\let\pgfkeys@unpack\itf@pgfkeys@unpack
+ \global\let\pgfkeys@case@three\itf@pgfkeys@case@three
+ \global\let\pgfkeys@exp@call\itf@pgfkeys@exp@call
+ \global\let\pgfkeysaddvalue\itf@pgfkeysaddvalue
+}% \itf@pgfkeys
+\AtBeginDocument{%
+ \itf@pgfkeys
+ \let\itf@pgfkeys\relax
+}% AtBeginDocument
+\providecommand*\pgfkeysmeaning[1]{%
+ \pgfkeysifdefined{#1}
+ {\expandafter\meaning\csname pgfk@#1\endcsname}
+ {\meaning\@undefined}%
+}%
+\def\pgfkeysvalueof@unexpanded#1{%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname pgfk@#1\endcsname}%
+}% \pgfkeysvalueof@unexpanded
+\newrobustcmd*\pgfkeysEsetvalue[2]{%
+ \expandafter\edef\csname pgfk@#1\endcsname{#2}%
+}% \pgfkeysEsetvalue
+\renewrobustcmd*\pgfkeysaddvalue[3]{% \cspreappto{pgfk@#1}{#2}{#3} (bug in pgfkeys.code.tex)
+ \edef\pgfkeys@global@temp{%
+ \unexpanded{#2}%
+ \ifcsname pgfk@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname pgfk@#1\endcsname}%
+ \fi
+ \unexpanded{#3}}%
+ \pgfkeyslet{#1}\pgfkeys@global@temp
+}% \pgfkeysaddvalue
+\newrobustcmd*\pgfkeysEaddvalue[3]{% \csepreappto{pgfk@#1}{#2}{#3}
+ \edef\pgfkeys@global@temp{%
+ #2%
+ \ifcsname pgfk@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname pgfk@#1\endcsname}%
+ \fi
+ #3}%
+ \pgfkeyslet{#1}\pgfkeys@global@temp
+}% \pgfkeysaddvalue
+%% missed a pair of braces around the argument in pgfkeys.code.tex ( code could break if it contains = or , )
+\def\pgfkeys@exp@call#1{\pgfkeysalso{\pgfkeyscurrentpath={#1}}}
+%% The value is now checked by \itf@pgfkeys@default@blank@required:
+\def\pgfkeys@unpack#1=#2=#3\pgfkeys@stop{%
+ \pgfkeys@spdef\pgfkeyscurrentkey{#1}%
+ \edef\pgfkeyscurrentkey{\pgfkeyscurrentkey}%
+ \ifx\pgfkeyscurrentkey\pgfkeys@empty
+ % Skip
+ \else%
+ \pgfkeys@add@path@as@needed
+ \pgfkeys@spdef\pgfkeyscurrentvalue{#2}%
+ \itf@pgfkeys@default@blank@required % <FC>
+ \pgfkeyscurrentkey % <FC>
+ \pgfkeys@case@one % <FC>
+ \fi
+}% \pgfkeys@unpack
+\def\itf@pgfkeys@default@blank@required#1#2{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% Hmm... no value
+ \pgfkeysifdefined{#1/.@def}%
+ {\pgfkeysgetvalue{#1/.@def}\pgfkeyscurrentvalue}
+ {}% no default, so leave it
+ \fi
+ \ifx\pgfkeyscurrentvalue\@empty
+ \pgfkeysifdefined{#1/.@blank}
+ {\pgfkeysgetvalue{#1/.@blank}\pgfkeyscurrentvalue}
+ {}% no /.blank specified
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% in case /.blank -> \pgfkeysnovalue
+ \pgfkeysifdefined{#1/.@def}%
+ {\pgfkeysgetvalue{#1/.@def}\pgfkeyscurrentvalue}
+ {}% no default, so leave it
+ \fi\fi
+ \ifx\pgfkeyscurrentvalue\pgfkeysvaluerequired
+ \pgfkeysvalueof{/errors/value required/.@cmd}\pgfkeyscurrentkey
+ \pgfkeyscurrentvalue
+ \pgfeov
+ \else
+ #2%
+ \fi
+}% \itf@pgfkeys@default@blank@required
+%% To handle the cases of: /handler/.default= /handler/.blank= /handler/.value required,
+%% it is necessary to redefine \pgfkeys@case@three
+\renewcommand*\pgfkeys@case@three{%
+ \pgfkeys@split@path
+ \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}
+ {%
+ \itf@pgfkeys@default@blank@required{/handlers/\pgfkeyscurrentname}%
+ {\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}\pgfkeys@code
+ \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}%
+ }
+ \pgfkeys@unknown % no handler, thus the key is unknown
+}% \pgfkeys@case@three
+\pgfkeys{%
+ /handlers/.alias/.code=\itf@pgfkeys@ifaliasexists{#1}{%
+ \pgfkeysedef\pgfkeyscurrentpath{\noexpand\pgfkeysalso{\pgfkeysdefaultpath#1={##1}}}},%
+ /handlers/.alias/.value required,%
+ /handlers/.blank/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@blank}{#1},%
+ /handlers/.blank/.default=\pgfkeysnovalue,%
+}% /.alias and /.blank
+\def\itf@pgfkeys@ifaliasexists#1#2{%
+ \pgfkeysifdefined{\pgfkeysdefaultpath#1/.@cmd}{#2}
+ {\pgfkeysifdefined{\pgfkeysdefaultpath#1}
+ {#2}
+ {\itf@pgfkeys@aliaserror{#1}}}%
+}% \itf@pgfkeys@ifaliasexists
+\def\itf@pgfkeys@aliaserror#1{%
+ \PackageError{interfaces-pgfkeys}
+ {You want the key \pgfkeyscurrentpath\space
+ \MessageBreak to be an alias for \pgfkeysdefaultpath#1
+ \MessageBreak but the key \pgfkeysdefaultpath#1
+ \MessageBreak is not defined!}\@eha\@gobble
+}% \itf@pgfkeys@aliaserror
+\pgfkeys{
+ /handlers/.alias*/.code=\itf@pgfkeys@ifaliasexists{#1}{%
+ \pgfkeysedef\pgfkeyscurrentpath{\noexpand\pgfkeysalso{\pgfkeysdefaultpath#1={##1}}}%
+ \@tfor\x:=+-*\do{%
+ \pgfkeysifdefined{\pgfkeysdefaultpath#1\x/.@cmd}
+ {\pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeysdefaultpath#1\x={##1}}}}
+ {}%
+ }},%
+ /handlers/.alias*/.value required,%
+}% /.alias*
+\pgfkeys{%
+ /handlers/.is private/.code=\pgfkeysdef\pgfkeyscurrentpath{%
+ \PackageError{#1}{Key \pgfkeyscurrentkey\space is private
+ \MessageBreak and should not be modified}\@ehd},%
+ /handlers/.is private to class/.code=\pgfkeysdef\pgfkeyscurrentpath{%
+ \ClassError{#1}{Key \pgfkeyscurrentkey\space is private
+ \MessageBreak and should not be modified}\@ehd}%
+}% /.is private
+\def\itf@pgfkeys@choice[#1]#2#3{%
+ \pgfkeys{\pgfkeyscurrentpath/.cd,%
+ .is choice,%
+ #2/.code={#3},%
+ .default/.expanded=\@firstoftwo#1}%
+}% \itf@pgfkeys@choice
+\pgfkeys{%
+ /handlers/.true/.code=\itf@pgfkeys@choice[{true}{false}]{true}{#1},%
+ /handlers/.false/.code=\itf@pgfkeys@choice[{true}{false}]{false}{#1},%
+ /handlers/.on/.code=\itf@pgfkeys@choice[{on}{off}]{on}{#1},%
+ /handlers/.off/.code=\itf@pgfkeys@choice[{on}{off}]{off}{#1},%
+}% /.true /.false
+\pgfkeys{%
+ /handlers/.store in cs/.code=\pgfkeysdef\pgfkeyscurrentpath{\csdef{#1}{##1}},%
+ /handlers/.estore in cs/.code=\pgfkeysdef\pgfkeyscurrentpath{\csedef{#1}{##1}},%
+}% /.store in cs
+%% /.store as code handlers
+\pgfkeys{%
+ /handlers/.store as code/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \noexpand\pgfkeyslet{\pgfkeyscurrentpath}\noexpand\pgfkeyscurrentvalue}%
+ \pgfkeyslet\pgfkeyscurrentpath\@empty
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\@empty
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded={%
+ \noexpand\pgfkeysvalueof@unexpanded{\pgfkeyscurrentpath}%
+ \noexpand\unexpanded{##1}}}}%
+ \pgfkeyslet{\pgfkeyscurrentpath\x/.@def}\@empty
+ }},%
+ /handlers/.store as code/.default=*+,%
+}% /.store as code
+\pgfkeys{%
+ /handlers/.estore as code/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \noexpand\pgfkeysEsetvalue{\pgfkeyscurrentpath}{##1}}%
+ \pgfkeyslet\pgfkeyscurrentpath\@empty
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded={%
+ \noexpand\pgfkeysvalueof@unexpanded{\pgfkeyscurrentpath}%
+ \noexpand\unexpanded{##1}}}}%
+ }},%
+ /handlers/.estore as code/.default=*+,%
+}% /.estore as code
+\pgfkeys{%
+ /handlers/.store as code in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csdef{#1}{##1}\fi}%
+ \@tfor\x:=*+\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded={%
+ \noexpand\ifcsname#1\endcsname
+ \noexpand\expandafter\noexpand\expandonce
+ \noexpand\csname#1\endcsname
+ \noexpand\fi
+ \noexpand\unexpanded{##1}}}}%
+ \pgfkeyslet{\pgfkeyscurrentpath\x/.@def}\@empty
+ }},%
+ /handlers/.store as code in cs/.value required,%
+}% /.store as code in cs
+\pgfkeys{%
+ /handlers/.estore as code in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csedef{#1}{##1}\fi}%
+ \@tfor\x:=*+\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded={%
+ \noexpand\ifcsname#1\endcsname
+ \noexpand\expandafter\noexpand\expandonce
+ \noexpand\csname#1\endcsname
+ \noexpand\fi
+ \noexpand\unexpanded{##1}}}}%
+ }},% default if \pgfkeysnovalue which expands to \@empty
+ /handlers/.estore as code in cs/.value required,%
+}% /.estore as code in cs
+\protected\def\itf@pgfk@color#1#2\@nil{%
+ \ifx\@let@token\color
+ \def\pgfkeyscurrentvalue{#2}%
+ \else\ifx\@let@token\normalcolor
+ \def\pgfkeyscurrentvalue{default}%
+ \else\ifx\@let@token\pgfkeysnovalue
+ \def\pgfkeyscurrentvalue{default}%
+ \fi\fi\fi
+}% \itf@pgfk@color
+\pgfkeys{%
+ /handlers/.store as color/.code=%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \futurelet\noexpand\@let@token\itf@pgfk@color
+ ##1\noexpand\pgfkeysnovalue\noexpand\@nil
+ \noexpand\pgfkeyslet{\pgfkeyscurrentpath}\noexpand\pgfkeyscurrentvalue}%
+}% /.store as color
+\pgfkeys{%
+ /handlers/.store as color in cs/.code=%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \futurelet\noexpand\@let@token\itf@pgfk@color
+ ##1\noexpand\pgfkeysnovalue\noexpand\@nil
+ \cslet{#1}\pgfkeyscurrentvalue}%
+}% /.store as color in cs
+\protected\def\itf@pgfk@colorcmd#1\@nil{%
+ \ifcat @\noexpand\@let@token
+ \def\pgfkeyscurrentvalue{\color{#1}}%
+ \else\ifcat 0\noexpand\@let@token
+ \def\pgfkeyscurrentvalue{\color{#1}}%
+ \else\ifx\@let@token\@nil
+ \let\pgfkeyscurrentvalue\normalcolor
+ \fi\fi\fi
+}% \itf@pgfk@colorcmd
+\pgfkeys{%
+ /handlers/.store as color command/.code=%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \futurelet\noexpand\@let@token\itf@pgfk@colorcmd
+ ##1\noexpand\@nil
+ \noexpand\pgfkeyslet{\pgfkeyscurrentpath}\noexpand\pgfkeyscurrentvalue}%
+ \pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}\normalcolor
+}% /.store as color command
+\pgfkeys{%
+ /handlers/.store as color command in cs/.code=%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \futurelet\noexpand\@let@token\itf@pgfk@colorcmd
+ ##1\noexpand\@nil
+ \cslet{#1}\noexpand\pgfkeyscurrentvalue}%
+ \pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}\normalcolor
+}% /.store as color command in cs
+\pgfkeys{%
+ /handlers/.store as number/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \normalcolor\pgfkeyssetvalue{\pgfkeyscurrentpath}{\numexpr##1\relax}}%
+ \pgfkeyslet\pgfkeyscurrentpath\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded=%
+ \noexpand\pgfkeysvalueof@unexpanded{\pgfkeyscurrentpath}%
+ \x
+ \numexpr\unexpanded{##1}\relax}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.store as number/.default=+-*,%
+}% /.store as number
+\pgfkeys{%
+ /handlers/.estore as number/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \noexpand\pgfkeyssetvalue{\pgfkeyscurrentpath}{\number\numexpr##1\relax}}%
+ \pgfkeyslet\pgfkeyscurrentpath\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \noexpand\pgfkeysvalueof{\pgfkeyscurrentpath}%
+ \x
+ \numexpr##1\relax}}%
+ }},%
+ /handlers/.estore as number/.default=+-*,%
+}% /.estore as number
+\pgfkeys{%
+ /handlers/.store as number in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csdef{#1}{\numexpr##1\relax}\fi}%
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \letcs\noexpand\pgfkeys@temp{%
+ \noexpand\ifcsname#1\endcsname
+ #1\noexpand\else z@\noexpand\fi}%
+ \edef\noexpand\pgfkeys@temp{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath={%
+ \noexpand\expandonce\noexpand\pgfkeys@temp
+ \x
+ \numexpr\noexpand\unexpanded{##1}\relax}}%
+ }\noexpand\pgfkeys@temp}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.store as number in cs/.value required,%
+}% /.store as number in cs
+\pgfkeys{%
+ /handlers/.estore as number in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csedef{#1}{\number\numexpr##1\relax}\fi}%
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \noexpand\csname\noexpand\ifcsname#1\endcsname
+ #1\noexpand\else z@\noexpand\fi\endcsname
+ \x
+ \numexpr##1\relax}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.estore as number in cs/.value required,%
+}% /.estore as number in cs
+\pgfkeys{%
+ /handlers/.defcounter/.code=\pgfkeysdef\pgfkeyscurrentpath{\defcounter{#1}{##1}}%
+}% /.defcounter
+\pgfkeys{%
+ /handlers/.store as glue/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \noexpand\pgfkeyssetvalue{\pgfkeyscurrentpath}{\glueexpr##1\relax}}%
+ \pgfkeyslet\pgfkeyscurrentpath\z@skip
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\z@skip
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@skip
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded=%
+ \noexpand\pgfkeysvalueof@unexpanded{\pgfkeyscurrentpath}%
+ \x
+ \if*\x\noexpand\itf@units@scale##1!
+ \else\glueexpr\noexpand\unexpanded{##1}\relax\fi}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@skip\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@skip\fi}%
+ }},%
+ /handlers/.store as glue/.default=+-*,%
+}% /.store as glue
+\pgfkeys{%
+ /handlers/.estore as glue/.code={%
+ \pgfkeysedef{\pgfkeyscurrentpath}{%
+ \noexpand\pgfkeysEsetvalue{\pgfkeyscurrentpath}{%
+ \noexpand\the\glueexpr##1\relax}}%
+ \pgfkeyslet\pgfkeyscurrentpath\z@skip
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\z@skip
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@skip
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \noexpand\pgfkeysvalueof{\pgfkeyscurrentpath}\x
+ \if*\x \noexpand\itf@units@scale##1!
+ \else\glueexpr##1\relax\fi}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@skip\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@skip\fi}%
+ }},%
+ /handlers/.estore as glue/.default=+-*,%
+}% /.estore as glue
+\pgfkeys{%
+ /handlers/.store as dimen/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \noexpand\pgfkeyssetvalue{\pgfkeyscurrentpath}{\dimexpr##1\relax}}%
+ \pgfkeyslet\pgfkeyscurrentpath\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath/.expanded={%
+ \noexpand\pgfkeysvalueof@unexpanded{\pgfkeyscurrentpath}%
+ \x
+ \if*\x \noexpand\itf@units@scale##1!
+ \else\dimexpr\noexpand\unexpanded{##1}\relax\fi}}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.store as dimen/.default=+-*,%
+}% /.store as dimen
+\pgfkeys{%
+ /handlers/.estore as dimen/.code={%
+ \pgfkeysedef\pgfkeyscurrentpath{%
+ \noexpand\pgfkeysEsetvalue{\pgfkeyscurrentpath}{%
+ \noexpand\the\dimexpr##1\relax}}%
+ \pgfkeyslet\pgfkeyscurrentpath\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=#1\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \noexpand\pgfkeysvalueof{\pgfkeyscurrentpath}\x
+ \if*\x \noexpand\itf@units@scale##1!
+ \else \dimexpr##1\relax\fi}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.estore as dimen/.default=+-*,%
+}% /.estore as dimen
+\pgfkeys{%
+ /handlers/.store as glue in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csdef{#1}{\glueexpr##1\relax}\fi}%
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@skip
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \letcs\noexpand\pgfkeys@temp{%
+ \noexpand\ifcsname#1\endcsname
+ #1\noexpand\else z@skip\noexpand\fi}%
+ \edef\noexpand\pgfkeys@temp{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath={%
+ \noexpand\expandonce\noexpand\pgfkeys@temp
+ \x
+ \if*\x\noexpand\itf@units@scale##1!
+ \else\glueexpr\noexpand\unexpanded{##1}\relax\fi}}%
+ }\noexpand\pgfkeys@temp}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@skip\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@skip\fi}%
+ }},%
+ /handlers/.store as glue in cs/.value required,%
+}% /.store as glue in cs
+\pgfkeys{%
+ /handlers/.estore as glue in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csedef{#1}{\the\glueexpr##1\relax}\fi}%
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@skip
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \noexpand\csname\noexpand\ifcsname#1\endcsname
+ #1\noexpand\else z@skip\noexpand\fi\endcsname
+ \x
+ \if*\x\noexpand\itf@units@scale##1!
+ \else\glueexpr##1\relax\fi}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@skip\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@skip\fi}%
+ }},%
+ /handlers/.etore as glue in cs/.value required,%
+}% /.estore as glue in cs
+\pgfkeys{%
+ /handlers/.store in skip cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csname#1\endcsname\glueexpr##1\relax\fi}%
+ \pgfkeyslet{/\pgfkeyscurrentpath/.@blank}\z@skip
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \csname#1\endcsname % should have been defined as a skip (not expandable)
+ \x
+ \if*\x\noexpand\itf@units@scale##1!
+ \else\glueexpr##1\relax\fi}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@skip\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@skip\fi}%
+ }},%
+ /handlers/.store in skip cs/.value required,%
+}% /.store in skip cs
+\pgfkeys{%
+ /handlers/.store as dimen in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csdef{#1}{\dimexpr##1\relax}\fi}%
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \letcs\noexpand\pgfkeys@temp{%
+ \ifcsname#1\endcsname#1\else z@\fi}%
+ \edef\noexpand\pgfkeys@temp{%
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath={%
+ \noexpand\expandonce\noexpand\pgfkeys@temp
+ \x
+ \if*\x\noexpand\itf@units@scale##1!
+ \else\dimexpr\noexpand\unexpanded{##1}\fi}}%
+ }\noexpand\pgfkeys@temp}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.store as dimen in cs/.value required,%
+}% /.store as dimen in cs {csname}{+-}
+\pgfkeys{%
+ /handlers/.estore as dimen in cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else \@defaultunits\itf@sk ##1pt\relax\@nnil
+ \csedef{#1}{\the\dimexpr\itf@sk\relax}\fi}%
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \noexpand\ifcsname#1\endcsname
+ \noexpand\@defaultunits\itf@sk
+ \noexpand\csname#1\endcsname pt\relax\noexpand\@nnil
+ \noexpand\else\itf@sk\z@\noexpand\fi
+ \if*\x
+ \itf@sk\dimexpr\itf@sk*\noexpand\itf@units@scale##1!\relax
+ \else
+ \noexpand\@defaultunits\@tempdima ##1pt\relax\noexpand\@nnil
+ \advance\itf@sk\x\@tempdima
+ \fi
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=\itf@sk}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.etore as dimen in cs/.value required,%
+}% /.estore as dimen in cs
+\pgfkeys{%
+ /handlers/.store in dimen cs/.code={%
+ \pgfkeysdef\pgfkeyscurrentpath{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text
+ \else\csname#1\endcsname\dimexpr##1\relax\fi}%
+ \pgfkeyslet{/\pgfkeyscurrentpath/.@blank}\z@
+ \@tfor\x:=+-*\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath\x}{%
+ \if*\x \else
+ \noexpand\@defaultunits\itf@sk ##1pt\relax\noexpand\@nnil
+ \fi
+ \noexpand\pgfkeysalso{\pgfkeyscurrentpath=%
+ \csname#1\endcsname % should have been defined as a dimen (not expandable)
+ \x
+ \if*\x \noexpand\itf@units@scale##1!
+ \else\itf@sk\fi}}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@def}{\if*\x\@ne\else\z@\fi}%
+ \pgfkeysEsetvalue{\pgfkeyscurrentpath\x/.@blank}{\if*\x\@ne\else\z@\fi}%
+ }},%
+ /handlers/.store in dimen cs/.value required,%
+}% /.store in dimen cs
+\pgfkeys{%
+ /handlers/.is multiple choice/.code=%
+ \pgfkeys{\pgfkeyscurrentpath/.cd,%
+ .unknown/.style={/errors/unknown choice value=\pgfkeyscurrentkey\pgfkeyscurrentvalue},%
+ .code=\expandafter\pgfkeys\expandafter{\pgfkeyscurrentkey/.cd,####1}%
+ },%
+ /handlers/.is multiple choice/.value forbidden,%
+}% /.is multiple choice
+\pgfkeys{%
+ /handlers/.is enum/.code={%
+ \itf@cnt\z@
+ \@for\x:=\pgfkeyscurrentvalue\do{%
+ \pgfkeysedef{\pgfkeyscurrentpath/\x}{%
+ \noexpand\pgfkeyssetvalue{\pgfkeyscurrentpath}{\x}%
+ \noexpand\pgfkeyssetvalue{\pgfkeyscurrentpath/.number}{\the\itf@cnt}}%
+ \ifnum\itf@cnt=\z@
+ \pgfkeyslet{\pgfkeyscurrentpath/.@def}\x
+ \pgfkeyslet{\pgfkeyscurrentpath/.@blank}\x
+ \fi
+ \advance\itf@cnt\@ne
+ }%
+ \pgfkeysalso{\pgfkeyscurrentpath/.is choice}},%
+ /handlers/.is enum/.value required,%
+}% /.is enum
+\endinput
+%%
+%% End of file `interfaces-pgfkeys.sty'.