% This is file comes from the documentation of the PGF package by Till Tantau. % I have only commented out some code that is unnecessary for my purpose here (I just want to use the % codeexample environment) I hope that I do not break PGF license by releasing the file like this. William Blum % Copyright 2006 by Till Tantau % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Free Documentation License. % % See the file doc/generic/pgf/licenses/LICENSE for more details. % $Header: /cvsroot/pgf/pgf/doc/generic/pgf/macros/pgfmanual-en-macros.tex,v 1.8 2006/10/11 15:00:27 tantau Exp $ \providecommand\href[2]{\texttt{#1}} \colorlet{examplefill}{yellow!80!black} \definecolor{graphicbackground}{rgb}{0.96,0.96,0.8} \definecolor{codebackground}{rgb}{0.8,0.8,1} \newenvironment{pgfmanualentry}{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}}{\endlist} \newcommand\pgfmanualentryheadline[1]{\itemsep=0pt\parskip=0pt\item\strut#1\par\topsep=0pt} \newcommand\pgfmanualbody{\parskip3pt} \newenvironment{pgflayout}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{\texttt{\string\pgfpagesuselayout\char`\{\declare{#1}\char`\}}\oarg{options}} \index{#1@\protect\texttt{#1} layout}% \index{Page layouts!#1@\protect\texttt{#1}}% \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{command}[1]{ \begin{pgfmanualentry} \extractcommand#1\@@ \pgfmanualbody } { \end{pgfmanualentry} } \def\extractcommand#1#2\@@{% \pgfmanualentryheadline{\declare{\texttt{\string#1}}#2}% \removeats{#1}% \index{\strippedat @\protect\myprintocmmand{\strippedat}}} \newenvironment{environment}[1]{ \begin{pgfmanualentry} \extractenvironement#1\@@ \pgfmanualbody } { \end{pgfmanualentry} } \def\extractenvironement#1#2\@@{% \pgfmanualentryheadline{{\ttfamily\char`\\begin\char`\{\declare{#1}\char`\}}#2}% \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}% \pgfmanualentryheadline{{\ttfamily\char`\\end\char`\{\declare{#1}\char`\}}}% \index{#1@\protect\texttt{#1} environment}% \index{Environments!#1@\protect\texttt{#1}}} \newenvironment{plainenvironment}[1]{ \begin{pgfmanualentry} \extractplainenvironement#1\@@ \pgfmanualbody } { \end{pgfmanualentry} } \def\extractplainenvironement#1#2\@@{% \pgfmanualentryheadline{{\ttfamily\declare{\char`\\#1}}#2}% \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}% \pgfmanualentryheadline{{\ttfamily\declare{\char`\\end#1}}}% \index{#1@\protect\texttt{#1} environment}% \index{Environments!#1@\protect\texttt{#1}}} \newenvironment{contextenvironment}[1]{ \begin{pgfmanualentry} \extractcontextenvironement#1\@@ \pgfmanualbody } { \end{pgfmanualentry} } \def\extractcontextenvironement#1#2\@@{% \pgfmanualentryheadline{{\ttfamily\declare{\char`\\start#1}}#2}% \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}% \pgfmanualentryheadline{{\ttfamily\declare{\char`\\stop#1}}}% \index{#1@\protect\texttt{#1} environment}% \index{Environments!#1@\protect\texttt{#1}}} \newenvironment{shape}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{Shape {\ttfamily\declare{#1}}}% \index{#1@\protect\texttt{#1} shape}% \index{Shapes!#1@\protect\texttt{#1}} \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{predefinednode}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{Predefined node {\ttfamily\declare{#1}}}% \index{#1@\protect\texttt{#1} node}% \index{Predefined node!#1@\protect\texttt{#1}} \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{coordinatesystem}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{Coordinate system {\ttfamily\declare{#1}}}% \index{#1@\protect\texttt{#1} coordinate system}% \index{Coordinate systems!#1@\protect\texttt{#1}} \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{snake}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{Snake {\ttfamily\declare{#1}}}% \index{#1@\protect\texttt{#1} snake}% \index{Snakes!#1@\protect\texttt{#1}} \pgfmanualbody } { \end{pgfmanualentry} } \def\pgfmanualbar{\char`\|} \makeatletter \newenvironment{pathoperation}[3][]{ \begin{pgfmanualentry} \pgfmanualentryheadline{\textcolor{gray}{{\ttfamily\char`\\path}\ \ \dots} \declare{\texttt{#2}}#3\ \textcolor{gray}{\dots\texttt{;}}}% \def\pgfmanualtest{#1}% \ifx\pgfmanualtest\@empty% \index{#2@\protect\texttt{#2} path operation}% \index{Path operations!#2@\protect\texttt{#2}}% \fi% \pgfmanualbody } { \end{pgfmanualentry} } \makeatother \def\extractcommand#1#2\@@{% \pgfmanualentryheadline{\declare{\texttt{\string#1}}#2}% \removeats{#1}% \index{\strippedat @\protect\myprintocmmand{\strippedat}}} \newenvironment{package}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{{\ttfamily\char`\\usepackage\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX}} \index{#1@\protect\texttt{#1} package}% \index{Packages and files!#1@\protect\texttt{#1}}% \pgfmanualentryheadline{{\ttfamily\char`\\input \declare{#1}.tex\space\space\space \char`\%\space\space plain \TeX}} \pgfmanualentryheadline{{\ttfamily\char`\\usemodule[\declare{#1}]\space\space \char`\%\space\space Con\TeX t}} \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{pgflibrary}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space \char`\%\space\space \LaTeX\space and plain \TeX\space and pure pgf}} \index{#1@\protect\texttt{#1} library}% \index{Libraries!#1@\protect\texttt{#1}}% \pgfmanualentryheadline{{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space Con\TeX t\space and pure pgf}} \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX\space and plain \TeX\space when using \tikzname}} \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t\space when using \tikzname}} \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{tikzlibrary}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX\space and plain \TeX}} \index{#1@\protect\texttt{#1} library}% \index{Libraries!#1@\protect\texttt{#1}}% \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}} \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{filedescription}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{File {\ttfamily\declare{#1}}}% \index{#1@\protect\texttt{#1} file}% \index{Packages and files!#1@\protect\texttt{#1}}% \pgfmanualbody } { \end{pgfmanualentry} } \newenvironment{packageoption}[1]{ \begin{pgfmanualentry} \pgfmanualentryheadline{{\ttfamily\char`\\usepackage[\declare{#1}]\char`\{pgf\char`\}}} \index{#1@\protect\texttt{#1} package option}% \index{Package options for \textsc{pgf}!#1@\protect\texttt{#1}}% \pgfmanualbody } { \end{pgfmanualentry} } \newcommand\opt[1]{{\color{black!50!green}#1}} \newcommand\ooarg[1]{{\ttfamily[}\meta{#1}{\ttfamily]}} \def\opt{\afterassignment\pgfmanualopt\let\next=} \def\pgfmanualopt{\ifx\next\bgroup\bgroup\color{black!50!green}\else{\color{black!50!green}\next}\fi} \def\beamer{\textsc{beamer}} \def\pdf{\textsc{pdf}} \def\pgfname{\textsc{pgf}} \def\tikzname{Ti\emph{k}Z} \def\pstricks{\textsc{pstricks}} \def\prosper{\textsc{prosper}} \def\seminar{\textsc{seminar}} \def\texpower{\textsc{texpower}} \def\foils{\textsc{foils}} { \makeatletter \global\let\myempty=\@empty \global\let\mygobble=\@gobble \catcode`\@=12 \gdef\getridofats#1@#2\relax{% \def\getridtest{#2}% \ifx\getridtest\myempty% \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1} \else% \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1\protect\printanat} \getridofats#2\relax% \fi% } \gdef\removeats#1{% \let\strippedat\myempty% \edef\strippedtext{\stripcommand#1}% \expandafter\getridofats\strippedtext @\relax% } \gdef\stripcommand#1{\expandafter\mygobble\string#1} } \def\printanat{\char`\@} \def\declare{\afterassignment\pgfmanualdeclare\let\next=} \def\pgfmanualdeclare{\ifx\next\bgroup\bgroup\color{red!75!black}\else{\color{red!75!black}\next}\fi} \let\textoken=\command \let\endtextoken=\endcommand \def\myprintocmmand#1{\texttt{\char`\\#1}} \def\example{\par\smallskip\noindent\textit{Example: }} \def\themeauthor{\par\smallskip\noindent\textit{Theme author: }} \def\itemoption#1{\item \declare{\texttt{#1}}% \indexoption{#1}% } \def\indexoption#1{% \index{#1@\protect\texttt{#1} option}% \index{Graphic options!#1@\protect\texttt{#1}}% } \def\itemstyle#1{\item \texttt{style=}\declare{\texttt{#1}}% \index{#1@\protect\texttt{#1} style}% \index{Styles!#1@\protect\texttt{#1}}% } \def\class#1{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}% \extractclass#1@\par\topsep=0pt} \def\endclass{\endlist} \def\extractclass#1#2@{% \item{{{\ttfamily\char`\\documentclass}#2{\ttfamily\char`\{\declare{#1}\char`\}}}}% \index{#1@\protect\texttt{#1} class}% \index{Classes!#1@\protect\texttt{#1}}} \def\partname{Part} \makeatletter %\def\index@prologue{\section*{Index}\addcontentsline{toc}{section}{Index} % This index only contains automatically generated entries. A good % index should also contain carefully selected keywords. This index is % not a good index. % \bigskip %} %\c@IndexColumns=2 % \def\theindex{\@restonecoltrue % \columnseprule \z@ \columnsep 35\p@ % \twocolumn[\index@prologue]% % \parindent -30pt % \columnsep 15pt % \parskip 0pt plus 1pt % \leftskip 30pt % \rightskip 0pt plus 2cm % \small % \def\@idxitem{\par}% % \let\item\@idxitem \ignorespaces} % \def\endtheindex{\onecolumn} %\def\noindexing{\let\index=\@gobble} %\newcommand\patternindex[1]{ % \index{#1@\protect\texttt{#1} pattern}% % \index{Patterns!#1@\protect\texttt{#1}} % \texttt{#1}& % \begin{tikzpicture} % \path[draw=black!50,very thin,pattern=#1,rounded corners] % (0pt,0pt) rectangle (1cm,1.5em); % \end{tikzpicture} %} % % %\newcommand\symarrow[1]{ % \index{#1@\protect\texttt{#1} arrow tip}% % \index{Arrow tips!#1@\protect\texttt{#1}} % \texttt{#1}& yields thick % \begin{tikzpicture}[arrows={#1-#1},thick,baseline] % \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex); % \draw (0pt,.5ex) -- (1cm,.5ex); % \end{tikzpicture} and thin % \begin{tikzpicture}[arrows={#1-#1},thin,baseline] % \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex); % \draw (0pt,.5ex) -- (1cm,.5ex); % \end{tikzpicture} %} % %\newcommand\sarrow[2]{ % \index{#1@\protect\texttt{#1} arrow tip}% % \index{Arrow tips!#1@\protect\texttt{#1}} % \index{#2@\protect\texttt{#2} arrow tip}% % \index{Arrow tips!#2@\protect\texttt{#2}} % \texttt{#1-#2}& yields thick % \begin{tikzpicture}[arrows={#1-#2},thick,baseline] % \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex); % \draw (0pt,.5ex) -- (1cm,.5ex); % \end{tikzpicture} and thin % \begin{tikzpicture}[arrows={#1-#2},thin,baseline] % \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex); % \draw (0pt,.5ex) -- (1cm,.5ex); % \end{tikzpicture} %} % %\newcommand\carrow[1]{ % \index{#1@\protect\texttt{#1} arrow tip}% % \index{Arrow tips!#1@\protect\texttt{#1}} % \texttt{#1}& yields for line width 1ex % \begin{tikzpicture}[arrows={#1-#1},line width=1ex,baseline] % \useasboundingbox (0pt,-0.5ex) rectangle (1.5cm,2ex); % \draw (0pt,.5ex) -- (1.5cm,.5ex); % \end{tikzpicture} %} %\def\myvbar{\char`\|} %\newcommand\plotmarkentry[1]{% % \index{#1@\protect\texttt{#1} plot mark}% % \index{Plot marks!#1@\protect\texttt{#1}} % \texttt{\char`\\pgfuseplotmark\char`\{\declare{#1}\char`\}} & % \tikz\draw[color=black!25] plot[mark=#1,mark options={fill=examplefill,draw=black}] coordinates{(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\ %} %\newcommand\plotmarkentrytikz[1]{% % \index{#1@\protect\texttt{#1} plot mark}% % \index{Plot marks!#1@\protect\texttt{#1}} % \texttt{mark=\declare{#1}} & \tikz\draw[color=black!25] % plot[mark=#1,mark options={fill=examplefill,draw=black}] % coordinates {(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\ %} % \ifx\scantokens\@undefined \PackageError{pgfmanual-macros}{You need to use extended latex (elatex) or (pdfelatex) to process this document}{} \fi \begingroup \catcode`|=0 \catcode`[= 1 \catcode`]=2 \catcode`\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|find@example#1\end{codeexample}[|endofcodeexample[#1]] |endgroup \begingroup \catcode`\^=7 \catcode`\^^M=13 \catcode`\ =13% \gdef\returntospace{\catcode`\ =13\def {\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\typesetcomment{\catcode`\%=13\def%{\@typeset@till@return}} \gdef\@typeset@till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par} \endgroup \define@key{codeexample}{width}{\setlength\codeexamplewidth{#1}} \define@key{codeexample}{graphic}{\colorlet{graphicbackground}{#1}} \define@key{codeexample}{code}{\colorlet{codebackground}{#1}} \define@key{codeexample}{execute code}{\csname code@execute#1\endcsname} \define@key{codeexample}{code only}[]{\code@executefalse} \define@key{codeexample}{pre}{\def\code@pre{#1}} \define@key{codeexample}{post}{\def\code@post{#1}} \def\code@pre{} \def\code@post{} \newdimen\codeexamplewidth \newif\ifcode@execute \newbox\codeexamplebox \def\codeexample[#1]{% \code@executetrue \setlength\codeexamplewidth{4cm+7pt} \setkeys{codeexample}{#1}% \parindent0pt \begingroup% \par% \medskip% \let\do\@makeother% \dospecials% \obeylines% \@vobeyspaces% \catcode`\%=13% \catcode`\^^M=13% \find@example} \def\endofcodeexample#1{% \endgroup% \ifcode@execute% \setbox\codeexamplebox=\hbox{% {% {% \returntospace% \commenthandler% \xdef\code@temp{#1}% removes returns and comments }% \colorbox{graphicbackground}{\color{black}\ignorespaces% \code@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@post\ignorespaces}% }% }% \ifdim\wd\codeexamplebox>\codeexamplewidth% \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}% \def\code@width{\linewidth-12pt-\codeexamplewidth}% \def\code@end{\egroup}% \fi% \code@start% \noindent% \begin{minipage}[t]{\codeexamplewidth}\raggedright \hrule width0pt% \footnotesize\vskip-1em% \code@flushstart\box\codeexamplebox\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\footnotesize \typesetcomment% \@tempswafalse \def\par{% \if@tempswa \leavevmode \null \@@par\penalty\interlinepenalty \else \@tempswatrue \ifhmode\@@par\penalty\interlinepenalty\fi \fi}% \obeylines \everypar \expandafter{\the\everypar \unpenalty}% #1} \end{minipage}}% \code@end% \par% \medskip \end{codeexample} } \def\endcodeexample{} \makeatother %%% Local Variables: %%% mode: latex %%% TeX-master: "beameruserguide" %%% End: