diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/interfaces/interfaces-pgfkeys.sty | 621 |
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'. |