%-------------------------------------------- % % Package pgfplots % % Copyright 2007-2011 by Christian Feuersänger. % % This program is free software: you can redistribute it and/or modify % 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 . % %-------------------------------------------- % % This source file contains helper utilities for verbatim character % processing. % % USAGE: % \beginpgfplotsverbatim[result/.code={\message{I read #1}}] % % \endpgfplotsverbatim % % The verbatim code MUST start at the line after the ']' (or after % \beginpgfplotsverbatim if there is no ']') \def\beginpgfplotsverbatim{\pgfutil@ifnextchar[{\beginpgfplotsverbatim@}{\beginpgfplotsverbatim@[]}} \def\beginpgfplotsverbatim@[#1]{% \begingroup \pgfqkeys{/pgfplots/verb}{#1}% \pgfplots@verbatim@prepare@collect \beginpgfplotsverbatim@gobbleuntileol } \begingroup \catcode`\|=0 \catcode`\\=12 |gdef|endpgfplotsverbatim{\endpgfplotsverbatim}% |endgroup \expandafter\long\expandafter\def\expandafter\pgfplots@verbatim@collect@until\expandafter#\expandafter1\endpgfplotsverbatim{% \begingroup \pgfplots@verbatim@newline@handler \xdef\pgfplots@glob@TMPa{#1}% \endgroup \pgfkeysgetvalue{/pgfplots/verb/result/.@cmd}\pgfplots@loc@TMPb \global\let\pgfplots@glob@TMPb=\pgfplots@loc@TMPb \endgroup% restore old catcodes etc. \expandafter\pgfplots@glob@TMPb\expandafter{\pgfplots@glob@TMPa}\pgfeov% }% \begingroup \long\def\pgfplots@loc@TMPa{ }%^^M}% \catcode`\^^M=13 % \gdef\beginpgfplotsverbatim@gobbleuntileol^^M{\pgfplots@verbatim@collect@until}% \gdef\pgfplots@verbatim@newline@toHATHATJ{\def^^M{^^J}}% \xdef\pgfplots@verbatim@newline@IDENTITY{\noexpand\long\noexpand\def\noexpand^^M{\pgfplots@loc@TMPa}}% \endgroup \pgfkeys{ /pgfplots/verb/result/.code={% \pgfplots@error{Please use \string\beginpgfplotsverbatim[result/.code=....] to configure what to do with the content of \string\beginpgfplotsverbatim...\endpgfplotsverbatim\space (or use \string\pgfplotsset{verb/.cd,result/.code=....} in your preamble)}% }, /pgfplots/verb/newline handler/.is choice, /pgfplots/verb/newline handler/to outfile/.code= {\let\pgfplots@verbatim@newline@handler=\pgfplots@verbatim@newline@toHATHATJ}, /pgfplots/verb/newline handler/identity/.code= {\let\pgfplots@verbatim@newline@handler=\pgfplots@verbatim@newline@IDENTITY}, /pgfplots/verb/newline handler/identity, } \def\pgfplots@verbatim@prepare@collect{% \def\do##1{\catcode`##1=12 }\dospecials \catcode`\^^M=13 \catcode`\^^J=12 \catcode`\^^I=12 }% \def\pgfplots@verbatim@restore@catcodes{% \catcode`\^^M=5 \catcode`\^^J=10 \catcode`\^^I=10 % this is important to get \scantokens to work: otherwise, it will % eat up the ^^M chars: \endlinechar=`\^^M \newlinechar=\endlinechar }% \endinput