diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex | 1765 |
1 files changed, 882 insertions, 883 deletions
diff --git a/Master/texmf-dist/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex b/Master/texmf-dist/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex index f01db1e2cee..e8aa334224c 100644 --- a/Master/texmf-dist/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex +++ b/Master/texmf-dist/tex/latex/pgf/doc/pgfmanual.prettyprinter.code.tex @@ -4,7 +4,7 @@ % % Provides a user-friendly interface to create function plots (normal % plots, semi-logplots and double-logplots). -% +% % It is based on Till Tantau's PGF package. % % Copyright 2007/2008/2009 by Christian Feuersänger. @@ -13,12 +13,12 @@ % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. -% +% % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. -% +% % You should have received a copy of the GNU General Public License % along with this program. If not, see <http://www.gnu.org/licenses/>. % @@ -31,7 +31,7 @@ % right place. % % ATTENTION: -% this is NOT a sophisticated syntax highlighter like lstlistings! +% this is NOT a sophisticated syntax highlighter like lstlistings! % It has rather strict assumptions about how to use it (the input must % have been read verbatim, for example). @@ -40,197 +40,197 @@ % % USER INTERFACE \pgfkeys{% - % this is the public hook into - % \begin{codeexample}...\end{codeexample} which triggers pretty - % printing: - /codeexample/typeset listing/.code= {\pgfmanualprettyprintcode{#1}}, - % - % this key will be invoked whenever a key in key-value context has been identified. - % - % It won't be invoked for handled keys like |my style/.style=....|, see below. - % - % #1 will be the keys name. - /codeexample/prettyprint/key name/.code={#1}, - % - % A variant which will be used instead of |key name| if the key - % has a key handler. For example, when the pretty printer finds - % |my style/.style|, it will call - % |key name with handler={my style}{.style}. - /codeexample/prettyprint/key name with handler/.code 2 args={#1/#2}, - % - % Will be invoked whenever the value of a key has been found. - % It will be invoked AFTER 'key name' and not at all if there was - % no value. - % - % #1: the key's name - % #2: the key's value. - % - % The default implementation checks if there is a special handler - % for the key name '#1', in - % /codeexample/prettyprint/key value/#1. - % For example: - % /codeexample/prettyprint/key value/my key/.code 2 args={name=#1, value =#2} - % If such a key exists, it will be invoked with {#1}{#2} as - % arguments. Otherwise, the generic method - % /codeexample/prettyprint/key value with style detection={#1}{#2} - % will be invoked. - /codeexample/prettyprint/key value/.code 2 args={% - \pgfkeysifdefined{/codeexample/prettyprint/key value/#1}{% - \pgfkeysalso{/codeexample/prettyprint/key value/#1={#1}{#2}}% - }{% - \pgfkeysalso{/codeexample/prettyprint/key value with style detection={#1}{#2}}% - }% - }, - % A helper macro for the default 'key value' implementation. - /codeexample/prettyprint/key value with style detection/.code 2 args={% - \pgfutil@in@{style}{#1}% - \ifpgfutil@in@ - \pgfmanualprettyprintpgfkeys{#2}% - \else - \pgfkeysalso{/codeexample/prettyprint/key value display only={#2}}% - \fi - },% - % - % Will be invoked by the default 'key value' implementation to - % typeset the value as such. - /codeexample/prettyprint/key value display only/.code={#1}, - % - % Used to typeset a single word. A word is something which has not - % been identified in any other context; a maximal sequence of - % non-white-space tokens. - /codeexample/prettyprint/word/.code={#1}, - % - % A two-argument code key which invokes '#1' if spaces shall - % delimit words and '#2' if not. - % This may be useless. Handle with care! - /codeexample/prettyprint/if space is word delim/.code 2 args={% - #1% - },% - % - % A three-argument code key which should invoke '#2' if the single - % token '#1' is a word delimiter and '#3' if that is not the case. - % Note that '#1' doesn't have the usual catcodes (see the - % \pgfmanual@pretty@** macros)! - % Furthermore, white spaces are treated separately. - /codeexample/prettyprint/if is word delim/.code args={#1#2#3}{% - \edef\pgfmanual@check{,;().;\pgfmanual@pretty@lbrace\pgfmanual@pretty@rbrace}% - \def\pgfmanual@check@{\pgfutil@in@{#1}}% - \expandafter\pgfmanual@check@\expandafter{\pgfmanual@check}% - \ifpgfutil@in@ #2\else #3\fi - },% - % - % Used to typeset a single control sequence. - % #1 is the control sequence's name as a sequence of catcode 12 - % tokens. - /codeexample/prettyprint/cs/.code={#1}, - % - % Used to typeset a single control sequence together with one or - % more arguments. - % - % #1 is the control sequence's name (including the backslash as - % literal string) and - % #2,#3,...,#9 are the arguments. The number of arguments depends - % on the 'cs arguments/<CS NAME>' key; it contains the integer - % number. - % - % For example, if - % |cs arguments/pgfkeys/.initial=1|, - % the pretty printer invokes - % |cs with args={\pgfkeys}{<argument>}. - % - % If - % |cs arguments/mycommand/.initial=2|, - % the pretty printer invokes - % |cs with args={\pgfkeys}{<argument1>}{<argument2>}. - % In this case, 'cs with args' needs to be defined in a way which - % allows to deal with 3 arguments. - % - % Please note that the value do not contain braces! The braces - % need to be inserted manually. - % - % Special cases: - % 1. If end-of-input is encountered BEFORE the expected number of - % arguments has been found, the following happens: - % - if not even one (partial) argument has been found, the - % /codeexample/prettyprint/cs/.@cmd key will be used instead. - % - the \ifpgfmanualprettyprinterarghasunmatchedbraces boolean - % indicates if the trailing brace is missing. - /codeexample/prettyprint/cs with args/.code 2 args={#1\{#2\pgfmanualclosebrace}, - % - % For every identified control sequence, the key - % /codeexample/prettyprint/cs arguments/<CSNAME> - % will be checked. If it exists, it contains an integer with the - % number of arguments it takes. - % The <CSNAME> must not contain the '\'. - /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1, - % - % For every identified control sequence, the key - % /codeexample/prettyprint/cs/<CSNAME>/.@cmd - % will be checked. If it exists, it will be used instead of - % 'cs with args' (with the same special case restrictions for - % early end-of-input). - % - % The <CSNAME> must not contain the '\'. - % - % This allows special treatment for special - % commands like \pgfkeys: - /codeexample/prettyprint/cs/pgfkeys/.code 2 args={#1\{\pgfmanualprettyprintpgfkeys{#2}\pgfmanualclosebrace}, - % - % recognise environments: - /codeexample/prettyprint/cs arguments/begin/.initial=1, - /codeexample/prettyprint/cs/begin/.code 2 args={#1\{#2\pgfmanualclosebrace}, - /codeexample/prettyprint/cs arguments/end/.initial=1, - /codeexample/prettyprint/cs/end/.code 2 args={#1\{#2\pgfmanualclosebrace}, - % - % a point coordinate (#1) - % Note that '#1' will contain the braces (if there was one), - /codeexample/prettyprint/point/.code={#1},% - % - % a point coordinate with explicit coordinate system: (#1:#2) - % Note that '#2' will contain the terminating brace (if there was one) - % #1: the coordinate system name (*without* the leading brace). - % The leading brace must be re-inserted by this style. - /codeexample/prettyprint/point with cs/.code 2 args={(#1:#2},% - % - % The font / color command to use for comments. Will be set at + % this is the public hook into + % \begin{codeexample}...\end{codeexample} which triggers pretty + % printing: + /codeexample/typeset listing/.code= {\pgfmanualprettyprintcode{#1}}, + % + % this key will be invoked whenever a key in key-value context has been identified. + % + % It won't be invoked for handled keys like |my style/.style=....|, see below. + % + % #1 will be the keys name. + /codeexample/prettyprint/key name/.code={#1}, + % + % A variant which will be used instead of |key name| if the key + % has a key handler. For example, when the pretty printer finds + % |my style/.style|, it will call + % |key name with handler={my style}{.style}. + /codeexample/prettyprint/key name with handler/.code 2 args={#1/#2}, + % + % Will be invoked whenever the value of a key has been found. + % It will be invoked AFTER 'key name' and not at all if there was + % no value. + % + % #1: the key's name + % #2: the key's value. + % + % The default implementation checks if there is a special handler + % for the key name '#1', in + % /codeexample/prettyprint/key value/#1. + % For example: + % /codeexample/prettyprint/key value/my key/.code 2 args={name=#1, value =#2} + % If such a key exists, it will be invoked with {#1}{#2} as + % arguments. Otherwise, the generic method + % /codeexample/prettyprint/key value with style detection={#1}{#2} + % will be invoked. + /codeexample/prettyprint/key value/.code 2 args={% + \pgfkeysifdefined{/codeexample/prettyprint/key value/#1}{% + \pgfkeysalso{/codeexample/prettyprint/key value/#1={#1}{#2}}% + }{% + \pgfkeysalso{/codeexample/prettyprint/key value with style detection={#1}{#2}}% + }% + }, + % A helper macro for the default 'key value' implementation. + /codeexample/prettyprint/key value with style detection/.code 2 args={% + \pgfutil@in@{style}{#1}% + \ifpgfutil@in@ + \pgfmanualprettyprintpgfkeys{#2}% + \else + \pgfkeysalso{/codeexample/prettyprint/key value display only={#2}}% + \fi + },% + % + % Will be invoked by the default 'key value' implementation to + % typeset the value as such. + /codeexample/prettyprint/key value display only/.code={#1}, + % + % Used to typeset a single word. A word is something which has not + % been identified in any other context; a maximal sequence of + % non-white-space tokens. + /codeexample/prettyprint/word/.code={#1}, + % + % A two-argument code key which invokes '#1' if spaces shall + % delimit words and '#2' if not. + % This may be useless. Handle with care! + /codeexample/prettyprint/if space is word delim/.code 2 args={% + #1% + },% + % + % A three-argument code key which should invoke '#2' if the single + % token '#1' is a word delimiter and '#3' if that is not the case. + % Note that '#1' doesn't have the usual catcodes (see the + % \pgfmanual@pretty@** macros)! + % Furthermore, white spaces are treated separately. + /codeexample/prettyprint/if is word delim/.code args={#1#2#3}{% + \edef\pgfmanual@check{,;().;\pgfmanual@pretty@lbrace\pgfmanual@pretty@rbrace}% + \def\pgfmanual@check@{\pgfutil@in@{#1}}% + \expandafter\pgfmanual@check@\expandafter{\pgfmanual@check}% + \ifpgfutil@in@ #2\else #3\fi + },% + % + % Used to typeset a single control sequence. + % #1 is the control sequence's name as a sequence of catcode 12 + % tokens. + /codeexample/prettyprint/cs/.code={#1}, + % + % Used to typeset a single control sequence together with one or + % more arguments. + % + % #1 is the control sequence's name (including the backslash as + % literal string) and + % #2,#3,...,#9 are the arguments. The number of arguments depends + % on the 'cs arguments/<CS NAME>' key; it contains the integer + % number. + % + % For example, if + % |cs arguments/pgfkeys/.initial=1|, + % the pretty printer invokes + % |cs with args={\pgfkeys}{<argument>}. + % + % If + % |cs arguments/mycommand/.initial=2|, + % the pretty printer invokes + % |cs with args={\pgfkeys}{<argument1>}{<argument2>}. + % In this case, 'cs with args' needs to be defined in a way which + % allows to deal with 3 arguments. + % + % Please note that the value do not contain braces! The braces + % need to be inserted manually. + % + % Special cases: + % 1. If end-of-input is encountered BEFORE the expected number of + % arguments has been found, the following happens: + % - if not even one (partial) argument has been found, the + % /codeexample/prettyprint/cs/.@cmd key will be used instead. + % - the \ifpgfmanualprettyprinterarghasunmatchedbraces boolean + % indicates if the trailing brace is missing. + /codeexample/prettyprint/cs with args/.code 2 args={#1\{#2\pgfmanualclosebrace}, + % + % For every identified control sequence, the key + % /codeexample/prettyprint/cs arguments/<CSNAME> + % will be checked. If it exists, it contains an integer with the + % number of arguments it takes. + % The <CSNAME> must not contain the '\'. + /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1, + % + % For every identified control sequence, the key + % /codeexample/prettyprint/cs/<CSNAME>/.@cmd + % will be checked. If it exists, it will be used instead of + % 'cs with args' (with the same special case restrictions for + % early end-of-input). + % + % The <CSNAME> must not contain the '\'. + % + % This allows special treatment for special + % commands like \pgfkeys: + /codeexample/prettyprint/cs/pgfkeys/.code 2 args={#1\{\pgfmanualprettyprintpgfkeys{#2}\pgfmanualclosebrace}, + % + % recognise environments: + /codeexample/prettyprint/cs arguments/begin/.initial=1, + /codeexample/prettyprint/cs/begin/.code 2 args={#1\{#2\pgfmanualclosebrace}, + /codeexample/prettyprint/cs arguments/end/.initial=1, + /codeexample/prettyprint/cs/end/.code 2 args={#1\{#2\pgfmanualclosebrace}, + % + % a point coordinate (#1) + % Note that '#1' will contain the braces (if there was one), + /codeexample/prettyprint/point/.code={#1},% + % + % a point coordinate with explicit coordinate system: (#1:#2) + % Note that '#2' will contain the terminating brace (if there was one) + % #1: the coordinate system name (*without* the leading brace). + % The leading brace must be re-inserted by this style. + /codeexample/prettyprint/point with cs/.code 2 args={(#1:#2},% + % + % The font / color command to use for comments. Will be set at % the beginning of a comment - /codeexample/prettyprint/comment font/.initial=,% - % the same with specialised code: - %/codeexample/prettyprint/point with cs/<CS NAME>/.code 2 args={(#1:#2},% - % - % - % A predefined style which colors every identified token. It's - % purpose is only debugging. - /codeexample/prettyprint/colored/.style={% - /codeexample/prettyprint/key name/.code={\textcolor{red!75!black}{##1}}, - /codeexample/prettyprint/key name with handler/.code 2 args={\textcolor{red!75!black}{##1}/\textcolor{red!90!black}{##2}}, - /codeexample/prettyprint/key value display only/.code={\textcolor{yellow}{##1}}, - /codeexample/prettyprint/cs/.code={\textcolor{green}{##1}}, - /codeexample/prettyprint/cs with args/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, - /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1, - /codeexample/prettyprint/cs/pgfkeys/.code 2 args={\textcolor{green}{##1}\{\pgfmanualprettyprintpgfkeys{##2}\pgfmanualclosebrace}, - /codeexample/prettyprint/cs arguments/begin/.initial=1, - /codeexample/prettyprint/cs/begin/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, - /codeexample/prettyprint/cs arguments/end/.initial=1, - /codeexample/prettyprint/cs/end/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, - /codeexample/prettyprint/word/.code={\textcolor{brown}{##1}}, - /codeexample/prettyprint/point/.code={\textcolor{red}{##1}},% - /codeexample/prettyprint/point with cs/.code 2 args={(\textcolor{green}{##1}:\textcolor{red}{##2}},% - },% - % A further debuggin helper. - /codeexample/prettyprint/colored and verbose/.style={% - /codeexample/prettyprint/colored, - /codeexample/prettyprint/key name/.code={\message{[key name=##1]}\textcolor{red!75!black}{##1}}, - /codeexample/prettyprint/key name with handler/.code 2 args={\message{[key name with handler=##1/##2]}\textcolor{red!75!black}{##1}/\textcolor{red!90!black}{##2}}, - /codeexample/prettyprint/key value display only/.code={\def\temp{##1}\message{[key value=\meaning\temp]}\textcolor{yellow}{##1}}, - /codeexample/prettyprint/cs/.code={\message{[cs=##1]}\textcolor{green}{##1}}, - /codeexample/prettyprint/cs with args/.code 2 args={\def\temp{##2}\message{[cs with args={##1}{\meaning\temp}]}\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, - /codeexample/prettyprint/word/.code={\message{[word=##1]}\textcolor{brown}{##1}}, - /codeexample/prettyprint/point/.code={\message{[point=##1]}\textcolor{red}{##1}},% - /codeexample/prettyprint/point with cs/.code 2 args={\message{[point with cs={##1}{##2}]}(\textcolor{green}{##1}:\textcolor{red}{##2}},% - },% - %/codeexample/prettyprint/colored, - %/codeexample/prettyprint/colored and verbose, + /codeexample/prettyprint/comment font/.initial=,% + % the same with specialised code: + %/codeexample/prettyprint/point with cs/<CS NAME>/.code 2 args={(#1:#2},% + % + % + % A predefined style which colors every identified token. It's + % purpose is only debugging. + /codeexample/prettyprint/colored/.style={% + /codeexample/prettyprint/key name/.code={\textcolor{red!75!black}{##1}}, + /codeexample/prettyprint/key name with handler/.code 2 args={\textcolor{red!75!black}{##1}/\textcolor{red!90!black}{##2}}, + /codeexample/prettyprint/key value display only/.code={\textcolor{yellow}{##1}}, + /codeexample/prettyprint/cs/.code={\textcolor{green}{##1}}, + /codeexample/prettyprint/cs with args/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, + /codeexample/prettyprint/cs arguments/pgfkeys/.initial=1, + /codeexample/prettyprint/cs/pgfkeys/.code 2 args={\textcolor{green}{##1}\{\pgfmanualprettyprintpgfkeys{##2}\pgfmanualclosebrace}, + /codeexample/prettyprint/cs arguments/begin/.initial=1, + /codeexample/prettyprint/cs/begin/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, + /codeexample/prettyprint/cs arguments/end/.initial=1, + /codeexample/prettyprint/cs/end/.code 2 args={\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, + /codeexample/prettyprint/word/.code={\textcolor{brown}{##1}}, + /codeexample/prettyprint/point/.code={\textcolor{red}{##1}},% + /codeexample/prettyprint/point with cs/.code 2 args={(\textcolor{green}{##1}:\textcolor{red}{##2}},% + },% + % A further debugging helper. + /codeexample/prettyprint/colored and verbose/.style={% + /codeexample/prettyprint/colored, + /codeexample/prettyprint/key name/.code={\message{[key name=##1]}\textcolor{red!75!black}{##1}}, + /codeexample/prettyprint/key name with handler/.code 2 args={\message{[key name with handler=##1/##2]}\textcolor{red!75!black}{##1}/\textcolor{red!90!black}{##2}}, + /codeexample/prettyprint/key value display only/.code={\def\temp{##1}\message{[key value=\meaning\temp]}\textcolor{yellow}{##1}}, + /codeexample/prettyprint/cs/.code={\message{[cs=##1]}\textcolor{green}{##1}}, + /codeexample/prettyprint/cs with args/.code 2 args={\def\temp{##2}\message{[cs with args={##1}{\meaning\temp}]}\textcolor{green}{##1}\{\textcolor{orange}{##2}\pgfmanualclosebrace}, + /codeexample/prettyprint/word/.code={\message{[word=##1]}\textcolor{brown}{##1}}, + /codeexample/prettyprint/point/.code={\message{[point=##1]}\textcolor{red}{##1}},% + /codeexample/prettyprint/point with cs/.code 2 args={\message{[point with cs={##1}{##2}]}(\textcolor{green}{##1}:\textcolor{red}{##2}},% + },% + %/codeexample/prettyprint/colored, + %/codeexample/prettyprint/colored and verbose, }% \newif\ifpgfmanualprettyenabled @@ -240,10 +240,10 @@ % % It expands to '\}' unless the preceding argument had unmatched braces. \def\pgfmanualclosebrace{% - \ifpgfmanualprettyprinterarghasunmatchedbraces - \else - \}% - \fi + \ifpgfmanualprettyprinterarghasunmatchedbraces + \else + \}% + \fi }% @@ -256,24 +256,24 @@ % @see \pgfmanualprettyprintpgfkeys \long\def\pgfmanualprettyprintcode#1{% %\def\temp{#1}\message{STARTING PRETTY PRINTING for \meaning\temp}% - \ifpgfmanualprettyenabled - \begingroup - \pgfmanualprettyprintstyles - \pgfmanual@pretty@mainloop#1\pgfmanual@EOI - \endgroup - \else - #1% - \fi + \ifpgfmanualprettyenabled + \begingroup + \pgfmanualprettyprintstyles + \pgfmanual@pretty@mainloop#1\pgfmanual@EOI + \endgroup + \else + #1% + \fi }% % DISABLE: %\long\def\pgfmanualprettyprintcode#1{#1}% \def\pgfmanualprettyprintstyles{% %\tracingmacros=2 \tracingcommands=2 \message{PRETTYPRINT INIT}% - \def\{{\pgfmanual@pretty@lbrace}% - \def\}{\pgfmanual@pretty@rbrace}% - \pgfmanual@pretty@installcommenthandler - \let\pgfmanualprettyprintstyles=\relax + \def\{{\pgfmanual@pretty@lbrace}% + \def\}{\pgfmanual@pretty@rbrace}% + \pgfmanual@pretty@installcommenthandler + \let\pgfmanualprettyprintstyles=\relax }% @@ -286,61 +286,61 @@ % % FIXME % THIS INTRODUCES A NEW GROUP! Does that hurt the pretty printer?? -% +% \def\pgfmanual@pretty@installcommenthandler{% - \expandafter\def\pgfmanual@pretty@activepercent{% - \begingroup% - \pgfmanualprettycommentactivetrue - \expandafter\let\pgfmanual@pretty@activenl=\pgfmanual@pretty@recoveraftercomment - \expandafter\def\pgfmanual@pretty@activepercent{\%}% - \pgfkeysvalueof{/codeexample/prettyprint/comment font}%\tt - \%% - }% + \expandafter\def\pgfmanual@pretty@activepercent{% + \begingroup% + \pgfmanualprettycommentactivetrue + \expandafter\let\pgfmanual@pretty@activenl=\pgfmanual@pretty@recoveraftercomment + \expandafter\def\pgfmanual@pretty@activepercent{\%}% + \pgfkeysvalueof{/codeexample/prettyprint/comment font}%\tt + \%% + }% }% \def\pgfmanual@pretty@recoveraftercomment{% - \endgroup - \pgfmanual@pretty@activenl + \endgroup + \pgfmanual@pretty@activenl }% \def\pgfmanual@EOI{\pgfmanual@EOI}% { - \catcode`\[=0 - \catcode`\\=12 - [gdef[pgfmanual@pretty@backslash{\}% + \catcode`\[=0 + \catcode`\\=12 + [gdef[pgfmanual@pretty@backslash{\}% } \begingroup - \catcode`\:=12 - \catcode`\(=12 - \catcode`\)=12 - \gdef\pgfmanual@pretty@colon{:}% - \gdef\pgfmanual@pretty@lroundbrace{(}% - \gdef\pgfmanual@pretty@rroundbrace{)}% - \catcode`\[=1 - \catcode`\]=2 - \catcode`\{=12 - \catcode`\}=12 - \gdef\pgfmanual@pretty@lbrace[{]% - \gdef\pgfmanual@pretty@rbrace[}]% - \catcode`\{=1 - \catcode`\}=2 - \catcode`\[=12 - \catcode`\]=12 - \catcode`\,=12 - \catcode`\ =10\relax\gdef\pgfmanual@pretty@space{ }% - \gdef\pgfmanual@pretty@lbracket{[}% - \gdef\pgfmanual@pretty@rbracket{]}% - \gdef\pgfmanual@pretty@comma{,}% - \catcode`\==12 - \gdef\pgfmanual@pretty@eq{=}% + \catcode`\:=12 + \catcode`\(=12 + \catcode`\)=12 + \gdef\pgfmanual@pretty@colon{:}% + \gdef\pgfmanual@pretty@lroundbrace{(}% + \gdef\pgfmanual@pretty@rroundbrace{)}% + \catcode`\[=1 + \catcode`\]=2 + \catcode`\{=12 + \catcode`\}=12 + \gdef\pgfmanual@pretty@lbrace[{]% + \gdef\pgfmanual@pretty@rbrace[}]% + \catcode`\{=1 + \catcode`\}=2 + \catcode`\[=12 + \catcode`\]=12 + \catcode`\,=12 + \catcode`\ =10\relax\gdef\pgfmanual@pretty@space{ }% + \gdef\pgfmanual@pretty@lbracket{[}% + \gdef\pgfmanual@pretty@rbracket{]}% + \gdef\pgfmanual@pretty@comma{,}% + \catcode`\==12 + \gdef\pgfmanual@pretty@eq{=}% \endgroup \begingroup - \catcode`\%=12 - \gdef\pgfmanual@pretty@percent{%} - \catcode`\%=13 - \gdef\pgfmanual@pretty@activepercent{%} - \catcode`\^^M=13 - \gdef\pgfmanual@pretty@activenl{^^M}\endgroup + \catcode`\%=12 + \gdef\pgfmanual@pretty@percent{%} + \catcode`\%=13 + \gdef\pgfmanual@pretty@activepercent{%} + \catcode`\^^M=13 + \gdef\pgfmanual@pretty@activenl{^^M}\endgroup \begingroup \catcode`\^^I=13\relax\gdef\pgfmanual@pretty@activetab{^^I}% \catcode`\ =13\relax\gdef\pgfmanual@pretty@activespace{ }\endgroup @@ -348,120 +348,120 @@ % loops through all tokens. % #1 is a single token. \def\pgfmanual@pretty@mainloop{% - \def\pgfmanual@pretty@mainloop@currentword{}% - \pgfmanual@pretty@mainloop@ + \def\pgfmanual@pretty@mainloop@currentword{}% + \pgfmanual@pretty@mainloop@ }% \long\def\pgfmanual@pretty@mainloop@#1{% - \def\pgfmanual@loc@TMPa{#1}% - \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@mainloop@ - \ifx\pgfmanual@loc@TMPa\pgfmanual@EOI - % stop iteration. - \pgfmanual@pretty@mainloop@finishword - \let\pgfmanual@pretty@mainloop@NEXT=\relax - \else - \ifpgfmanualprettycommentactive - #1\kern0pt% - \else - \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lbracket% - % we found the start of OPTIONS '[ ... ]'. - \pgfmanual@pretty@mainloop@finishword - % Attempt syntax highlighting for pgfkeys: - \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@pgfkeys - \else - \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@backslash - % we found the start of a control sequence '\command' - \pgfmanual@pretty@mainloop@finishword - % - % collect the control sequence name into - % \pgfmanual@loc@TMPa, but without the backslash: - \let\pgfmanual@loc@TMPa=\pgfutil@empty - \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@collectcs@loop - \else - \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lroundbrace% - \pgfmanual@pretty@mainloop@finishword - \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@collectpoint - \else - \def\pgfmanual@isspace{0}% - \ifnum13=\catcode`#1 - % we found a white space (space, TAB or NL) or comment - \def\pgfmanual@isspace{1}% - \else - \ifnum10=\catcode`#1 - \def\pgfmanual@isspace{1}% - \fi - \fi - \if\pgfmanual@isspace1% - \pgfkeysvalueof{/codeexample/prettyprint/if space is word delim/.@cmd}{% - \pgfmanual@pretty@mainloop@finishword - #1% ok, show it. - }{% - % collect the word. - \expandafter\def\expandafter\pgfmanual@pretty@mainloop@currentword\expandafter{\pgfmanual@pretty@mainloop@currentword #1}% - }% - \else - \pgfkeysvalueof{/codeexample/prettyprint/if is word delim/.@cmd}{#1}{% - \pgfmanual@pretty@mainloop@finishword - #1% ok, show the delimiter. - }{% - % collect the word. - \expandafter\def\expandafter\pgfmanual@pretty@mainloop@currentword\expandafter{\pgfmanual@pretty@mainloop@currentword #1}% - }\pgfeov% - \fi - \fi - \fi - \fi - \fi - \fi - \pgfmanual@pretty@mainloop@NEXT + \def\pgfmanual@loc@TMPa{#1}% + \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@mainloop@ + \ifx\pgfmanual@loc@TMPa\pgfmanual@EOI + % stop iteration. + \pgfmanual@pretty@mainloop@finishword + \let\pgfmanual@pretty@mainloop@NEXT=\relax + \else + \ifpgfmanualprettycommentactive + #1\kern0pt% + \else + \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lbracket% + % we found the start of OPTIONS '[ ... ]'. + \pgfmanual@pretty@mainloop@finishword + % Attempt syntax highlighting for pgfkeys: + \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@pgfkeys + \else + \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@backslash + % we found the start of a control sequence '\command' + \pgfmanual@pretty@mainloop@finishword + % + % collect the control sequence name into + % \pgfmanual@loc@TMPa, but without the backslash: + \let\pgfmanual@loc@TMPa=\pgfutil@empty + \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@collectcs@loop + \else + \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lroundbrace% + \pgfmanual@pretty@mainloop@finishword + \let\pgfmanual@pretty@mainloop@NEXT=\pgfmanual@pretty@collectpoint + \else + \def\pgfmanual@isspace{0}% + \ifnum13=\catcode`#1 + % we found a white space (space, TAB or NL) or comment + \def\pgfmanual@isspace{1}% + \else + \ifnum10=\catcode`#1 + \def\pgfmanual@isspace{1}% + \fi + \fi + \if\pgfmanual@isspace1% + \pgfkeysvalueof{/codeexample/prettyprint/if space is word delim/.@cmd}{% + \pgfmanual@pretty@mainloop@finishword + #1% ok, show it. + }{% + % collect the word. + \expandafter\def\expandafter\pgfmanual@pretty@mainloop@currentword\expandafter{\pgfmanual@pretty@mainloop@currentword #1}% + }% + \else + \pgfkeysvalueof{/codeexample/prettyprint/if is word delim/.@cmd}{#1}{% + \pgfmanual@pretty@mainloop@finishword + #1% ok, show the delimiter. + }{% + % collect the word. + \expandafter\def\expandafter\pgfmanual@pretty@mainloop@currentword\expandafter{\pgfmanual@pretty@mainloop@currentword #1}% + }\pgfeov% + \fi + \fi + \fi + \fi + \fi + \fi + \pgfmanual@pretty@mainloop@NEXT }% \def\pgfmanual@pretty@mainloop@finishword{% - \ifx\pgfmanual@pretty@mainloop@currentword\pgfutil@empty - \else - \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/word/.@cmd}}% - \expandafter\pgfmanual@loc@TMPa\pgfmanual@pretty@mainloop@currentword\pgfeov - \let\pgfmanual@pretty@mainloop@currentword=\pgfutil@empty - \fi + \ifx\pgfmanual@pretty@mainloop@currentword\pgfutil@empty + \else + \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/word/.@cmd}}% + \expandafter\pgfmanual@loc@TMPa\pgfmanual@pretty@mainloop@currentword\pgfeov + \let\pgfmanual@pretty@mainloop@currentword=\pgfutil@empty + \fi }% \def\pgfmanual@pretty@collectpoint{% - \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanual@pretty@collectargs@finish@collectpoint - \expandafter\pgfmanualprettyprintercollectupto\pgfmanual@pretty@rroundbrace - {\afterpgfmanual@pretty@collectpoint}% + \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanual@pretty@collectargs@finish@collectpoint + \expandafter\pgfmanualprettyprintercollectupto\pgfmanual@pretty@rroundbrace + {\afterpgfmanual@pretty@collectpoint}% } { \catcode`\:=12 \gdef\pgfmanual@pretty@collectargs@finish@collectpoint#1#2{% - \expandafter\pgfutil@in@\pgfmanual@pretty@colon{#1}% - \ifpgfutil@in@ - \def\pgfmanual@pretty@collectpoint@getcoordsystem##1:##2\relax{% - \begingroup - \pgfmanual@pretty@restorespaces - % remove active spaces from ##1: - \xdef\pgfmanual@pretty@glob@TMPa{##1}% - \endgroup - \pgfkeysifdefined{/codeexample/prettyprint/point with cs/\pgfmanual@pretty@glob@TMPa/.@cmd}{% - \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point with cs/\pgfmanual@pretty@glob@TMPa/.@cmd}}% - }{% - \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point with cs/.@cmd}}% - }% - \expandafter\def\expandafter\pgfmanual@loc@TMPa\expandafter{\expandafter{\pgfmanual@pretty@glob@TMPa}{##2}}% - \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov - }% - \if1#2% - \pgfmanual@pretty@collectpoint@getcoordsystem#1)\relax - \else - \pgfmanual@pretty@collectpoint@getcoordsystem#1\relax - \fi - \else - \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point/.@cmd}}% - \if1#2% - \pgfmanual@loc@TMPb(#1)\pgfeov - \else - \pgfmanual@loc@TMPb(#1\pgfeov - \fi - \fi + \expandafter\pgfutil@in@\pgfmanual@pretty@colon{#1}% + \ifpgfutil@in@ + \def\pgfmanual@pretty@collectpoint@getcoordsystem##1:##2\relax{% + \begingroup + \pgfmanual@pretty@restorespaces + % remove active spaces from ##1: + \xdef\pgfmanual@pretty@glob@TMPa{##1}% + \endgroup + \pgfkeysifdefined{/codeexample/prettyprint/point with cs/\pgfmanual@pretty@glob@TMPa/.@cmd}{% + \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point with cs/\pgfmanual@pretty@glob@TMPa/.@cmd}}% + }{% + \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point with cs/.@cmd}}% + }% + \expandafter\def\expandafter\pgfmanual@loc@TMPa\expandafter{\expandafter{\pgfmanual@pretty@glob@TMPa}{##2}}% + \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov + }% + \if1#2% + \pgfmanual@pretty@collectpoint@getcoordsystem#1)\relax + \else + \pgfmanual@pretty@collectpoint@getcoordsystem#1\relax + \fi + \else + \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/point/.@cmd}}% + \if1#2% + \pgfmanual@loc@TMPb(#1)\pgfeov + \else + \pgfmanual@loc@TMPb(#1\pgfeov + \fi + \fi }% } \def\afterpgfmanual@pretty@collectpoint{\pgfmanual@pretty@mainloop}% @@ -469,52 +469,52 @@ % loops through all tokens, assembling the cs name as it goes. % #1 is a single token. \def\pgfmanual@pretty@collectcs@loop#1{% - \let\pgfmanual@pretty@collectcs@loop@NEXT=\pgfmanual@pretty@collectcs@loop - \def\pgfmanual@loc@TMPb{#1}% - \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI - \def\pgfmanual@pretty@collectcs@loop@NEXT{\pgfmanual@pretty@collectcs@loop@END #1}% - \else - % a csname may only use letters. And: only letters have a - % positive lcccode! - \ifnum\lccode`#1=0 - \ifx\pgfmanual@loc@TMPb\pgfmanual@attext% - % ok, we may also accept an `@': - \edef\pgfmanual@loc@TMPa{\pgfmanual@loc@TMPa #1}% - \else - % This here is the first non-letter. - \def\pgfmanual@pretty@collectcs@loop@NEXT{\pgfmanual@pretty@collectcs@loop@END #1}% - \fi - \else - % continue iterating and assemble the csname... - \edef\pgfmanual@loc@TMPa{\pgfmanual@loc@TMPa #1}% - \fi - \fi - \pgfmanual@pretty@collectcs@loop@NEXT + \let\pgfmanual@pretty@collectcs@loop@NEXT=\pgfmanual@pretty@collectcs@loop + \def\pgfmanual@loc@TMPb{#1}% + \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI + \def\pgfmanual@pretty@collectcs@loop@NEXT{\pgfmanual@pretty@collectcs@loop@END #1}% + \else + % a csname may only use letters. And: only letters have a + % positive lcccode! + \ifnum\lccode`#1=0 + \ifx\pgfmanual@loc@TMPb\pgfmanual@attext% + % ok, we may also accept an `@': + \edef\pgfmanual@loc@TMPa{\pgfmanual@loc@TMPa #1}% + \else + % This here is the first non-letter. + \def\pgfmanual@pretty@collectcs@loop@NEXT{\pgfmanual@pretty@collectcs@loop@END #1}% + \fi + \else + % continue iterating and assemble the csname... + \edef\pgfmanual@loc@TMPa{\pgfmanual@loc@TMPa #1}% + \fi + \fi + \pgfmanual@pretty@collectcs@loop@NEXT }% \def\afterpgfmanual@pretty@cs{\pgfmanual@pretty@mainloop}% \def\pgfmanual@attext{@} \def\pgfmanual@pretty@collectcs@loop@END{% - \pgfkeysifdefined{/codeexample/prettyprint/cs arguments/\pgfmanual@loc@TMPa}{% - % oh. The collected control sequence expects arguments. That - % means a lot of work since there are no nestable braces in - % the token list! All of them have catcode 12... we need to do - % that manually. - \let\pgfmanualprettyprinterhandlecollectedargs=\pgfmanual@pretty@collectargs@finish@cs - \def\pgfmanual@pretty@collectcs@loop@END@next{% - \pgfmanualprettyprintercollectargcount - {\pgfkeysvalueof{/codeexample/prettyprint/cs arguments/\pgfmanual@loc@TMPa}}% - {\afterpgfmanual@pretty@cs}% - }% - }{% - % re-insert the backslash: - \edef\pgfmanual@loc@TMPa{\pgfmanual@pretty@backslash \pgfmanual@loc@TMPa}% - % ok, report the macro and continue with the main loop. - \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/cs/.@cmd}}% - \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov - \let\pgfmanual@pretty@collectcs@loop@END@next=\afterpgfmanual@pretty@cs - }% - \pgfmanual@pretty@collectcs@loop@END@next + \pgfkeysifdefined{/codeexample/prettyprint/cs arguments/\pgfmanual@loc@TMPa}{% + % oh. The collected control sequence expects arguments. That + % means a lot of work since there are no nestable braces in + % the token list! All of them have catcode 12... we need to do + % that manually. + \let\pgfmanualprettyprinterhandlecollectedargs=\pgfmanual@pretty@collectargs@finish@cs + \def\pgfmanual@pretty@collectcs@loop@END@next{% + \pgfmanualprettyprintercollectargcount + {\pgfkeysvalueof{/codeexample/prettyprint/cs arguments/\pgfmanual@loc@TMPa}}% + {\afterpgfmanual@pretty@cs}% + }% + }{% + % re-insert the backslash: + \edef\pgfmanual@loc@TMPa{\pgfmanual@pretty@backslash \pgfmanual@loc@TMPa}% + % ok, report the macro and continue with the main loop. + \def\pgfmanual@loc@TMPb{\pgfkeysvalueof{/codeexample/prettyprint/cs/.@cmd}}% + \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov + \let\pgfmanual@pretty@collectcs@loop@END@next=\afterpgfmanual@pretty@cs + }% + \pgfmanual@pretty@collectcs@loop@END@next }% \newif\ifpgfmanualprettyprinterarghasunmatchedbraces @@ -528,47 +528,47 @@ % below). % % PRECONDITION: -% there is a large token list following -% \pgfmanualprettyprintercollectargcount with balanced braces. The braces -% have \catcode 12. +% there is a large token list following +% \pgfmanualprettyprintercollectargcount with balanced braces. The braces +% have \catcode 12. % POSTCONDITION: -% 1. the arguments will be collected as -% '<result> := {<first arg>}{<second arg>}', -% 2.1 the macro \pgfmanualprettyprinternumcollectedargs will contain -% the *actual* number of *completely* collected arguments, -% 2.2 the if \ifpgfmanualprettyprinterarghasunmatchedbraces will be -% set to \c true if the last found argument had an unmatched brace, -% 3. then, \pgfmanualprettyprinterhandlecollectedargs{<result>} will be -% invoked. Just define \pgfmanualprettyprinterhandlecollectedargs -% properly. -% Afterwards, #2 will be invoked to recover from the argument -% collection. -% +% 1. the arguments will be collected as +% '<result> := {<first arg>}{<second arg>}', +% 2.1 the macro \pgfmanualprettyprinternumcollectedargs will contain +% the *actual* number of *completely* collected arguments, +% 2.2 the if \ifpgfmanualprettyprinterarghasunmatchedbraces will be +% set to \c true if the last found argument had an unmatched brace, +% 3. then, \pgfmanualprettyprinterhandlecollectedargs{<result>} will be +% invoked. Just define \pgfmanualprettyprinterhandlecollectedargs +% properly. +% Afterwards, #2 will be invoked to recover from the argument +% collection. +% % % Example: -% \pgfmanualprettyprintercollectargcount{2}{\donnextstep} -% {_12 first argument }_12 {_12 second argument }_12 next tokens% +% \pgfmanualprettyprintercollectargcount{2}{\donnextstep} +% {_12 first argument }_12 {_12 second argument }_12 next tokens% +% +% will result in the expansion +% \pgfmanualprettyprinterhandlecollectedargs{{_1 first argument }_2 {_1 second argument }_2 } +% \donnextstep +% next tokens % -% will result in the expansion -% \pgfmanualprettyprinterhandlecollectedargs{{_1 first argument }_2 {_1 second argument }_2 } -% \donnextstep -% next tokens -% % % % ATTENTION: -% \pgfmanualprettyprinterhandlecollectedargs will be invoked with a SINGLE -% argument. The argument as such will contain extra braces, one pair -% of braces for each of the #1 arguments. These braces will have -% catcode 1 and 2, i.e. they can *really* be used in TeX. Thus, the -% finish routine will be invoked with -% \pgfmanualprettyprinterhandlecollectedargs{{<arg>}} -% for one argument and with -% \pgfmanualprettyprinterhandlecollectedargs{{<first arg>}{<second arg>}} +% \pgfmanualprettyprinterhandlecollectedargs will be invoked with a SINGLE +% argument. The argument as such will contain extra braces, one pair +% of braces for each of the #1 arguments. These braces will have +% catcode 1 and 2, i.e. they can *really* be used in TeX. Thus, the +% finish routine will be invoked with +% \pgfmanualprettyprinterhandlecollectedargs{{<arg>}} +% for one argument and with +% \pgfmanualprettyprinterhandlecollectedargs{{<first arg>}{<second arg>}} % for two and more arguments. Note the extra set of braces for one % arg. % It might happen that not all arguments have been found if -% end-of-input occured before. The +% end-of-input occurred before. The % \pgfmanualprettyprinterhandlecollectedargs routine has to check % this using the macro \pgfmanualprettyprinternumcollectedargs which % contains the actual number of collected args. @@ -583,268 +583,268 @@ % this case. You can also use \pgfutil@ifnextchar\pgfmanual@EOI{}{} in % following routines to check for \pgfmanual@EOI. \def\pgfmanualprettyprintercollectargcount#1#2{% - \pgfmanualprettyprinterarghasunmatchedbracesfalse - \begingroup - \edef\pgfmanual@loc@csargcount{#1}% - \toksdef\t@afterpgfmanualprettyprinterhandlecollected=10 - \t@afterpgfmanualprettyprinterhandlecollected={#2}% - \let\c@pgfmanual@pretty@openbracecount=\c@pgf@counta - \let\c@pgfmanual@pretty@curargcount=\c@pgf@countb - % I will track open braces and the number of completely - % collected arguments here: - \c@pgfmanual@pretty@openbracecount=0 - \c@pgfmanual@pretty@curargcount=0 - % - % and I will accumulate the argument token lists as such here: - \toksdef\t@pgfmanual@currentarg=0 - \toksdef\t@pgfmanual@allargs=1 - \t@pgfmanual@currentarg={}% - \t@pgfmanual@allargs={}% - % - \pgfmanual@pretty@collectargs@loop + \pgfmanualprettyprinterarghasunmatchedbracesfalse + \begingroup + \edef\pgfmanual@loc@csargcount{#1}% + \toksdef\t@afterpgfmanualprettyprinterhandlecollected=10 + \t@afterpgfmanualprettyprinterhandlecollected={#2}% + \let\c@pgfmanual@pretty@openbracecount=\c@pgf@counta + \let\c@pgfmanual@pretty@curargcount=\c@pgf@countb + % I will track open braces and the number of completely + % collected arguments here: + \c@pgfmanual@pretty@openbracecount=0 + \c@pgfmanual@pretty@curargcount=0 + % + % and I will accumulate the argument token lists as such here: + \toksdef\t@pgfmanual@currentarg=0 + \toksdef\t@pgfmanual@allargs=1 + \t@pgfmanual@currentarg={}% + \t@pgfmanual@allargs={}% + % + \pgfmanual@pretty@collectargs@loop }% % loops through all tokens, collecting the required number of % arguments. This involves to track nested braces manually. % #1 is a single token. \def\pgfmanual@pretty@collectargs@loop#1{% - \let\pgfmanual@pretty@collectargs@loop@NEXT=\pgfmanual@pretty@collectargs@loop - \def\pgfmanual@loc@TMPc{#1}% - \ifx\pgfmanual@loc@TMPc\pgfmanual@EOI - \ifnum\c@pgfmanual@pretty@openbracecount>0 - \ifpgfmanualpdfwarnings - \pgfplots@warning{The pretty printer did not found the closing curly brace!? This will potentially lead to display errors}% - \fi - \fi - \edef\pgfmanual@pretty@collectargs@loop@NEXT{% - \noexpand\endgroup - \ifnum\c@pgfmanual@pretty@openbracecount>0 - \noexpand\pgfmanualprettyprinterarghasunmatchedbracestrue - \fi - \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}% - \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs\the\t@pgfmanual@currentarg}% - \the\t@afterpgfmanualprettyprinterhandlecollected - \noexpand\pgfmanual@EOI% <- put this token back into token list! - }% - \else - \ifpgfmanualprettycommentactive - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activenl - \pgfmanualprettycommentactivefalse - \fi - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activepercent - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \pgfmanualprettycommentactivetrue - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@lbrace - \advance\c@pgfmanual@pretty@openbracecount by1 - \ifnum\c@pgfmanual@pretty@openbracecount>1 - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \fi - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@rbrace - \advance\c@pgfmanual@pretty@openbracecount by-1 - \ifnum\c@pgfmanual@pretty@openbracecount=0 - % we have one complete argument ready! - % append it -- with REAL braces if needed: - \edef\pgfmanual@loc@TMPc{\the\t@pgfmanual@allargs{\the\t@pgfmanual@currentarg}}% - \t@pgfmanual@allargs=\expandafter{\pgfmanual@loc@TMPc}% - \t@pgfmanual@currentarg={}% - % - % check it we need more arguments: - \advance\c@pgfmanual@pretty@curargcount by1 - \ifnum\c@pgfmanual@pretty@curargcount=\pgfmanual@loc@csargcount\relax - \edef\pgfmanual@pretty@collectargs@loop@NEXT{% - \noexpand\endgroup - \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}% - \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs}% - \the\t@afterpgfmanualprettyprinterhandlecollected - }% - \fi - \else - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \fi - \else - \ifnum13=\catcode`#1 - % we found a white space (space, TAB or NL) or comment - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \else - \ifnum10=\catcode`#1 - % we found a white space (space, TAB - % or NL) with unexpected catcode - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \else - \ifnum\c@pgfmanual@pretty@openbracecount=0 - \ifpgfmanualpdfwarnings - \begingroup - \toks4{#1}% - \pgfplots@warning{The pretty printer did not find the expected \pgfmanual@loc@csargcount\space arguments (only token \the\toks4 )}% - \endgroup - \fi - \edef\pgfmanual@pretty@collectargs@loop@NEXT{% - \noexpand\endgroup - \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}% - \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs\the\t@pgfmanual@currentarg}% - \the\t@afterpgfmanualprettyprinterhandlecollected - \noexpand#1% <- put this token back into token list! - }% - \else - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \fi - \fi - \fi - \fi - \fi - \fi - \fi - \fi - \pgfmanual@pretty@collectargs@loop@NEXT + \let\pgfmanual@pretty@collectargs@loop@NEXT=\pgfmanual@pretty@collectargs@loop + \def\pgfmanual@loc@TMPc{#1}% + \ifx\pgfmanual@loc@TMPc\pgfmanual@EOI + \ifnum\c@pgfmanual@pretty@openbracecount>0 + \ifpgfmanualpdfwarnings + \pgfplots@warning{The pretty printer did not found the closing curly brace!? This will potentially lead to display errors}% + \fi + \fi + \edef\pgfmanual@pretty@collectargs@loop@NEXT{% + \noexpand\endgroup + \ifnum\c@pgfmanual@pretty@openbracecount>0 + \noexpand\pgfmanualprettyprinterarghasunmatchedbracestrue + \fi + \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}% + \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs\the\t@pgfmanual@currentarg}% + \the\t@afterpgfmanualprettyprinterhandlecollected + \noexpand\pgfmanual@EOI% <- put this token back into token list! + }% + \else + \ifpgfmanualprettycommentactive + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activenl + \pgfmanualprettycommentactivefalse + \fi + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activepercent + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \pgfmanualprettycommentactivetrue + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@lbrace + \advance\c@pgfmanual@pretty@openbracecount by1 + \ifnum\c@pgfmanual@pretty@openbracecount>1 + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \fi + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@rbrace + \advance\c@pgfmanual@pretty@openbracecount by-1 + \ifnum\c@pgfmanual@pretty@openbracecount=0 + % we have one complete argument ready! + % append it -- with REAL braces if needed: + \edef\pgfmanual@loc@TMPc{\the\t@pgfmanual@allargs{\the\t@pgfmanual@currentarg}}% + \t@pgfmanual@allargs=\expandafter{\pgfmanual@loc@TMPc}% + \t@pgfmanual@currentarg={}% + % + % check it we need more arguments: + \advance\c@pgfmanual@pretty@curargcount by1 + \ifnum\c@pgfmanual@pretty@curargcount=\pgfmanual@loc@csargcount\relax + \edef\pgfmanual@pretty@collectargs@loop@NEXT{% + \noexpand\endgroup + \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}% + \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs}% + \the\t@afterpgfmanualprettyprinterhandlecollected + }% + \fi + \else + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \fi + \else + \ifnum13=\catcode`#1 + % we found a white space (space, TAB or NL) or comment + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \else + \ifnum10=\catcode`#1 + % we found a white space (space, TAB + % or NL) with unexpected catcode + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \else + \ifnum\c@pgfmanual@pretty@openbracecount=0 + \ifpgfmanualpdfwarnings + \begingroup + \toks4{#1}% + \pgfplots@warning{The pretty printer did not find the expected \pgfmanual@loc@csargcount\space arguments (only token \the\toks4 )}% + \endgroup + \fi + \edef\pgfmanual@pretty@collectargs@loop@NEXT{% + \noexpand\endgroup + \noexpand\def\noexpand\pgfmanualprettyprinternumcollectedargs{\the\c@pgfmanual@pretty@curargcount}% + \noexpand\pgfmanualprettyprinterhandlecollectedargs{\the\t@pgfmanual@allargs\the\t@pgfmanual@currentarg}% + \the\t@afterpgfmanualprettyprinterhandlecollected + \noexpand#1% <- put this token back into token list! + }% + \else + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \pgfmanual@pretty@collectargs@loop@NEXT }% \newif\ifpgfmanualprettyprinterfoundterminator \def\pgfmanualprettyprinterhandlecollectedargsVtwo@default#1#2{% - \if1#2% - \pgfmanualprettyprinterfoundterminatortrue - \else - \pgfmanualprettyprinterfoundterminatorfalse - \fi - \pgfmanualprettyprinterhandlecollectedargs{#1}% + \if1#2% + \pgfmanualprettyprinterfoundterminatortrue + \else + \pgfmanualprettyprinterfoundterminatorfalse + \fi + \pgfmanualprettyprinterhandlecollectedargs{#1}% }% \def\pgfmanualprettyprintercollectupto@restore@callback{% - \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanualprettyprinterhandlecollectedargsVtwo@default + \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanualprettyprinterhandlecollectedargsVtwo@default }% \pgfmanualprettyprintercollectupto@restore@callback % Collects tokens inside of a token list up to a single delimiting token, dealing with nested -% catcode-12-braces. +% catcode-12-braces. % % #1: is the end token, the delimiter. It won't be collected. % #2: is code to invoke after % \pgfmanualprettyprinterhandlecollectedargsVtwo has been invoked. % % PRECONDITION: -% there is a large token list following -% \pgfmanualprettyprintercollectargcount with balanced braces. The braces -% have \catcode 12. +% there is a large token list following +% \pgfmanualprettyprintercollectargcount with balanced braces. The braces +% have \catcode 12. % POSTCONDITION: -% - the arguments will be collected as -% '<result> := <token list>' -% and then, -% \pgfmanualprettyprinterhandlecollectedargsVtwo{<result>}{<found terminator>? 1 : 0} will be -% invoked. Just define -% \pgfmanualprettyprinterhandlecollectedargsVtwo -% properly. +% - the arguments will be collected as +% '<result> := <token list>' +% and then, +% \pgfmanualprettyprinterhandlecollectedargsVtwo{<result>}{<found terminator>? 1 : 0} will be +% invoked. Just define +% \pgfmanualprettyprinterhandlecollectedargsVtwo +% properly. % Then, #2 will be invoked. % % @see \pgfmanualprettyprintercollectargcount for more details. -% +% \def\pgfmanualprettyprintercollectupto#1#2{% - \pgfmanualprettyprinterarghasunmatchedbracesfalse - \begingroup - \def\pgfmanual@loc@delimittoken{#1}% - \toksdef\t@afterpgfmanualprettyprinterhandlecollected=10 - \t@afterpgfmanualprettyprinterhandlecollected={#2}% - % - \let\c@pgfmanual@pretty@openbracecount=\c@pgf@counta - % I will track open braces here: - \c@pgfmanual@pretty@openbracecount=0 - % - % and I will accumulate the argument token lists as such here: - \toksdef\t@pgfmanual@currentarg=0 - \t@pgfmanual@currentarg={}% - % - \pgfmanual@pretty@collectupto@loop + \pgfmanualprettyprinterarghasunmatchedbracesfalse + \begingroup + \def\pgfmanual@loc@delimittoken{#1}% + \toksdef\t@afterpgfmanualprettyprinterhandlecollected=10 + \t@afterpgfmanualprettyprinterhandlecollected={#2}% + % + \let\c@pgfmanual@pretty@openbracecount=\c@pgf@counta + % I will track open braces here: + \c@pgfmanual@pretty@openbracecount=0 + % + % and I will accumulate the argument token lists as such here: + \toksdef\t@pgfmanual@currentarg=0 + \t@pgfmanual@currentarg={}% + % + \pgfmanual@pretty@collectupto@loop }% % loops through all tokens, collecting the required number of % arguments. This involves to track nested braces manually. % #1 is a single token. \def\pgfmanual@pretty@collectupto@loop#1{% - \let\pgfmanual@pretty@collectupto@loop@NEXT=\pgfmanual@pretty@collectupto@loop - \def\pgfmanual@loc@TMPc{#1}% - \ifx\pgfmanual@loc@TMPc\pgfmanual@EOI - \edef\pgfmanual@pretty@collectupto@loop@NEXT{% - \noexpand\endgroup - \ifnum\c@pgfmanual@pretty@openbracecount>0 - \noexpand\pgfmanualprettyprinterarghasunmatchedbracestrue - \fi - \noexpand\pgfmanualprettyprinterhandlecollectedargsVtwo{\the\t@pgfmanual@currentarg}{0}% - \noexpand\pgfmanualprettyprintercollectupto@restore@callback - \the\t@afterpgfmanualprettyprinterhandlecollected - \noexpand\pgfmanual@EOI% <- put this token back into token list! - }% - \else - \ifpgfmanualprettycommentactive - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activenl - \pgfmanualprettycommentactivefalse - \fi - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activepercent - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \pgfmanualprettycommentactivetrue - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@lbrace - \advance\c@pgfmanual@pretty@openbracecount by1 - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@rbrace - \advance\c@pgfmanual@pretty@openbracecount by-1 - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \else - \ifx\pgfmanual@loc@TMPc\pgfmanual@loc@delimittoken - \ifnum\c@pgfmanual@pretty@openbracecount=0 - % do NOT include the delimit token. - \edef\pgfmanual@pretty@collectupto@loop@NEXT{% - \noexpand\endgroup - \noexpand\pgfmanualprettyprinterhandlecollectedargsVtwo{\the\t@pgfmanual@currentarg}{1}% - \noexpand\pgfmanualprettyprintercollectupto@restore@callback - \the\t@afterpgfmanualprettyprinterhandlecollected - }% - \else - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \fi - \else - \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% - \fi - \fi - \fi - \fi - \fi - \fi - \pgfmanual@pretty@collectupto@loop@NEXT + \let\pgfmanual@pretty@collectupto@loop@NEXT=\pgfmanual@pretty@collectupto@loop + \def\pgfmanual@loc@TMPc{#1}% + \ifx\pgfmanual@loc@TMPc\pgfmanual@EOI + \edef\pgfmanual@pretty@collectupto@loop@NEXT{% + \noexpand\endgroup + \ifnum\c@pgfmanual@pretty@openbracecount>0 + \noexpand\pgfmanualprettyprinterarghasunmatchedbracestrue + \fi + \noexpand\pgfmanualprettyprinterhandlecollectedargsVtwo{\the\t@pgfmanual@currentarg}{0}% + \noexpand\pgfmanualprettyprintercollectupto@restore@callback + \the\t@afterpgfmanualprettyprinterhandlecollected + \noexpand\pgfmanual@EOI% <- put this token back into token list! + }% + \else + \ifpgfmanualprettycommentactive + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activenl + \pgfmanualprettycommentactivefalse + \fi + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@activepercent + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \pgfmanualprettycommentactivetrue + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@lbrace + \advance\c@pgfmanual@pretty@openbracecount by1 + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@pretty@rbrace + \advance\c@pgfmanual@pretty@openbracecount by-1 + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \else + \ifx\pgfmanual@loc@TMPc\pgfmanual@loc@delimittoken + \ifnum\c@pgfmanual@pretty@openbracecount=0 + % do NOT include the delimit token. + \edef\pgfmanual@pretty@collectupto@loop@NEXT{% + \noexpand\endgroup + \noexpand\pgfmanualprettyprinterhandlecollectedargsVtwo{\the\t@pgfmanual@currentarg}{1}% + \noexpand\pgfmanualprettyprintercollectupto@restore@callback + \the\t@afterpgfmanualprettyprinterhandlecollected + }% + \else + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \fi + \else + \t@pgfmanual@currentarg=\expandafter{\the\t@pgfmanual@currentarg#1}% + \fi + \fi + \fi + \fi + \fi + \fi + \pgfmanual@pretty@collectupto@loop@NEXT }% \def\pgfmanual@pretty@collectargs@finish@cs#1{% - \def\pgfmanual@pretty@collectargs@finish@cs@hasargs{1}% - \ifnum\pgfmanualprettyprinternumcollectedargs=0 - \ifpgfmanualprettyprinterarghasunmatchedbraces - \else - \def\pgfmanual@pretty@collectargs@finish@cs@hasargs{0}% - \fi - \fi - \if\pgfmanual@pretty@collectargs@finish@cs@hasargs1% - % report the macro and its arguments: - \pgfkeysifdefined{/codeexample/prettyprint/cs/\pgfmanual@loc@TMPa/.@cmd}{% - % oh, we have a separate routine for this macro! Ok, use it: - \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs/\pgfmanual@loc@TMPa/.@cmd}}% - }{% - % use the generic routine: - \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs with args/.@cmd}}% - }% - % re-insert the backslash: - \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@backslash\pgfmanual@loc@TMPa}}% - \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa #1\pgfeov - \else - % Oh. We probably got |\pgfkeys| instead of |\pgfkeys{arg}| - % re-insert the backslash: - \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@backslash\pgfmanual@loc@TMPa}}% - \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs/.@cmd}}% - \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov - #1\relax% simply typeset any encountered tokens after the control sequence. - \fi + \def\pgfmanual@pretty@collectargs@finish@cs@hasargs{1}% + \ifnum\pgfmanualprettyprinternumcollectedargs=0 + \ifpgfmanualprettyprinterarghasunmatchedbraces + \else + \def\pgfmanual@pretty@collectargs@finish@cs@hasargs{0}% + \fi + \fi + \if\pgfmanual@pretty@collectargs@finish@cs@hasargs1% + % report the macro and its arguments: + \pgfkeysifdefined{/codeexample/prettyprint/cs/\pgfmanual@loc@TMPa/.@cmd}{% + % oh, we have a separate routine for this macro! Ok, use it: + \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs/\pgfmanual@loc@TMPa/.@cmd}}% + }{% + % use the generic routine: + \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs with args/.@cmd}}% + }% + % re-insert the backslash: + \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@backslash\pgfmanual@loc@TMPa}}% + \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa #1\pgfeov + \else + % Oh. We probably got |\pgfkeys| instead of |\pgfkeys{arg}| + % re-insert the backslash: + \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@backslash\pgfmanual@loc@TMPa}}% + \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/cs/.@cmd}}% + \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa\pgfeov + #1\relax% simply typeset any encountered tokens after the control sequence. + \fi }% % A user macro which pretty prints a set of keys. @@ -858,259 +858,258 @@ % However, '#1' should only have catcode 12 characters with the % exception of catcode 13 for newlines, spaces and comments. \long\def\pgfmanualprettyprintpgfkeys#1{% - \ifpgfmanualprettyenabled - \begingroup - \pgfmanualprettyprintstyles - \pgfmanual@pretty@pgfkeys@loop#1\pgfmanual@EOI - \endgroup - \else - #1% - \fi + \ifpgfmanualprettyenabled + \begingroup + \pgfmanualprettyprintstyles + \pgfmanual@pretty@pgfkeys@loop#1\pgfmanual@EOI + \endgroup + \else + #1% + \fi } \def\pgfmanual@pretty@pgfkeys{% - \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanual@pretty@pgfkeys@start - \pgfmanualprettyprintercollectupto]{\pgfmanual@pretty@mainloop}%% + \let\pgfmanualprettyprinterhandlecollectedargsVtwo=\pgfmanual@pretty@pgfkeys@start + \pgfmanualprettyprintercollectupto]{\pgfmanual@pretty@mainloop}%% }% \long\def\pgfmanual@pretty@pgfkeys@start#1#2{% - [% - \pgfmanual@pretty@pgfkeys@loop#1\pgfmanual@EOI - \if1#2% - ]% - \fi + [% + \pgfmanual@pretty@pgfkeys@loop#1\pgfmanual@EOI + \if1#2% + ]% + \fi }% % iterates through single tokens, detecting key names and values while % it goes. \long\def\pgfmanual@pretty@pgfkeys@loop#1{% - \def\pgfmanual@loc@TMPa{#1}% - \ifx\pgfmanual@loc@TMPa\pgfmanual@EOI - \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\relax}% - \else - \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\pgfmanual@pretty@pgfkeys@loop}% - \ifpgfmanualprettycommentactive - #1\kern0pt% - \else - \ifnum13=\catcode`#1 - % we found a white space (space, TAB or NL) or comment - #1% - \else - \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@comma% - %\let\pgfmanual@pretty@pgfkeys@loop@NEXT=\pgfmanual@pretty@pgfkeys@checkforEOI - ,% - \else - \ifnum10=\catcode`#1 - % another white space... I thought they'd have - % catcode 13. doesn't matter. - #1% - \else - \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lbrace - % braces may not occur in the first place - - % but there are circumstances where it is - % convenient to deal with them here (when - % processing arguments of styles) - % Do it. - #1% - \else - \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@rbrace - #1% - \else - % found the beginning of a key! - % We will collect the key name into - % \toks0. - \toks0={}% - % - % Handle it: - % FIXME what if we found an opening brace!? - \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\pgfmanual@pretty@pgfkeys@collectkey #1}% - \fi - \fi - \fi - \fi - \fi - \fi - \fi - \pgfmanual@pretty@pgfkeys@loop@NEXT + \def\pgfmanual@loc@TMPa{#1}% + \ifx\pgfmanual@loc@TMPa\pgfmanual@EOI + \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\relax}% + \else + \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\pgfmanual@pretty@pgfkeys@loop}% + \ifpgfmanualprettycommentactive + #1\kern0pt% + \else + \ifnum13=\catcode`#1 + % we found a white space (space, TAB or NL) or comment + #1% + \else + \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@comma% + %\let\pgfmanual@pretty@pgfkeys@loop@NEXT=\pgfmanual@pretty@pgfkeys@checkforEOI + ,% + \else + \ifnum10=\catcode`#1 + % another white space... I thought they'd have + % catcode 13. doesn't matter. + #1% + \else + \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@lbrace + % braces may not occur in the first place - + % but there are circumstances where it is + % convenient to deal with them here (when + % processing arguments of styles) + % Do it. + #1% + \else + \ifx\pgfmanual@loc@TMPa\pgfmanual@pretty@rbrace + #1% + \else + % found the beginning of a key! + % We will collect the key name into + % \toks0. + \toks0={}% + % + % Handle it: + % FIXME what if we found an opening brace!? + \def\pgfmanual@pretty@pgfkeys@loop@NEXT{\pgfmanual@pretty@pgfkeys@collectkey #1}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \pgfmanual@pretty@pgfkeys@loop@NEXT }% \def\pgfmanual@pretty@pgfkeys@collectkey#1{% - \def\pgfmanual@loc@TMPb{#1}% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@collectkey}% - \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI - % finish key name. - \edef\pgfmanual@loc@TMPb{\the\toks0 }% - \ifx\pgfmanual@loc@TMPb\pgfutil@empty - \else - \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% - \fi - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\relax}% - \else - \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@eq - % finish key name. - \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% - #1% - % now, we do the same with the value - we collect it into - % \toks0. - \toks0={}% - \def\pgfmanual@pretty@pgfkeys@collectvalue@hasconsumedspaces{0}% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@collectvalue}% - \else - \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@comma - % finish key name. - \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% - #1% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}% - \else - \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@activenl - % finish key name before newline. This is not - % necessarily as in TeX, but its simpler here - % because we don't need special cases for comments - % and we don't need to gobble following white - % spaces. - \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% - #1% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}% - \else - \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@backslash - % This is confusing. I simply try to invoke - % the control sequence code and recover as - % good as possible. Let's see if that's - % useful. - \edef\pgfmanual@loc@TMPb{\the\toks0 }% - \ifx\pgfmanual@loc@TMPb\pgfutil@empty - \else - \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% - \fi - % - % we found the start of a control sequence '\command': - % - % collect the control sequence name into - % \pgfmanual@loc@TMPa, but without the backslash: - \begingroup - \let\pgfmanual@loc@TMPa=\pgfutil@empty - \def\afterpgfmanual@pretty@cs{% - \endgroup - \pgfmanual@pretty@pgfkeys@loop - }% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@collectcs@loop}% - \else - \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@lbrace - % Braces in key names are allowed (if they - % are not the first character of a key - % name) - \def\pgfmanualprettyprinterhandlecollectedargs##1{% - \toks1={##1}% - \edef\pgfmanual@loc@TMPc{% - \the\toks0 \pgfmanual@pretty@lbrace \the\toks1 - \ifpgfmanualprettyprinterarghasunmatchedbraces - \else - \pgfmanual@pretty@rbrace - \fi - }% - \toks0=\expandafter{\pgfmanual@loc@TMPc}% - }% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{% - \pgfmanualprettyprintercollectargcount{1}{\pgfmanual@pretty@pgfkeys@collectkey}% - #1% - }% - \else - \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@rbrace - \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% - #1% - \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}% - \else - \toks0=\expandafter{\the\toks0 #1}% - \fi - \fi - \fi - \fi - \fi - \fi - \fi - \pgfmanual@pretty@pgfkeys@collectkey@next + \def\pgfmanual@loc@TMPb{#1}% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@collectkey}% + \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI + % finish key name. + \edef\pgfmanual@loc@TMPb{\the\toks0 }% + \ifx\pgfmanual@loc@TMPb\pgfutil@empty + \else + \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% + \fi + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\relax}% + \else + \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@eq + % finish key name. + \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% + #1% + % now, we do the same with the value - we collect it into + % \toks0. + \toks0={}% + \def\pgfmanual@pretty@pgfkeys@collectvalue@hasconsumedspaces{0}% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@collectvalue}% + \else + \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@comma + % finish key name. + \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% + #1% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}% + \else + \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@activenl + % finish key name before newline. This is not + % necessarily as in TeX, but its simpler here + % because we don't need special cases for comments + % and we don't need to gobble following white + % spaces. + \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% + #1% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}% + \else + \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@backslash + % This is confusing. I simply try to invoke + % the control sequence code and recover as + % good as possible. Let's see if that's + % useful. + \edef\pgfmanual@loc@TMPb{\the\toks0 }% + \ifx\pgfmanual@loc@TMPb\pgfutil@empty + \else + \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% + \fi + % + % we found the start of a control sequence '\command': + % + % collect the control sequence name into + % \pgfmanual@loc@TMPa, but without the backslash: + \begingroup + \let\pgfmanual@loc@TMPa=\pgfutil@empty + \def\afterpgfmanual@pretty@cs{% + \endgroup + \pgfmanual@pretty@pgfkeys@loop + }% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@collectcs@loop}% + \else + \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@lbrace + % Braces in key names are allowed (if they + % are not the first character of a key + % name) + \def\pgfmanualprettyprinterhandlecollectedargs##1{% + \toks1={##1}% + \edef\pgfmanual@loc@TMPc{% + \the\toks0 \pgfmanual@pretty@lbrace \the\toks1 + \ifpgfmanualprettyprinterarghasunmatchedbraces + \else + \pgfmanual@pretty@rbrace + \fi + }% + \toks0=\expandafter{\pgfmanual@loc@TMPc}% + }% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{% + \pgfmanualprettyprintercollectargcount{1}{\pgfmanual@pretty@pgfkeys@collectkey}% + #1% + }% + \else + \ifx\pgfmanual@loc@TMPb\pgfmanual@pretty@rbrace + \expandafter\pgfmanual@pretty@pgfkeys@processkey\expandafter{\the\toks0 }% + #1% + \def\pgfmanual@pretty@pgfkeys@collectkey@next{\pgfmanual@pretty@pgfkeys@loop}% + \else + \toks0=\expandafter{\the\toks0 #1}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \pgfmanual@pretty@pgfkeys@collectkey@next }% \def\pgfmanual@pretty@pgfkeys@collectvalue#1{% - \def\pgfmanual@loc@TMPb{#1}% - \let\pgfmanual@pretty@pgfkeys@collectvalue@next=\pgfmanual@pretty@pgfkeys@collectvalue - \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI - % the key value is empty. - %\expandafter\pgfmanual@pretty@pgfkeys@processvalue\expandafter{\the\toks0 }% - \let\pgfmanual@pretty@pgfkeys@collectvalue@next=\relax - \else - \def\pgfmanual@pretty@isconsumed{0}% - \if\pgfmanual@pretty@pgfkeys@collectvalue@hasconsumedspaces0% - \ifnum13=\catcode`#1 - % we found a white space (space, TAB or NL) - #1% - \def\pgfmanual@pretty@isconsumed{1}% - \else - \ifnum10=\catcode`#1 - % another white space... I thought they'd have - % catcode 13. doesn't matter. - \def\pgfmanual@pretty@isconsumed{1}% - #1% - \fi - \fi - \fi - \if\pgfmanual@pretty@isconsumed0% - \def\pgfmanualprettyprinterhandlecollectedargsVtwo##1##2{\pgfmanual@pretty@pgfkeys@processvalue{##1}}% the braces will be handled separately. - \def\pgfmanual@pretty@pgfkeys@collectvalue@next{% - \pgfmanualprettyprintercollectupto,{\afterpgfmanual@pretty@collectargs@finish@value}#1% - }% - \fi - \fi - \pgfmanual@pretty@pgfkeys@collectvalue@next + \def\pgfmanual@loc@TMPb{#1}% + \let\pgfmanual@pretty@pgfkeys@collectvalue@next=\pgfmanual@pretty@pgfkeys@collectvalue + \ifx\pgfmanual@loc@TMPb\pgfmanual@EOI + % the key value is empty. + %\expandafter\pgfmanual@pretty@pgfkeys@processvalue\expandafter{\the\toks0 }% + \let\pgfmanual@pretty@pgfkeys@collectvalue@next=\relax + \else + \def\pgfmanual@pretty@isconsumed{0}% + \if\pgfmanual@pretty@pgfkeys@collectvalue@hasconsumedspaces0% + \ifnum13=\catcode`#1 + % we found a white space (space, TAB or NL) + #1% + \def\pgfmanual@pretty@isconsumed{1}% + \else + \ifnum10=\catcode`#1 + % another white space... I thought they'd have + % catcode 13. doesn't matter. + \def\pgfmanual@pretty@isconsumed{1}% + #1% + \fi + \fi + \fi + \if\pgfmanual@pretty@isconsumed0% + \def\pgfmanualprettyprinterhandlecollectedargsVtwo##1##2{\pgfmanual@pretty@pgfkeys@processvalue{##1}}% the braces will be handled separately. + \def\pgfmanual@pretty@pgfkeys@collectvalue@next{% + \pgfmanualprettyprintercollectupto,{\afterpgfmanual@pretty@collectargs@finish@value}#1% + }% + \fi + \fi + \pgfmanual@pretty@pgfkeys@collectvalue@next }% \def\afterpgfmanual@pretty@collectargs@finish@value{% - \pgfutil@ifnextchar\pgfmanual@EOI{% - \pgfmanual@pretty@pgfkeys@loop - }{% - \pgfmanual@pretty@pgfkeys@loop,% re-insert the gobbled comma here! - }% + \pgfutil@ifnextchar\pgfmanual@EOI{% + \pgfmanual@pretty@pgfkeys@loop + }{% + \pgfmanual@pretty@pgfkeys@loop,% re-insert the gobbled comma here! + }% }% {\catcode`\^^M=13 \catcode`\ =13\relax\catcode`\%=13\relax\gdef\pgfmanual@pretty@restorespaces{\def%{\pgfmanual@pretty@percent}\def^^M{\pgfmanual@pretty@space}\def {\pgfmanual@pretty@space}}} % #1: the key's name \def\pgfmanual@pretty@pgfkeys@processkey#1{% - \begingroup - \pgfmanual@pretty@restorespaces - % remember this key name! It is used when we are dealing with - % its value later... (if it has a value) - \xdef\pgfmanual@pretty@pgfkeys@collectkey@keyname{#1}% - \endgroup - % - % check if it is a handled key. FIXME: this could be done in a - % rigorous way! This here assumes that all key handlers start with - % '.' and the '.' occurs never right after a '/' otherwise: - \def\pgfmanual@loc@TMPa{\pgfutil@in@{/.}}% - \expandafter\pgfmanual@loc@TMPa\expandafter{\pgfmanual@pretty@pgfkeys@collectkey@keyname}% - \ifpgfutil@in@ - % split into key name and handler name... - \def\pgfmanual@pretty@splitit##1/.##2\relax{% - \def\pgfmanual@loc@TMPb{{##1}{.##2}}% - }% - \expandafter\pgfmanual@pretty@splitit\pgfmanual@pretty@pgfkeys@collectkey@keyname\relax - % - % report key name AND handler: - \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/key name with handler/.@cmd}}% - \expandafter\pgfmanual@loc@TMPa\pgfmanual@loc@TMPb\pgfeov - \else - % report key name ... - \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/key name/.@cmd}}% - \expandafter\pgfmanual@loc@TMPa\pgfmanual@pretty@pgfkeys@collectkey@keyname\pgfeov - \fi + \begingroup + \pgfmanual@pretty@restorespaces + % remember this key name! It is used when we are dealing with + % its value later... (if it has a value) + \xdef\pgfmanual@pretty@pgfkeys@collectkey@keyname{#1}% + \endgroup + % + % check if it is a handled key. FIXME: this could be done in a + % rigorous way! This here assumes that all key handlers start with + % '.' and the '.' occurs never right after a '/' otherwise: + \def\pgfmanual@loc@TMPa{\pgfutil@in@{/.}}% + \expandafter\pgfmanual@loc@TMPa\expandafter{\pgfmanual@pretty@pgfkeys@collectkey@keyname}% + \ifpgfutil@in@ + % split into key name and handler name... + \def\pgfmanual@pretty@splitit##1/.##2\relax{% + \def\pgfmanual@loc@TMPb{{##1}{.##2}}% + }% + \expandafter\pgfmanual@pretty@splitit\pgfmanual@pretty@pgfkeys@collectkey@keyname\relax + % + % report key name AND handler: + \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/key name with handler/.@cmd}}% + \expandafter\pgfmanual@loc@TMPa\pgfmanual@loc@TMPb\pgfeov + \else + % report key name ... + \def\pgfmanual@loc@TMPa{\pgfkeysvalueof{/codeexample/prettyprint/key name/.@cmd}}% + \expandafter\pgfmanual@loc@TMPa\pgfmanual@pretty@pgfkeys@collectkey@keyname\pgfeov + \fi } \def\pgfmanual@pretty@pgfkeys@processvalue#1{% - % report or process the value, depending on the keyname. - % After all, it *may* be a style which needs to be pretty printed - % as well. - \pgfkeysifdefined{/codeexample/prettyprint/key value/\pgfmanual@pretty@pgfkeys@collectkey@keyname/.@cmd}{% - % oh, we have a separate routine for this macro! Ok, use it: - \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/key value/\pgfmanual@pretty@pgfkeys@collectkey@keyname/.@cmd}}% - }{% - % use the generic routine: - \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/key value/.@cmd}}% - }% - \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@pgfkeys@collectkey@keyname}}% - \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa{#1}\pgfeov + % report or process the value, depending on the keyname. + % After all, it *may* be a style which needs to be pretty printed + % as well. + \pgfkeysifdefined{/codeexample/prettyprint/key value/\pgfmanual@pretty@pgfkeys@collectkey@keyname/.@cmd}{% + % oh, we have a separate routine for this macro! Ok, use it: + \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/key value/\pgfmanual@pretty@pgfkeys@collectkey@keyname/.@cmd}}% + }{% + % use the generic routine: + \edef\pgfmanual@loc@TMPb{\noexpand\pgfkeysvalueof{/codeexample/prettyprint/key value/.@cmd}}% + }% + \edef\pgfmanual@loc@TMPa{{\pgfmanual@pretty@pgfkeys@collectkey@keyname}}% + \expandafter\pgfmanual@loc@TMPb\pgfmanual@loc@TMPa{#1}\pgfeov } - |