% $Header: /cvsroot/pgf/pgf/doc/generic/pgf/macros/pgfmanual-en-macros.tex,v 1.1 2005/11/14 17:37:50 tantau Exp $ % Copyright 2003, 2004 by Till Tantau . % % This program can be redistributed and/or modified under the terms % of the GNU Public License, version 2. \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}}} \renewenvironment{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{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{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`\\input \declare{#1}.tex\space\space\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\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} \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% \expandafter\scantokens\expandafter{\code@temp\ignorespaces}\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: