diff options
author | Norbert Preining <norbert@preining.info> | 2023-01-16 03:03:27 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-01-16 03:03:27 +0000 |
commit | 6f9e1680085e7bb4d258f6f8116369d122e196e1 (patch) | |
tree | 9ac0ecb239240d1d672b188f29c1479de215074b /graphics/pgf/base/tex/pgfkeys.code.tex | |
parent | b8345f39630408bb198e7636381ce4240154ca9b (diff) |
CTAN sync 202301160303
Diffstat (limited to 'graphics/pgf/base/tex/pgfkeys.code.tex')
-rw-r--r-- | graphics/pgf/base/tex/pgfkeys.code.tex | 1160 |
1 files changed, 0 insertions, 1160 deletions
diff --git a/graphics/pgf/base/tex/pgfkeys.code.tex b/graphics/pgf/base/tex/pgfkeys.code.tex deleted file mode 100644 index 184506a185..0000000000 --- a/graphics/pgf/base/tex/pgfkeys.code.tex +++ /dev/null @@ -1,1160 +0,0 @@ -% Copyright 2019 by Till Tantau -% -% This file may be distributed and/or modified -% -% 1. under the LaTeX Project Public License and/or -% 2. under the GNU Public License. -% -% See the file doc/generic/pgf/licenses/LICENSE for more details. - - -% The files pgfkeys.code.tex and pgfkeysfiltered.code.tex are -% perfectly self-contained, except that the catcode of @ -% should be made a letter. - - -% Guard against reading twice -\ifx\pgfkeysloaded\undefined - \let\pgfkeysloaded=\relax -\else - \expandafter\endinput -\fi - -% The purpose of this file is to provide a general settings engine that -% works with all TeX formats and has no save-stack impact - -\def\pgfkeys@empty{} -\long\def\pgfkeys@firstoftwo#1#2{#1} -\long\def\pgfkeys@secondoftwo#1#2{#2} - -% This is useful: - -\ifx\PackageError\undefined - \def\pgfkeys@error#1{\errmessage{Package pgfkeys Error: #1}}% -\else - \def\pgfkeys@error#1{\PackageError{pgfkeys}{#1}{}}% -\fi - -\ifx\eTeXrevision\undefined% - \pgfkeys@error{PGF requires etex in extended mode}% - \csname @@end\expandafter\endcsname\expandafter\end% -\fi - -\ifnum\eTeXversion<2 - \pgfkeys@error{PGF requires etex version 2}% - \csname @@end\expandafter\endcsname\expandafter\end% -\fi - -% e-TeX primitives and beyond - -\ifx\contextversion\undefined - \let\pgfkeys@expanded \expanded - \let\pgfkeys@unexpanded \unexpanded -\else - \let\pgfkeys@expanded \normalexpanded - \let\pgfkeys@unexpanded \normalunexpanded -\fi - - -% Set a key to a value -% -% #1 = key -% #2 = tokens -% -% Description: -% -% This command sets the key to the given tokens. The tokens are stored as -% is and can even contain things like #9. -% -% Keys are organized hierarchically using something similar to Unix -% paths. Thus, a typically key might be called "/tikz/length" or -% "/tikz/length dimension/.@cmd". Some keys starting with a dot are -% special, so they should not be used as normal key names (they are -% similar to Unix files starting with a dot -- you can use them, but -% be careful). -% -% Keys are always local to the current TeX group. -% -% Example: -% -% \pgfkeyssetvalue{/tikz/length}{2cm-3cm} -% \pgfkeyssetvalue{/algo/swap}{{#2}{#1}} - -\long\def\pgfkeyssetvalue#1#2{% - \pgfkeys@temptoks{#2}\expandafter\edef\csname pgfk@#1\endcsname{\the\pgfkeys@temptoks}% -} - -\long\def\pgfkeyssetevalue#1#2{% - \expandafter\edef\csname pgfk@#1\endcsname - {\pgfkeys@unexpanded\expandafter{\pgfkeys@expanded{#2}}}% -} - -% Add text to a key at the end -% -% #1 = key -% #2 = a value to be added at the beginning -% #3 = a value to be added at the end -% -% Description: -% -% This command adds #2 to the definition of the key. The key should -% have been set previously using \pgfkeyssetvalue. -% -% Example: -% -% \pgfkeysaddvalue{/tikz/length}{}{-3cm} - -\long\def\pgfkeysaddvalue#1#2#3{% - {% - \toks0{#2}% - \pgfkeysifdefined{#1} - {\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@#1\endcsname}}% - {\pgfkeys@temptoks{}}% - \toks1{#3}% - \xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1}% believe or don't: the spaces are important - }% - \pgfkeyslet{#1}\pgfkeys@global@temp% -} - - - -% Makes a key equal a given code -% -% #1 = key -% #2 = a code name -% -% Description: -% -% This command executes a \let command so that a key gets the same -% value as the parameter #2. -% -% Keys are always local to the current TeX group. -% -% Example: -% -% \pgfkeyslet{/algo/swap}{\myswap} - -\def\pgfkeyslet#1#2{% - \expandafter\let\csname pgfk@#1\endcsname#2% -} - - -% Retrieve the code stored in a key into a code -% -% #1 = key -% #2 = code -% -% Description: -% -% This command will set #2 to "point" to the value stored in the key. -% -% Example: -% -% \pgfkeysgetvalue{/tikz/swap}{\myswap} - -\def\pgfkeysgetvalue#1#2{\expandafter\let\expandafter#2\csname pgfk@#1\endcsname} - - - -% Retrieve the value stored in a key -% -% #1 = key -% -% Description: -% -% This command will expand to the value stored in the key. The key -% should previously have been set using \pgfkeyasetkey or \pgfkeyslet. -% -% Example: -% -% The length is \pgfkeysvalue{/tikz/length}. - -\def\pgfkeysvalueof#1{\csname pgfk@#1\endcsname} - - - -% If for testing whether a key exists -% -% #1 = key -% #2 = if-case -% #3 = else-case -% -% Description: -% -% This if will be executed if the key exists. In eTeX mode this works -% like a normal if, in normal TeX mode you need to provide an \else. -% -% Example: -% -% \pgfkeysifdefined{/tikz/length}{key exists}{does not exist} - -\long\def\pgfkeysifdefined#1{% - \ifcsname pgfk@#1\endcsname - \expandafter\pgfkeys@firstoftwo - \else - \expandafter\pgfkeys@secondoftwo - \fi -} - -% Tests whether a key is assignable. For standard keys which just -% store their value, this is identical to \pgfkeysifdefined. -% -% But \pgfkeysifassignable is true for command keys as well (but not -% for handled keys). -\long\def\pgfkeysifassignable#1#2#3{% - \pgfkeysifdefined{#1}% - {#2} - {\pgfkeysifdefined{#1/.@cmd}% - {#2}% - {#3}}% -}% - - - -% Execute settings -% -% #1 = list of settings -% -% Description: -% -% The list of settings should contain comma-separated settings. Each -% setting has the following form: -% -% /path/key=value -% -% The parts "/path/" and "=value" are optional. When the path is not -% specified, the value of the token register "\pgfkeypath" is used. If -% "=value" is missing, the value of the setting "/path/key/.@def" is used -% instead. If this key is set to "\pgfvaluerequired", the key -% "/errors/value required/.@cmd" is executed. This error handler, -% like all other error handlers, will get the current key as its first -% parameter (unexpanded) and the current value as its second value -% (also unexpanded). -% -% Any spaces at the beginning and at the end and around the -% equals-sign are removed. The key with the complete path is set to -% the code \pgfcurrentkey. -% -% The setting is then processed according to the following rules: -% -% 1) If the key /path/key/.@cmd" is present, its code is executed -% with the value computed above, followed by \pgfeov (end of -% value). So, to handle -% -% "/stuff/height= 1.5 ," -% -% /stuff/height/.@cmd should be set to some code, that can -% handle the parameter -% -% "1.5\pgfeov" -% -% For instance, saying -% -% \pgfkeys{/stuff/height/.@cmd}{#1\pgfeov}{\def\myheight{#1}} -% -% will do nicely. -% -% 2) Otherwise, if the key /path/key is present, this key is -% set to the value computed above. -% -% 3) Otherwise, if the key /handlers/key/.@cmd is present, it is executed -% with the same parameters as in 1). Additionally, the -% token register \pgfcurrentkeypath will be set to "/path/" and the -% macro \pgfcurrentkeywithoutpath to "key". So, in the above -% example if neither "/stuff/height/.@cmd" nor -% "/stuff/height" is present, but "/handlers/height" is, -% then "/handlers/height" is executed with the parameters: -% -% "1.5\pgfeov" -% -% and \pgfcurrentkey is set to "/stuff/height" and \pgfcurrentkeypath -% is set to "/stuff/" and \pgfcurrentkeywithoutpath to "height". -% -% 4) Otherwise, if the key "/path/.unknown/.@cmd" is present, its code is -% executed with the same parameters as in 3). -% -% 5) Otherwise, the key "/handlers/.unknown/.@cmd" is executed with the same -% parameters as in 1). -% -% After all settings have been processed, the value of the token -% register \pgfdefaultkeypath is set to its original value. Thus, any local -% change of this token register has no effect outside the call. -% -% Example: -% -% \pgfkeys{/tikz/.is family} -% \pgfkeys{/tikz/line width/.cd, -% .def=\pgfsetlinewidth{##1}, -% .set default=.4pt} -% \pgfkeys{tikz,line width=1pt} - -\newtoks\pgfkeys@pathtoks -\def\pgfkeyscurrentpath{\the\pgfkeys@pathtoks} -\newtoks\pgfkeys@temptoks - -\def\pgfkeys@root{/} -\let\pgfkeysdefaultpath\pgfkeys@root - -\def\pgfkeys{\expandafter\pgfkeys@@set\expandafter{\pgfkeysdefaultpath}}% -\long\def\pgfkeys@@set#1#2{% - \let\pgfkeysdefaultpath\pgfkeys@root% - \pgfkeys@parse#2,\pgfkeys@mainstop% - \def\pgfkeysdefaultpath{#1}} - -\def\pgfkeys@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@parse@main} -\def\pgfkeys@parse@main{% - \ifx\pgfkeys@possiblerelax\pgfkeys@mainstop% - \expandafter\pgfkeys@cleanup% - \else% - \expandafter\pgfkeys@normal% - \fi% -} -\newif\ifpgfkeys@syntax@handlers -\def\pgfkeys@normal{% - \ifpgfkeys@syntax@handlers% - \expandafter\pgfkeys@syntax@handlers% - \else% - \expandafter\pgfkeys@@normal% - \fi% -} -\def\pgfkeys@syntax@handlers{\pgf@keys@utilifnextchar\relax\pgfkeys@syntax@@handlers\pgfkeys@syntax@@handlers}%get rid of spaces -\def\pgfkeys@syntax@@handlers{\futurelet\pgfkeys@first@char\pgfkeys@syntax@handlers@test} -\def\pgfkeys@syntax@handlers@test{% - \pgfkeysgetvalue{/handlers/first char syntax/\meaning\pgfkeys@first@char}\pgfkeys@the@handler% - \ifx\pgfkeys@the@handler\relax% - \expandafter\pgfkeys@@normal% - \else% - \expandafter\pgfkeys@use@handler% - \fi% -} -\long\def\pgfkeys@use@handler#1,{% - \pgfkeys@the@handler{#1}% - \pgfkeys@parse% -} - -\long\def\pgfkeys@@normal#1,{% - \pgfkeys@unpack#1=\pgfkeysnovalue=\pgfkeys@stop% - \pgfkeys@parse% -} -\def\pgfkeys@cleanup\pgfkeys@mainstop{} - -\def\pgfkeys@mainstop{\pgfkeys@mainstop} % equals only itself -\def\pgfkeys@novalue{} -\def\pgfkeysnovalue{\pgfkeys@novalue} % equals only itself -\def\pgfkeysnovalue@text{\pgfkeysnovalue} -\def\pgfkeysvaluerequired{\pgfkeysvaluerequired} % equals only itself - -\long\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}% - \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% Hmm... no value - \pgfkeysifdefined{\pgfkeyscurrentkey/.@def}% - {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@def}{\pgfkeyscurrentvalue}} - {}% no default, so leave it - \fi% - \ifx\pgfkeyscurrentvalue\pgfkeysvaluerequired% - \def\pgf@marshal{\pgfkeysvalueof{/errors/value required/.@cmd}}% - \expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{}\pgfeov% - \else% - \pgfkeys@case@one% - \fi% - \fi} - -\def\pgfkeys@case@one{% - \pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}% - {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov} - {\pgfkeys@case@two}% -} - -\def\pgfkeys@case@two{% - \pgfkeysifdefined{\pgfkeyscurrentkey}% - {\pgfkeys@case@two@extern}% - {\pgfkeys@case@three}% -} - -\def\pgfkeys@case@two@extern{% - \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% - \pgfkeysvalueof{\pgfkeyscurrentkey}% - \else% - \pgfkeyslet{\pgfkeyscurrentkey}\pgfkeyscurrentvalue% - \fi% -} - - -% either handled key or unknown. -% -% This macro will be replaced by the /handler config/handle only existing -% configuration, see below. -\def\pgfkeys@case@three{% - \pgfkeys@split@path% - \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}% - {\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov} - {\pgfkeys@unknown}% -} -\let\pgfkeys@case@three@handleall=\pgfkeys@case@three -\def\pgfkeys@case@three@handle@restricted{% - \pgfkeys@split@path% - \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{% - \pgfkeys@ifexecutehandler{% - \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov - }{% - % this here is necessary: /my search path/key/.code - % won't be called, so \pgfkeyscurrentpath == '/my search path/key' - % -> it should be one directory higher! We want to invoke the - % .unknown handler in - % '/my search path' - % - % Idea: - % set - % - path := '/my search path' - % - name := 'key/.code' - % - key = '/my search path/key/.code' - \let\pgfkeys@tempa=\pgfkeyscurrentkey - \let\pgfkeys@tempb=\pgfkeyscurrentname - \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}% - \pgfkeys@split@path% - \let\pgfkeyscurrentkey=\pgfkeys@tempa - \edef\pgfkeyscurrentname{\pgfkeyscurrentname/\pgfkeys@tempb}% - \pgfkeys@unknown - }% - }{% - \pgfkeys@unknown - }% -} - -% this macro is to implement the |handle only existing| key in key filtering: -% #1: the code to invoke IF the key handler shall be executed -% #2: the code to invoke if it shall not run. -\def\pgfkeys@ifexecutehandler#1#2{#1}% -\let\pgfkeys@ifexecutehandler@handleall=\pgfkeys@ifexecutehandler -\def\pgfkeys@ifexecutehandler@handleonlyexisting#1#2{% - \ifcsname pgfk@excpt@\pgfkeyscurrentname\endcsname% - #1% ok, this particular key handler is known and should be processed in any case (for example .try) - \else - % implement the 'only existing' feature here: - \pgfkeysifdefined{\pgfkeyscurrentpath}{#1}{% - \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{#1}{#2}% - }{}% - \fi% -}% -\def\pgfkeys@ifexecutehandler@handlefullorexisting#1#2{% - \ifpgfkeysaddeddefaultpath - \ifcsname pgfk@excpt@\pgfkeyscurrentname\endcsname% - #1% ok, this particular key handler is known and be processed in any case (for example .try) - \else - % implement the 'only existing' feature here: - \pgfkeysifdefined{\pgfkeyscurrentpath}{% - #1% - }{% - \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{% - #1% - }{% - #2% - }% - }% - \fi% - \else - #1% ok, always true if the USER explicitly provided the full key path. - \fi -}% -\def\pgfkeysaddhandleonlyexistingexception#1{\expandafter\def\csname pgfk@excpt@#1\endcsname{1}}% - -\def\pgfkeys@unknown{% - \pgfkeysifdefined{\pgfkeyscurrentpath/.unknown/.@cmd}% - {% - \pgfkeysgetvalue{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov} - {% - \pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov% - }% -} - - -\long\def\pgfkey@argumentisspace#1{% - \long\def\pgfkeys@spdef##1##2{% - \futurelet\pgfkeys@possiblespace\pgfkeys@sp@a##2\pgfkeys@stop\pgfkeys@stop#1\pgfkeys@stop\relax##1}% - \def\pgfkeys@sp@a{% - \ifx\pgfkeys@possiblespace\pgfkeys@sptoken% - \expandafter\pgfkeys@sp@b% - \else% - \expandafter\pgfkeys@sp@b\expandafter#1% - \fi}% - \long\def\pgfkeys@sp@b#1##1 \pgfkeys@stop{\pgfkeys@sp@c##1}% -} -\pgfkey@argumentisspace{ } -\long\def\pgfkeys@sp@c#1\pgfkeys@stop#2\relax#3{\pgfkeys@temptoks{#1}\edef#3{\the\pgfkeys@temptoks}} -{\def\:{\global\let\pgfkeys@sptoken= } \: } - - - -\def\pgfkeys@add@path@as@needed{% Should add the path if the - % \pgfkeyscurrentkey does not start with / - \expandafter\futurelet\expandafter\pgfkeys@possibleslash\expandafter\pgfkeys@check@slash\pgfkeyscurrentkey\relax% -} -\newif\ifpgfkeysaddeddefaultpath -\def\pgfkeys@check@slash{% - \ifx\pgfkeys@possibleslash/% - \expandafter\pgfkeys@nevermind% - \else% - \expandafter\pgfkeys@addpath% - \fi% -} - -\def\pgfkeys@nevermind#1\relax{% - \pgfkeysaddeddefaultpathfalse - \let\pgfkeyscurrentkeyRAW\pgfkeyscurrentkey -} -\def\pgfkeys@addpath#1\relax{% - \pgfkeysaddeddefaultpathtrue - \def\pgfkeyscurrentkeyRAW{#1}% - \edef\pgfkeyscurrentkey{\pgfkeysdefaultpath#1}% -} - - -\def\pgfkeys@split@path{% Should assign the two codes - % \pgfkeyscurrentname and \pgfcurrentlkeypath - \pgfkeys@pathtoks{}% - \expandafter\pgfkeys@splitter\pgfkeyscurrentkey//% -} -\def\pgfkeys@splitter#1/#2/{% - \def\pgfkeys@temp{#2}% - \ifx\pgfkeys@temp\pgfkeys@empty% - % Ah. done - \def\pgfkeyscurrentname{#1}% - \expandafter\pgfkeys@gobbletoslash% - \else% - \expandafter\pgfkeys@pathtoks\expandafter{\the\pgfkeys@pathtoks#1/}% - \fi% - \pgfkeys@splitter#2/% -} -\def\pgfkeys@gobbletoslash\pgfkeys@splitter/{% - \if\relax\detokenize\expandafter{\the\pgfkeys@pathtoks}\relax\else - \expandafter\pgfkeys@remove@slash\the\pgfkeys@pathtoks\relax - \fi -}% -\def\pgfkeys@remove@slash#1/\relax{\pgfkeys@pathtoks{#1}} - - - -% Quickly set keys -% -% #1 = default path -% #2 = key-value pairs -% -% Description: -% -% This command starts the execution with the default path set to -% #1. This command should only be used when speed is important (like -% in a heavily used macro like \tikzset). Normally, keys should be -% used to set the path. Note that if #1 equals /, then \pgfkeys will -% actually be quicker! -% -% Example: -% -% \pgfqkeys{/tikz}{myother length/.code=\def\myotherlength{#1}\pgfkeysalso{length=#1}} - -\def\pgfqkeys{\expandafter\pgfkeys@@qset\expandafter{\pgfkeysdefaultpath}}% -\long\def\pgfkeys@@qset#1#2#3{\def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}} - - -% Sets keys while setting keys -% -% #1 = key-value pairs -% -% Description: -% -% This code may only be called inside the code that is executed for a -% key. The #1 should be a list of settings pairs. They will be executed -% as if they had been given as the argument to the \pgfkeys command. -% -% Example: -% -% \pgfkeys{tikz,myother length/.code=\def\myotherlength{#1}\pgfkeysalso{length=#1}} - -\long\def\pgfkeysalso#1{\pgfkeys@parse#1,\pgfkeys@mainstop} - - - -% Quickly sets keys while setting keys -% -% #1 = default path -% #2 = key-value pairs -% -% Description: -% -% This command executes #2 with the default path set to #1. This -% command will cause chaos if used incorrectly. The only safe -% place to use it instead of \pgfkeys is at the beginning of a TeX group. -% -% Example: -% -% \begingroup -% \pgfqkeysalso{/tikz}{myother length/.code=\def\myotherlength{#1}\pgfkeysalso{length=#1}} - -\long\def\pgfqkeysalso#1#2{\def\pgfkeysdefaultpath{#1/}\pgfkeys@parse#2,\pgfkeys@mainstop} - - - - -% Now setup the default handlers and keys: - -% Define a key macro with one argument (\def or \edef) -% -% #1 = key -% #2 = code -% -% Description: -% -% This command will setup things so the key/.@cmd contains a macro -% that takes one parameter and has #2 as its code. -% -% Example: -% -% \pgfkeysdef{/my key}{\show#1} - -\long\def\pgfkeysdef#1#2{% - \long\def\pgfkeys@temp##1\pgfeov{#2}% - \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}% - \pgfkeyssetvalue{#1/.@body}{#2}% -} -\long\def\pgfkeysedef#1#2{% - \long\edef\pgfkeys@temp##1\pgfeov{#2}% - \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}% - \pgfkeyssetevalue{#1/.@body}{#2}% -} - - -% Define a key macro with multiple arguments (\def or \edef) -% -% #1 = key -% #2 = argument pattern -% #2 = code -% -% Description: -% -% This command will setup things so the key/.@cmd contains a macro -% that takes #2 as its parameter pattern and has #3 as its code. -% -% Example: -% -% \pgfkeysdefargs{/swap}{#1#2}{#2#1} - -\long\def\pgfkeysdefargs#1#2#3{% - \long\def\pgfkeys@temp#2\pgfeov{#3}% - \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}% - \pgfkeyssetvalue{#1/.@args}{#2\pgfeov}% - \pgfkeyssetvalue{#1/.@body}{#3}% -} - -\long\def\pgfkeysedefargs#1#2#3{% - \long\edef\pgfkeys@temp#2\pgfeov{#3}% - \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}% - \pgfkeyssetvalue{#1/.@args}{#2\pgfeov}% - \pgfkeyssetevalue{#1/.@body}{#3}% -} - -% Like \pgfkeysdefargs, but `#2' is an integer denoting the expected -% *number* of arguments. -% -% There is a subtle difference between the 'args' command, when it -% comes to spaces: -% a key defined with defargs{#1#2} must not have spaces between the -% arguments when it is used. -% -% See this: -% -%-------------------------------------------------- -% % defnargs: -% \pgfkeysdefnargs{/a}{2}{1=`#1', 2=`#2'} -% \pgfkeys{ -% /a= -% {1} -% {2} -% } -% ->defnargs: 1=`1', 2=`2' -% -% defargs: -% \pgfkeysdefargs{/b}{#1#2}{1=`#1', 2=`#2'} -% \pgfkeys{ -% /b= -% {1} -% {2} -% } -% ->defargs: 1=`1', 2=` 2' (note the space!) -% -% defargs: -% \pgfkeysdefargs{/b}{#1#2}{1=`#1', 2=`#2'} -% \pgfkeys{ -% /b= -% {1}% -% {2} -% } -% ->defargs: 1=`1', 2=`2' -% -------------------------------------------------- -\long\def\pgfkeysdefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\def}{\pgfkeyssetvalue}}% -\long\def\pgfkeysedefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\edef}{\pgfkeyssetevalue}}% -\long\def\pgfkeysdefnargs@#1#2#3#4#5{% - \ifcase#2\relax - \pgfkeyssetvalue{#1/.@args}{}% - \or - \pgfkeyssetvalue{#1/.@args}{##1}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3##4}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8}% - \or - \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8##9}% - \else - \pgfkeys@error{\string\pgfkeysdefnargs: expected <= 9 arguments, got #2}% - \fi - \pgfkeysgetvalue{#1/.@args}\pgfkeys@tempargs - \def\pgfkeys@temp{\expandafter\long\expandafter#4\csname pgfk@#1/.@@body\endcsname}% - \expandafter\pgfkeys@temp\pgfkeys@tempargs{#3}% - % eliminate the \pgfeov at the end such that TeX gobbles spaces - % by using - % \pgfkeysdef{#1}{\pgfkeysvalueof{#1/.@@body}##1} - % (with expansion of '#1'): - \edef\pgfkeys@tempargs{\noexpand\pgfkeysvalueof{#1/.@@body}}% - \def\pgfkeys@temp{\pgfkeysdef{#1}}% - \ifnum#2=1\relax - \expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs{##1}}% - \else - \expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs##1}% - \fi - #5{#1/.@body}{#3}% -} - -% Defining a key command - -\pgfkeysdef{/handlers/.code}{\pgfkeysdef{\pgfkeyscurrentpath}{#1}} -\pgfkeysdef{/handlers/.code 2 args}{\pgfkeysdefargs{\pgfkeyscurrentpath}{##1##2}{#1}} -\pgfkeysdef{/handlers/.ecode}{\pgfkeysedef{\pgfkeyscurrentpath}{#1}} -\pgfkeysdef{/handlers/.ecode 2 args}{\pgfkeysedefargs{\pgfkeyscurrentpath}{##1##2}{#1}} -\pgfkeysdefnargs{/handlers/.code args}{2}{\pgfkeysdefargs{\pgfkeyscurrentpath}{#1}{#2}} -\pgfkeysdefnargs{/handlers/.ecode args}{2}{\pgfkeysedefargs{\pgfkeyscurrentpath}{#1}{#2}} -\pgfkeysdefnargs{/handlers/.code n args}{2}{\pgfkeysdefnargs{\pgfkeyscurrentpath}{#1}{#2}} -\pgfkeysdefnargs{/handlers/.ecode n args}{2}{\pgfkeysedefnargs{\pgfkeyscurrentpath}{#1}{#2}} - -% Adding to a key command - -\pgfkeys{/handlers/.add code/.code 2 args=% - % Find out, whether with args or not. - \pgfkeysifdefined{\pgfkeyscurrentpath/.@args}% - {% Yes, so add to body and reuse args - \pgfkeysaddvalue{\pgfkeyscurrentpath/.@body}{#1}{#2}% - % Redefine code - {% - \pgfkeysgetvalue{\pgfkeyscurrentpath/.@args}{\pgfkeys@tempargs}% - \pgfkeysgetvalue{\pgfkeyscurrentpath/.@body}{\pgfkeys@tempbody}% - \def\pgfkeys@marshal{\expandafter\long\expandafter\gdef\expandafter\pgfkeys@global@temp\pgfkeys@tempargs}% - \expandafter\pgfkeys@marshal\expandafter{\pgfkeys@tempbody}% - }% - \pgfkeysifdefined{\pgfkeyscurrentpath/.@@body}{% - % support for \pgfkeysndefargs: - \pgfkeyslet{\pgfkeyscurrentpath/.@@body}{\pgfkeys@global@temp}% - }{% - % support for \pgfkeysdefargs: - \pgfkeyslet{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@global@temp}% - }% - }% - {% - % No, so single argument (simple \pgfkeysdef). Redefine accordingly. - \edef\pgf@expanded@path{\pgfkeyscurrentpath}% - {% - \toks0{#1}% - \pgfkeysifdefined{\pgf@expanded@path/.@cmd}% - {\expandafter\expandafter\expandafter\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@\pgf@expanded@path/.@body\endcsname}}% - {\expandafter\pgfkeys@temptoks\expandafter{\expandafter\pgfkeyssetvalue\expandafter{\pgf@expanded@path}{##1}}}% - \toks1{#2}% - \xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1 }% - }% - \def\pgf@temp{\pgfkeyssetvalue{\pgf@expanded@path/.@body}}% - \expandafter\pgf@temp\expandafter{\pgfkeys@global@temp}% - \expandafter\long\expandafter\def\expandafter\pgfkeys@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}% - \pgfkeyslet{\pgf@expanded@path/.@cmd}\pgfkeys@temp% - }% -} -\pgfkeys{/handlers/.prefix code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={#1}{}}}% -\pgfkeys{/handlers/.append code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{#1}}}% - - -% Defining a style - -\pgfkeys{/handlers/.style/.code=\pgfkeys{\pgfkeyscurrentpath/.code=\pgfkeysalso{#1}}} -\pgfkeys{/handlers/.estyle/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\noexpand\pgfkeysalso{#1}}} -\pgfkeys{/handlers/.style args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code args={#1}{\pgfkeysalso{#2}}}} -\pgfkeys{/handlers/.estyle args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.ecode args={#1}{\noexpand\pgfkeysalso{#2}}}} -\pgfkeys{/handlers/.style 2 args/.code=\pgfkeys{\pgfkeyscurrentpath/.code 2 args=\pgfkeysalso{#1}}} -\pgfkeys{/handlers/.style n args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code n args={#1}{\pgfkeysalso{#2}}}} - -% Adding to a style - -\pgfkeys{/handlers/.add style/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{\pgfkeysalso{#2}}}}% -\pgfkeys{/handlers/.prefix style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{}}}% -\pgfkeys{/handlers/.append style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeysalso{#1}}}}% - - -% Defining a value - -\pgfkeys{/handlers/.initial/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{#1}} -\pgfkeys{/handlers/.add/.code 2 args=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{#2}} -\pgfkeys{/handlers/.prefix/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{}} -\pgfkeys{/handlers/.append/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{}{#1}} -\pgfkeys{/handlers/.get/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{#1}} -\pgfkeys{/handlers/.link/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{\pgfkeysvalueof{#1}}} - - -% Defining a default - -\pgfkeys{/handlers/.default/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{#1}} -\pgfkeys{/handlers/.value required/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeysvaluerequired}} -\pgfkeys{/handlers/.value forbidden/.code=\pgfkeys{\pgfkeyscurrentpath/.add code=% -{% - \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% - \else% - \def\pgf@marshal{\pgfkeysvalueof{/errors/value forbidden/.@cmd}}% - \expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov% - \fi% -}{}}} - - -% High-level cmds - -\pgfkeys{/handlers/.store in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\def#1{##1}}} -\pgfkeys{/handlers/.estore in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\edef#1{##1}}} - -\pgfkeys{/handlers/.is if/.code=\pgfkeysalso{% - \pgfkeyscurrentpath/.code=\pgfkeys@handle@boolean{#1}{##1}, - \pgfkeyscurrentpath/.default=true% - }% -} -\def\pgfkeys@handle@boolean#1#2{% - \ifcsname#1#2\endcsname% - \csname#1#2\endcsname% - \else% - \def\pgf@marshal{\pgfkeysvalueof{/errors/boolean expected/.@cmd}}% - \expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{#2}\pgfeov% - \fi -} - -\pgfkeys{/handlers/.is choice/.code=% - \pgfkeys{% - \pgfkeyscurrentpath/.cd,% - .code=\def\pgfkeys@was@choice{##1}\expandafter\pgfkeysalso\expandafter{\pgfkeyscurrentkey/##1}, - .unknown/.code={% - \def\pgf@marshal{\pgfkeysvalueof{/errors/unknown choice value/.@cmd}}% - {\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@pathtoks\expandafter}\expandafter{\pgfkeys@was@choice}\pgfeov}% - }% - }% -} - - -% Repeatedly setting a key - -\pgfkeys{/handlers/.list/.code=% - {% - \ifx\foreach\@undefined% - \pgfkeys@error{You need to load the pgffor package to use the .list key syntax.}% - \fi% - % Use foreach to unfold the list - \def\pgf@keys@temp{}% - \foreach \pgf@keys@key in{#1}% - {\expandafter\expandafter\expandafter\gdef% - \expandafter\expandafter\expandafter\pgf@keys@temp% - \expandafter\expandafter\expandafter{\expandafter\pgf@keys@temp\expandafter{\pgf@keys@key}}}% - \edef\pgf@keys@list@path{\pgfkeyscurrentpath}% - \expandafter\expandafter\expandafter\pgf@keys@do@list% - \expandafter\expandafter\expandafter{\expandafter\pgf@keys@list@path\expandafter}\pgf@keys@temp\pgf@stop% - }% -} -\def\pgf@keys@do@list#1{\pgf@keys@utilifnextchar\bgroup{\pgf@keys@do@list@item{#1}}\pgf@keys@gobble} -\def\pgf@keys@do@list@item#1#2{\pgfkeysalso{#1={#2}}\pgf@keys@do@list{#1}} - - -% Forwarding - -\pgfkeys{/handlers/.forward to/.code=% - \pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeys{#1={##1}}}} -} - - -% Inspection handlers - -\pgfkeys{/handlers/.show value/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{\pgfkeysshower}\show\pgfkeysshower} % inspect the value -\pgfkeys{/handlers/.show code/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeysshower}\show\pgfkeysshower} % inspect the body of the command - - -% First char syntax handlers -\pgfkeys{/handlers/first char syntax/.is if=pgfkeys@syntax@handlers} - -% Path handling - -% Prepares the .unknown handler used by '.search also'. -% It will be stored into \pgfkeys@global@temp. -\def\pgfkeys@searchalso@prepare@unknown@handler#1{% - \global\def\pgfkeys@global@temp##1\pgfeov{}% - \pgfkeys@searchalso@parse#1,\pgfkeys@mainstop - {% - \toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}% - \toks1={% - \pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeys@searchalso@temp@value\pgfeov - }% - \xdef\pgfkeys@global@temp{% - \noexpand\def\noexpand\pgfkeys@searchalso@temp@value{####1}% - \noexpand\ifpgfkeysaddeddefaultpath - \noexpand\expandafter\noexpand\pgfkeys@firstoftwo - \noexpand\else - \noexpand\expandafter\noexpand\pgfkeys@secondoftwo - \noexpand\fi{% - \noexpand\pgfkeyssuccessfalse - \noexpand\let\noexpand\pgfkeys@searchalso@name=\noexpand\pgfkeyscurrentkeyRAW - \the\toks0 % one or more /.try things; one for each path. The last element won't have a /.try - %\noexpand\ifpgfkeyssuccess - %\noexpand\else - % \the\toks1 % invoke /handlers/.unknown handler - %\noexpand\fi - }{% - \the\toks1 % invoke /handlers/.unknown handler - }% - }% - \expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}% - }% -}% - -\def\pgfkeys@searchalso@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@searchalso@parse@main} -\def\pgfkeys@searchalso@parse@main{% - \ifx\pgfkeys@possiblerelax\pgfkeys@mainstop% - \expandafter\pgfkeys@cleanup% - \else% - \expandafter\pgfkeys@searchalso@appendentry% - \fi% -} -\def\pgfkeys@searchalso@appendentry#1,#2{% - \def\pgfkeys@searchalso@nexttok{#2}% - \pgfkeys@spdef\pgfkeys@temp{#1}% - {% - \toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}% - \toks1=\expandafter{\pgfkeys@temp}% - \xdef\pgfkeys@global@temp{% - \the\toks0 % the space is important! - \noexpand\ifpgfkeyssuccess\noexpand\else - \noexpand\pgfqkeys{\the\toks1 }{\noexpand\pgfkeys@searchalso@name - \ifx\pgfkeys@searchalso@nexttok\pgfkeys@mainstop\else/.try\fi /.expand once=\noexpand\pgfkeys@searchalso@temp@value}% - \noexpand\fi}% - \expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}% - }% - \pgfkeys@searchalso@parse#2% -} -\pgfkeys{% - /handlers/.is family/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\edef\noexpand\pgfkeysdefaultpath{\pgfkeyscurrentpath/}},% - /handlers/.cd/.code=\edef\pgfkeysdefaultpath{\pgfkeyscurrentpath/},% - /handlers/.search also/.code={% - \pgfkeys@searchalso@prepare@unknown@handler{#1}% -%\message{I prepared the '\pgfkeyscurrentpath/.unknown' handler \meaning\pgfkeys@global@temp\space for '#1'.}% - \pgfkeyslet{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@global@temp}% - } -}% - - -% Value expansion - -\pgfkeys{/handlers/.expand once/.code=\expandafter\pgfkeys@exp@call\expandafter{#1}} -\pgfkeys{/handlers/.expand twice/.code=\expandafter\expandafter\expandafter\pgfkeys@exp@call\expandafter\expandafter\expandafter{#1}} -\pgfkeys{/handlers/.expanded/.code=\edef\pgfkeys@temp{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfkeys@temp}} - -\long\def\pgfkeys@exp@call#1{\pgfkeysalso{\pgfkeyscurrentpath={#1}}} - -\def\pgfkeys@mathparse{% - \ifcsname pgfmathparse\endcsname - \expandafter\pgfmathparse - \else - \pgfkeys@error{You have to load `pgfmath' to use \string\pgfmathparse}% - \expandafter\def\expandafter\pgfmathresult - \fi -} -\pgfkeys{/handlers/.evaluated/.code=\pgfkeys@mathparse{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}} - -% Try to set a key and do nothing if not define - -\newif\ifpgfkeyssuccess -\pgfkeys{/handlers/.try/.code=\pgfkeys@try} -\pgfkeys{/handlers/.retry/.code=\ifpgfkeyssuccess\else\pgfkeys@try\fi} -\def\pgfkeys@try{% - \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}% make sure that \pgfkeys@code doesn't know about 'try'. Important for .is choice - \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% Hmm... no value - \pgfkeysifdefined{\pgfkeyscurrentpath/.@def}% - {\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}} - {}% no default, so leave it - \fi% - \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}% - {% - \pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov% - \pgfkeyssuccesstrue% - }% - {% - \pgfkeysifdefined{\pgfkeyscurrentpath}% - {% - \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text% - \pgfkeysvalueof{\pgfkeyscurrentpath}% - \else% - \pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue% - \fi% - \pgfkeyssuccesstrue% - }% - {% - \pgfkeys@split@path% - \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{% - % in the standard configuration, this check here is redundant - % because pgfkeys@ifexecutehandler === true. - % It is only interesting for 'handle only existing'. - \pgfkeys@ifexecutehandler{% - \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}% - \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov - \pgfkeyssuccesstrue% - }{% - \pgfkeyssuccessfalse - }% - }{% - \pgfkeyssuccessfalse - }% - }% - }% -} - -% Utilities - -\pgfkeys{/utils/exec/.code=#1} % simply execute the given code directly. - - -% Errors - -\pgfkeys{ - /errors/boolean expected/.code 2 args=% - {% - \toks1={#1}% - \toks2={#2}% - \pgfkeys@error{% - Boolean parameter of key '\the\toks1' must be 'true' or 'false', not - '\the\toks2'. I am going to ignore it% - }% - }, - /errors/value required/.code 2 args=% - {% - \toks1={#1}% - \pgfkeys@error{% - The key '\the\toks1' requires a value. I am going to ignore this - key% - }% - }, - /errors/value forbidden/.code 2 args=% - {% - \toks1={#1}% - \toks2={#2}% - \pgfkeys@error{% - You may not specify a value for the key '\the\toks1'. I am going to ignore - the value '\the\toks2' that you provided% - }% - }, - /errors/unknown choice value/.code 2 args=% - {% - \toks1={#1}% - \toks2={#2}% - \pgfkeys@error{% - Choice '\the\toks2' unknown in choice key '\the\toks1'. I am - going to ignore this key% - }% - }, - /errors/unknown key/.code 2 args=% - {% - \toks1={#1}% - \toks2={#2}% - \def\pgf@temp{#2}% - \pgfkeys@error{% - I do not know the key '\the\toks1'\ifx\pgf@temp\pgfkeysnovalue@text\space\else, to which you passed - '\the\toks2', \fi and I am going to ignore it. Perhaps you - misspelled it% - }% - } -} - -\pgfkeys{/handlers/.unknown/.code=% - {% - \def\pgf@marshal{\pgfkeysvalueof{/errors/unknown key/.@cmd}}% - {\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov}% - }% -} - -\pgfkeys{ - /handler config/.is choice, - /handler config/all/.code={% - \let\pgfkeys@case@three=\pgfkeys@case@three@handleall - \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleall - }, - /handler config/only existing/.code={% - \let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted - \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleonlyexisting - }, - /handler config/full or existing/.code={% - \let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted - \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handlefullorexisting - }, - /handler config/only existing/add exception/.code={\pgfkeysaddhandleonlyexistingexception{#1}}, -}% -\pgfkeysaddhandleonlyexistingexception{.cd}% -\pgfkeysaddhandleonlyexistingexception{.try}% -\pgfkeysaddhandleonlyexistingexception{.retry}% -\pgfkeysaddhandleonlyexistingexception{.lastretry}% -\pgfkeysaddhandleonlyexistingexception{.unknown}% -\pgfkeysaddhandleonlyexistingexception{.expand once}% -\pgfkeysaddhandleonlyexistingexception{.expand twice}% -\pgfkeysaddhandleonlyexistingexception{.expanded}% - - -% Utilities for self-containment -\def\pgf@keys@gobble#1{} -\long\def\pgf@keys@utilifnextchar#1#2#3{% - \let\pgf@keys@utilreserved@d=#1% - \def\pgf@keys@utilreserved@a{#2}% - \def\pgf@keys@utilreserved@b{#3}% - \futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch} -\def\pgf@keys@utilifnch{% - \ifx\pgf@keys@utillet@token\pgf@keys@utilsptoken - \let\pgf@keys@utilreserved@c\pgf@keys@utilxifnch - \else - \ifx\pgf@keys@utillet@token\pgf@keys@utilreserved@d - \let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@a - \else - \let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@b - \fi - \fi - \pgf@keys@utilreserved@c} -{% - \def\:{\global\let\pgf@keys@utilsptoken= } \: - \def\:{\pgf@keys@utilxifnch} \expandafter\gdef\: {\futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch} -} - - -\input pgfkeysfiltered.code.tex - -\endinput |