% Copyright 2009 by Alain Matthes % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Free Documentation License. % % The author of the original code % of the environment 'codeexample' is Till Tantau % from the file pgfmanual-en-macros.tex % (Copyright 2006 by Till Tantau) % See the file doc/generic/pgf/licenses/LICENSE for more details. % % Diff between tkexample and codeexample % I removed : % graphicbackground % I replaced \xdef\code@temp{#1}% by \protected@xdef\code@temp{#1}}% % now the use of accented letters with utf8 is possible. % I changed \def\code@mid{\hskip6pt} % \def\code@width{\linewidth-12pt\tkzexamplewidth}% % into % \def\code@mid{\hskip6pt\hskip2em}% % \def\code@width{\linewidth-12pt-2em-\tkzexamplewidth} % this is to add room for the numbers % I insert the next code to add numders in front of each line of code % \ifnum@show% % \noindent% % \llap{\colorbox{green!25!black}{% % \textcolor{white}{% % \number\value{code@cnt}}}\enspace}% % \stepcounter{code@cnt}% % \fi % I changed some keys : % I added % show num/.is if=num@show, % num/.code= {\num@showtrue\setcounter{code@cnt}{1}}, % global num/.code= {\num@showtrue}, % and latex/.code etc ... % I removed graphic/.code= {\colorlet{graphicbackground}{#1}}, % I removed \raggedright %<-----------------------------------------------------------------------------> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tkzexample}[2009/02/14 v1 beta code and graphic ] \definecolor{graphicbackground}{rgb}{0.96,0.96,0.8}% \definecolor{codebackground}{rgb}{0.8,0.8,1}% %\colorlet{codebackground}{Peach!20}% \colorlet{numbackground}{Peach!60!black}% \definecolor{numcolor}{rgb}{1,1,1}% \makeatletter \newcounter{code@cnt}% \ifx\scantokens\@undefined \PackageError{tkzexample}{You need to use extended latex (elatex) or (pdfelatex) to use this package}{} \fi % Define \find@example such that it doesn't destroy catcodes: \begingroup \catcode`|=0 \catcode`[= 1 \catcode`]=2 \catcode`\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|find@example#1\end{tkzexample}[|endoftkzexample[#1]] |endgroup % define \returntospace. % % It should define NEWLINE as {}, spaces and tabs as \space. \begingroup \catcode`\^=7 \catcode`\^^M=13 \catcode`\^^I=13 \catcode`\ =13% \gdef\returntospace{\catcode`\ =13\def {\space}\catcode`\^^I=13\def^^I{\space}\catcode`\^^M=13\def^^M{}}% \endgroup \begingroup \catcode`\%=13 \catcode`\^^M=13 \gdef\commenthandler{\catcode`\%=13\def%{\@gobble@till@return}} \gdef\@gobble@till@return#1^^M{} \gdef\@gobble@till@return@ignore#1^^M{\ignorespaces} \gdef\typesetcomment{\catcode`\%=13\def%{\@typeset@till@return}} \gdef\@typeset@till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par} \endgroup \pgfqkeys{/tkzexample}{% width/.code= {\setlength\tkzexamplewidth{#1}}, graphic/.code= {\colorlet{graphicbackground}{#1}}, code/.code= {\colorlet{codebackground}{#1}}, execute code/.is if=code@execute, code only/.code= {\code@executefalse}, show num/.is if=num@show, num/.code= {\num@showtrue\setcounter{code@cnt}{1}}, global num/.code= {\num@showtrue}, normal/.code= {\def\code@size{}}, small/.code= {\def\code@size{\small}}, very small/.code= {\def\code@size{\footnotesize}}, pre/.code= {\def\code@pre{#1}}, post/.code= {\def\code@post{#1}}, latex/.code= {\setlength\tkzexamplewidth{#1}% \def\code@pre{\begin{minipage}{#1}}% \def\code@post{\end{minipage}}}, vbox/.code= {\def\code@pre{\vbox\bgroup\setlength{\hsize}{\linewidth-6pt}}\def\code@post{\egroup}}, ignorespaces/.code= {\let\@gobble@till@return=\@gobble@till@return@ignore}, leave comments/.code= {\def\code@catcode@hook{\catcode`\%=12}\let\commenthandler=\relax\let\typesetcomment=\relax}, every tkzexample/.style={width=8cm+7pt}, } \def\code@size{} \def\code@pre{} \def\code@post{} \def\code@catcode@hook{} \newdimen\tkzexamplewidth \newif\ifcode@execute \newif\ifnum@show \newbox\tkzexamplebox \def\tkzexample[#1]{% %\setcounter{code@cnt}{1}% \begingroup% \code@executetrue \pgfqkeys{/tkzexample}{every tkzexample,#1}% \parindent0pt \begingroup% \par% \medskip% \let\do\@makeother% \dospecials% \obeylines% \@vobeyspaces% \catcode`\%=13% \catcode`\^^M=13% \code@catcode@hook% \relax% \find@example} \def\endoftkzexample#1{% \endgroup% \ifcode@execute% \setbox\tkzexamplebox=\hbox{% {% {% \returntospace% \commenthandler% \protected@xdef\code@temp{#1}%added by AM }% \colorbox{graphicbackground}{\color{black}\ignorespaces% \code@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@post\ignorespaces}% }% }% \ifdim\wd\tkzexamplebox>\tkzexamplewidth% \def\code@start{\par}% \def\code@flushstart{}% \def\code@flushend{}% \def\code@mid{\parskip2pt\par\noindent}% \def\code@width{\linewidth-6pt}% \def\code@end{}% \else% \def\code@start{% \linewidth=\textwidth% \parshape \@ne 0pt \linewidth \leavevmode% \hbox\bgroup}% \def\code@flushstart{\hfill}% \def\code@flushend{\hbox{}}% \def\code@mid{\hskip6pt\hskip2em}%added \hskip2em by AM \def\code@width{\linewidth-12pt-2em-\tkzexamplewidth}%modified by AM -2em \def\code@end{\egroup}% \fi% \code@start% \noindent% \begin{minipage}[t]{\tkzexamplewidth}\raggedright \hrule width0pt% \code@size\vskip-1em% \code@flushstart\box\tkzexamplebox\code@flushend% \vskip-1ex% \leavevmode% \end{minipage}% \else% \def\code@mid{\par} \def\code@width{\linewidth-6pt} \def\code@end{} \fi% \code@mid% \colorbox{codebackground}{% \begin{minipage}[t]{\code@width}% {% \let\do\@makeother \dospecials \frenchspacing\@vobeyspaces \normalfont\ttfamily\code@size% \typesetcomment% \@tempswafalse \def\par{% \if@tempswa \leavevmode\null\@@par\penalty\interlinepenalty% \ifnum@show% \noindent\parskip=0pt% \llap{\colorbox{numbackground}{%%added by AM \textcolor{numcolor}{%%added by AM \number\value{code@cnt}}}\enspace}%%added by AM \stepcounter{code@cnt}%%added by AM \fi \else \@tempswatrue% \ifhmode\@@par\penalty\interlinepenalty\fi% \ifnum@show% \noindent\parskip=0pt% \llap{\colorbox{numbackground}{%%added by AM \textcolor{numcolor}{%%added by AM \number\value{code@cnt}}}\enspace}%%added by AM \stepcounter{code@cnt}%%added by AM \fi \fi}% \obeylines \everypar \expandafter{\the\everypar \unpenalty}% #1}% \end{minipage}}% \code@end% \par% \medskip \end{tkzexample} } \def\endtkzexample{\endgroup} \makeatother