Current File : //usr/share/texlive/texmf-dist/tex/latex/pgf/doc/pgfmanual-en-macros.tex |
% Copyright 2019 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$
\newcount\pgfmanualtargetcount
\colorlet{examplefill}{yellow!80!black}
\definecolor{graphicbackground}{rgb}{0.96,0.96,0.8}
\definecolor{codebackground}{rgb}{0.9,0.9,1}
\definecolor{animationgraphicbackground}{rgb}{0.96,0.96,0.8}
\newenvironment{pgfmanualentry}{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}}{\endlist}
\newcounter{pgfmanualentry}
\newcommand\pgfmanualentryheadline[1]{%
\itemsep=0pt\parskip=0pt{\raggedright\item\refstepcounter{pgfmanualentry}\strut{#1}\par}\topsep=0pt}
\newcommand\pgfmanualbody{\parskip3pt}
\let\origtexttt=\texttt
\def\texttt#1{{\def\textunderscore{\char`\_}\def\textbraceleft{\char`\{}\def\textbraceright{\char`\}}\origtexttt{#1}}}
\def\exclamationmarktext{!}
\def\atmarktext{@}
{
\catcode`\|=12
\gdef\pgfmanualnormalbar{|}
\catcode`\|=13
\AtBeginDocument{\gdef|{\ifmmode\pgfmanualnormalbar\else\expandafter\verb\expandafter|\fi}}
}
\newenvironment{pgflayout}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\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{sysanimateattribute}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\texttt{\string\pgfsysanimate\char`\{\declare{#1}\char`\}}%
}
\index{#1@\protect\texttt{#1} system layer animation attribute}%
\index{Animation attributes (system layer)!#1@\protect\texttt{#1}}%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{animateattribute}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\texttt{\string\pgfanimateattribute\char`\{\declare{#1}\char`\}\marg{options}}%
}
\index{#1@\protect\texttt{#1} basic layer animation attribute}%
\index{Animation attributes (basic layer)!#1@\protect\texttt{#1}}%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{tikzanimateattribute}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\foreach \attr in{#1} {\expandafter\pgfmanualpdflabel\expandafter{\attr}{}}%
\textbf{Animation attribute} \foreach \attr[count=\i]
in{#1}{{\ifnum\i>1 \textbf,\fi} \texttt{:\declare{\attr}}}%
}
\foreach\attr in{#1}{%
\edef\indexcall{%
\noexpand\index{\attr@\noexpand\protect\noexpand\texttt{\attr} animation attribute}%
\noexpand\index{Animation attributes!\attr@\noexpand\protect\noexpand\texttt{\attr}}%
}%
\indexcall%
}%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{command}[1]{
\begin{pgfmanualentry}
\extractcommand#1\@@
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\makeatletter
\def\includeluadocumentationof#1{
\directlua{require 'pgf.manual.DocumentParser'}
\directlua{pgf.manual.DocumentParser.include '#1'}
}
\newenvironment{luageneric}[4]{
\pgfmanualentry
\pgfmanualentryheadline{#4 \texttt{#1\declare{#2}}#3}
\index{#2@\protect\texttt{#2} (Lua)}%
\def\temp{#1}
\ifx\temp\pgfutil@empty\else
\index{#1@\protect\texttt{#1}!#2@\protect\texttt{#2} (Lua)}%
\fi
\pgfmanualbody
}{\endpgfmanualentry}
\newenvironment{luatable}[3]{
\medskip
\luageneric{#1}{#2}{ (declared in \texttt{#3})}{\textbf{Lua table}}
}{\endluageneric}
\newenvironment{luafield}[1]{
\pgfmanualentry
\pgfmanualentryheadline{Field \texttt{\declare{#1}}}
\pgfmanualbody
}{\endpgfmanualentry}
\newenvironment{lualibrary}[1]{
\pgfmanualentry
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Graph Drawing Library} \texttt{\declare{#1}}%
}
\index{#1@\protect\texttt{#1} graph drawing library}%
\index{Libraries!#1@\protect\texttt{#1}}%
\index{Graph drawing libraries!#1@\protect\texttt{#1}}%
\vskip.25em
{\ttfamily\char`\\usegdlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX\space and plain \TeX}\\
{\ttfamily\char`\\usegdlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}\smallskip\par
\pgfmanualbody
}{\endpgfmanualentry}
\newenvironment{luadeclare}[4]{
\pgfmanualentry
\def\manual@temp@default{#3}%
\def\manual@temp@initial{#4}%
\def\manual@temp@{#3#4}%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
{\ttfamily/graph
drawing/\declare{#1}\opt{=}}\opt{#2}\hfill%
\ifx\manual@temp@\pgfutil@empty\else%
(\ifx\manual@temp@default\pgfutil@empty\else%
default {\ttfamily #3}\ifx\manual@temp@initial\pgfutil@empty\else, \fi%
\fi%
\ifx\manual@temp@initial\pgfutil@empty\else%
initially {\ttfamily #4}%
\fi%
)\fi%
}%
\index{#1@\protect\texttt{#1} key}%
\pgfmanualbody
\gdef\myname{#1}%
% \keyalias{tikz}
% \keyalias{tikz/graphs}
}{\endpgfmanualentry}
\newenvironment{luadeclarestyle}[4]{
\pgfmanualentry
\def\manual@temp@para{#2}%
\def\manual@temp@default{#3}%
\def\manual@temp@initial{#4}%
\def\manual@temp@{#3#4}%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
{\ttfamily/graph drawing/\declare{#1}}\ifx\manual@temp@para\pgfutil@empty\else\opt{\texttt=}\opt{#2}\fi\hfill%
(style\ifx\manual@temp@\pgfutil@empty\else, %
\ifx\manual@temp@default\pgfutil@empty\else%
default {\ttfamily #3}\ifx\manual@temp@initial\pgfutil@empty\else, \fi%
\fi%
\ifx\manual@temp@initial\pgfutil@empty\else%
initially {\ttfamily #4}%
\fi%
\fi)%
}%
\index{#1@\protect\texttt{#1} key}%
\pgfmanualbody%
\gdef\myname{#1}%
% \keyalias{tikz}
% \keyalias{tikz/graphs}
}{\endpgfmanualentry}
\newenvironment{luanamespace}[2]{
\luageneric{#1}{#2}{}{\textbf{Lua namespace}}
}{\endluageneric}
\newenvironment{luafiledescription}[1]{}{}
\newenvironment{luacommand}[4]{
\hypertarget{pgf/lua/#1}{\luageneric{#2}{#3}{\texttt{(#4)}}{\texttt{function}}}
}{\endluageneric}
\newenvironment{luaparameters}{\par\emph{Parameters:}%
\parametercount=0\relax%
\let\item=\parameteritem%
\let\list=\restorelist%
}
{\par
}
\newenvironment{luareturns}{\par\emph{Returns:}%
\parametercount=0\relax%
\let\item=\parameteritem%
\let\list=\restorelist%
}
{\par
}
\newcount\parametercount
\newenvironment{parameterdescription}{\unskip%
\parametercount=0\relax%
\let\item=\parameteritem%
\let\list=\restorelist%
}
{\par
}
\let\saveditemcommand=\item
\let\savedlistcommand=\list
\def\denselist#1#2{\savedlistcommand{#1}{#2}\parskip0pt\itemsep0pt}
\def\restorelist{\let\item=\saveditemcommand\denselist}
\def\parameteritem{\pgfutil@ifnextchar[\parameteritem@{}}%}
\def\parameteritem@[#1]{\advance\parametercount by1\relax\hskip0.15em plus 1em\emph{\the\parametercount.}\kern1ex\def\test{#1}\ifx\test\pgfutil@empty\else#1\kern.5em\fi}
\newenvironment{commandlist}[1]{%
\begin{pgfmanualentry}
\foreach \xx in {#1} {%
\expandafter\extractcommand\xx\@@
}%
\pgfmanualbody
}{%
\end{pgfmanualentry}
}%
% \begin{internallist}[register]{\pgf@xa}
% \end{internallist}
%
% \begin{internallist}[register]{\pgf@xa,\pgf@xb}
% \end{internallist}
\newenvironment{internallist}[2][register]{%
\begin{pgfmanualentry}
\foreach \xx in {#2} {%
\expandafter\extractinternalcommand\expandafter{\xx}{#1}%
}%
\pgfmanualbody
}{%
\end{pgfmanualentry}
}%
\def\extractinternalcommand#1#2{%
\removeats{#1}%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{\textbackslash\strippedat}{}%
Internal #2 \declare{\texttt{\string#1}}}%
\index{Internals!\strippedat @\protect\myprintocmmand{\strippedat}}%
\index{\strippedat @\protect\myprintocmmand{\strippedat}}%
}
%% MW: START MATH MACROS
\def\mvar#1{{\ifmmode\textrm{\textit{#1}}\else\rmfamily\textit{#1}\fi}}
\makeatletter
\def\extractmathfunctionname#1{\extractmathfunctionname@#1(,)\tmpa\tmpb}
\def\extractmathfunctionname@#1(#2)#3\tmpb{\def\mathname{#1}}
\makeatother
\newenvironment{math-function}[1]{
\def\mathdefaultname{#1}
\extractmathfunctionname{#1}
\edef\mathurl{{math:\mathname}}\expandafter\hypertarget\expandafter{\mathurl}{}%
\begin{pgfmanualentry}
\pgfmanualentryheadline{\texttt{#1}}%
\index{\mathname @\protect\texttt{\mathname} math function}%
\index{Math functions!\mathname @\protect\texttt{\mathname}}%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\pgfmanualemptytext{}
\def\pgfmanualvbarvbar{\char`\|\char`\|}
\newenvironment{math-operator}[4][]{%
\begin{pgfmanualentry}
\csname math#3operator\endcsname{#2}{#4}
\def\mathtest{#4}%
\ifx\mathtest\pgfmanualemptytext%
\def\mathtype{(#3 operator)}
\else%
\def\mathtype{(#3 operator; uses the \texttt{#4} function)}
\fi%
\pgfmanualentryheadline{\mathexample\hfill\mathtype}%
\def\mathtest{#1}%
\ifx\mathtest\pgfmanualemptytext%
\index{#2@\protect\texttt{#2} #3 math operator}%
\index{Math operators!#2@\protect\texttt{#2}}%
\fi%
\pgfmanualbody
}
{\end{pgfmanualentry}}
\newenvironment{math-operators}[5][]{%
\begin{pgfmanualentry}
\csname math#4operator\endcsname{#2}{#3}
\def\mathtest{#5}%
\ifx\mathtest\pgfmanualemptytext%
\def\mathtype{(#4 operators)}
\else%
\def\mathtype{(#4 operators; use the \texttt{#5} function)}
\fi%
\pgfmanualentryheadline{\mathexample\hfill\mathtype}%
\def\mathtest{#1}%
\ifx\mathtest\pgfmanualemptytext%
\index{#2#3@\protect\texttt{#2\protect\ #3} #4 math operators}%
\index{Math operators!#2#3@\protect\texttt{#2\protect\ #3}}%
\fi%
\pgfmanualbody
}
{\end{pgfmanualentry}}
\def\mathinfixoperator#1#2{%
\def\mathoperator{\texttt{#1}}%
\def\mathexample{\mvar{x}\space\texttt{#1}\space\mvar{y}}%
}
\def\mathprefixoperator#1#2{%
\def\mathoperator{\texttt{#1}}%
\def\mathexample{\texttt{#1}\mvar{x}}%
}
\def\mathpostfixoperator#1#2{%
\def\mathoperator{\texttt{#1}}
\def\mathexample{\mvar{x}\texttt{#1}}%
}
\def\mathgroupoperator#1#2{%
\def\mathoperator{\texttt{#1\ #2}}%
\def\mathexample{\texttt{#1}\mvar{x}\texttt{#2}}%
}
\expandafter\let\csname matharray accessoperator\endcsname=\mathgroupoperator
\expandafter\let\csname matharrayoperator\endcsname=\mathgroupoperator
\def\mathconditionaloperator#1#2{%
\def\mathoperator{#1\space#2}
\def\mathexample{\mvar{x}\ \texttt{#1}\ \mvar{y}\ {\texttt{#2}}\ \mvar{z}}
}
\newcommand\mathcommand[1][\mathdefaultname]{%
\expandafter\makemathcommand#1(\empty)\stop%
\expandafter\extractcommand\mathcommandname\@@%
\medskip
}
\makeatletter
\def\makemathcommand#1(#2)#3\stop{%
\expandafter\def\expandafter\mathcommandname\expandafter{\csname pgfmath#1\endcsname}%
\ifx#2\empty%
\else%
\@makemathcommand#2,\stop,
\fi}
\def\@makemathcommand#1,{%
\ifx#1\stop%
\else%
\expandafter\def\expandafter\mathcommandname\expandafter{\mathcommandname{\ttfamily\char`\{#1\char`\}}}%
\expandafter\@makemathcommand%
\fi}
\makeatother
\def\calcname{\textsc{calc}}
\newenvironment{math-keyword}[1]{
\extracttikzmathkeyword#1@
\begin{pgfmanualentry}
\pgfmanualentryheadline{\texttt{\color{red}\mathname}\mathrest}%
\index{\mathname @\protect\texttt{\mathname} tikz math function}%
\index{TikZ math functions!\mathname @\protect\texttt{\mathname}}%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\extracttikzmathkeyword#1#2@{%
\def\mathname{#1}%
\def\mathrest{#2}%
}
%% MW: END MATH MACROS
\def\extractcommand#1#2\@@{%
\removeats{#1}%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{\textbackslash\strippedat}{}%
\declare{\expandafter\texttt\expandafter{\string#1}}#2%
}%
\index{\strippedat @\protect\myprintocmmand{\strippedat}}
}
\def\luaextractcommand#1#2\relax{%
\declare{\texttt{\string#1}}#2\par%
% \removeats{#1}%
% \index{\strippedat @\protect\myprintocmmand{\strippedat}}
% \pgfmanualpdflabel{\textbackslash\strippedat}{}%
}
% \begin{environment}{{name}\marg{arguments}}
\renewenvironment{environment}[1]{
\begin{pgfmanualentry}
\extractenvironement#1\@@
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\extractenvironement#1#2\@@{%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
{\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{%
\pgfmanualpdflabel{#1}{}%
\textbf{Shape} {\ttfamily\declare{#1}}%
}%
\index{#1@\protect\texttt{#1} shape}%
\index{Shapes!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{pictype}[2]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Pic type} {\ttfamily\declare{#1}#2}%
}%
\index{#1@\protect\texttt{#1} pic type}%
\index{Pic Types!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{shading}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Shading} {\ttfamily\declare{#1}}}%
\index{#1@\protect\texttt{#1} shading}%
\index{Shadings!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{graph}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Graph} {\ttfamily\declare{#1}}}%
\index{#1@\protect\texttt{#1} graph}%
\index{Graphs!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{gdalgorithm}[2]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Layout} {\ttfamily/graph drawing/\declare{#1}\opt{=}}\opt{\meta{options}}}%
\index{#1@\protect\texttt{#1} layout}%
\index{Layouts!#1@\protect\texttt{#1}}%
\foreach \algo in {#2}
{\edef\marshal{\noexpand\index{#2@\noexpand\protect\noexpand\texttt{#2} algorithm}}\marshal}%
\index{Graph drawing layouts!#1@\protect\texttt{#1}}
\item{\small alias {\ttfamily/tikz/#1}}\par
\item{\small alias {\ttfamily/tikz/graphs/#1}}\par
\item{\small Employs {\ttfamily algorithm=#2}}\par
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{dataformat}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Format} {\ttfamily\declare{#1}}}%
\index{#1@\protect\texttt{#1} format}%
\index{Formats!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{stylesheet}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Style sheet} {\ttfamily\declare{#1}}}%
\index{#1@\protect\texttt{#1} style sheet}%
\index{Style sheets!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{handler}[1]{
\begin{pgfmanualentry}
\extracthandler#1\@nil%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\gobble#1{}
\def\extracthandler#1#2\@nil{%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{/handlers/#1}{}%
\textbf{Key handler} \meta{key}{\ttfamily/\declare{#1}}#2}%
\index{\gobble#1@\protect\texttt{#1} handler}%
\index{Key handlers!#1@\protect\texttt{#1}}
}
\makeatletter
\newenvironment{stylekey}[1]{
\begin{pgfmanualentry}
\def\extrakeytext{style, }
\extractkey#1\@nil%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\choicesep{$\vert$}%
\def\choicearg#1{\texttt{#1}}
\newif\iffirstchoice
% \mchoice{choice1,choice2,choice3}
\newcommand\mchoice[1]{%
\begingroup
\firstchoicetrue
\foreach \mchoice@ in {#1} {%
\iffirstchoice
\global\firstchoicefalse
\else
\choicesep
\fi
\choicearg{\mchoice@}%
}%
\endgroup
}%
% \begin{key}{/path/x=value}
% \begin{key}{/path/x=value (initially XXX)}
% \begin{key}{/path/x=value (default XXX)}
\newenvironment{key}[1]{
\begin{pgfmanualentry}
\def\extrakeytext{}
%\def\altpath{\emph{\color{gray}or}}%
\extractkey#1\@nil%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
% \insertpathifneeded{a key}{/pgf} -> assign mykey={/pgf/a key}
% \insertpathifneeded{/tikz/a key}{/pgf} -> assign mykey={/tikz/a key}
%
% #1: the key
% #2: a default path (or empty)
\def\insertpathifneeded#1#2{%
\def\insertpathifneeded@@{#2}%
\ifx\insertpathifneeded@@\empty
\def\mykey{#1}%
\else
\insertpathifneeded@#2\@nil
\ifpgfutil@in@
\def\mykey{#2/#1}%
\else
\def\mykey{#1}%
\fi
\fi
}%
\def\insertpathifneeded@#1#2\@nil{%
\def\insertpathifneeded@@{#1}%
\def\insertpathifneeded@@@{/}%
\ifx\insertpathifneeded@@\insertpathifneeded@@@
\pgfutil@in@true
\else
\pgfutil@in@false
\fi
}%
% \begin{keylist}[default path]
% {/path/option 1=value,/path/option 2=value2}
% \end{keylist}
\newenvironment{keylist}[2][]{%
\begin{pgfmanualentry}
\def\extrakeytext{}%
\foreach \xx in {#2} {%
\expandafter\insertpathifneeded\expandafter{\xx}{#1}%
\expandafter\extractkey\mykey\@nil%
}%
\pgfmanualbody
}{%
\end{pgfmanualentry}
}%
\def\extractkey#1\@nil{%
\pgfutil@in@={#1}%
\ifpgfutil@in@%
\extractkeyequal#1\@nil
\else%
\pgfutil@in@{(initial}{#1}%
\ifpgfutil@in@%
\extractequalinitial#1\@nil%
\else
\pgfmanualentryheadline{%
\def\mykey{#1}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue%
\pgfmanualdecomposecount=0\relax%
\decompose#1/\nil%
{\ttfamily\declare{#1}}\hfill(\extrakeytext no value)}%
\fi
\fi%
}
\def\extractkeyequal#1=#2\@nil{%
\pgfutil@in@{(default}{#2}%
\ifpgfutil@in@%
\extractdefault{#1}#2\@nil%
\else%
\pgfutil@in@{(initial}{#2}%
\ifpgfutil@in@%
\extractinitial{#1}#2\@nil%
\else
\pgfmanualentryheadline{%
\def\mykey{#1}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue%
\pgfmanualdecomposecount=0\relax%
\decompose#1/\nil%
{\ttfamily\declare{#1}=}#2\hfill(\extrakeytext no default)}%
\fi%
\fi%
}
\def\extractdefault#1#2(default #3)\@nil{%
\pgfmanualentryheadline{%
\def\mykey{#1}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue%
\pgfmanualdecomposecount=0\relax%
\decompose#1/\nil%
{\ttfamily\declare{#1}\opt{=}}\opt{#2}\hfill (\extrakeytext default {\ttfamily#3})}%
}
\def\extractinitial#1#2(initially #3)\@nil{%
\pgfmanualentryheadline{%
\def\mykey{#1}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue%
\pgfmanualdecomposecount=0\relax%
\decompose#1/\nil%
{\ttfamily\declare{#1}=}#2\hfill (\extrakeytext no default, initially {\ttfamily#3})}%
}
\def\extractequalinitial#1 (initially #2)\@nil{%
\pgfmanualentryheadline{%
\def\mykey{#1}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue%
\pgfmanualdecomposecount=0\relax%
\decompose#1/\nil%
{\ttfamily\declare{#1}}\hfill (\extrakeytext initially {\ttfamily#2})}%
}
% Introduces a key alias '/#1/<name of current key>'
% to be used inside of \begin{key} ... \end{key}
\def\keyalias#1{\vspace{-3pt}\item{\small alias {\ttfamily/#1/\myname}}\vspace{-2pt}\par
\pgfmanualpdflabel{/#1/\myname}{}%
}
\newif\iffirsttime
\newcount\pgfmanualdecomposecount
\makeatother
\def\decompose/#1/#2\nil{%
\def\test{#2}%
\ifx\test\empty%
% aha.
\index{#1@\protect\texttt{#1} key}%
\index{\mypath#1@\protect\texttt{#1}}%
\gdef\myname{#1}%
\pgfmanualpdflabel{#1}{}
\else%
\advance\pgfmanualdecomposecount by1\relax%
\ifnum\pgfmanualdecomposecount>2\relax%
\decomposetoodeep#1/#2\nil%
\else%
\iffirsttime%
\begingroup%
% also make a pdf link anchor with full key path.
\def\hyperlabelwithoutslash##1/\nil{%
\pgfmanualpdflabel{##1}{}%
}%
\hyperlabelwithoutslash/#1/#2\nil%
\endgroup%
\def\mypath{#1@\protect\texttt{/#1/}!}%
\firsttimefalse%
\else%
\expandafter\def\expandafter\mypath\expandafter{\mypath#1@\protect\texttt{#1/}!}%
\fi%
\def\firsttime{}%
\decompose/#2\nil%
\fi%
\fi%
}
\def\decomposetoodeep#1/#2/\nil{%
% avoid too-deep nesting in index
\index{#1/#2@\protect\texttt{#1/#2} key}%
\index{\mypath#1/#2@\protect\texttt{#1/#2}}%
\decomposefindlast/#1/#2/\nil%
}
\makeatletter
\def\decomposefindlast/#1/#2\nil{%
\def\test{#2}%
\ifx\test\pgfutil@empty%
\gdef\myname{#1}%
\else%
\decomposefindlast/#2\nil%
\fi%
}
\makeatother
\def\indexkey#1{%
\def\mypath{}%
\decompose#1/\nil%
}
\newenvironment{predefinedmethod}[1]{
\begin{pgfmanualentry}
\extractpredefinedmethod#1\@nil
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\extractpredefinedmethod#1(#2)\@nil{%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
Method \declare{\ttfamily #1}\texttt(#2\texttt) \hfill(predefined for all classes)}
\index{#1@\protect\texttt{#1} method}%
\index{Methods!#1@\protect\texttt{#1}}
}
\newenvironment{ooclass}[1]{
\begin{pgfmanualentry}
\def\currentclass{#1}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{Class} \declare{\texttt{#1}}}
\index{#1@\protect\texttt{#1} class}%
\index{Class #1@Class \protect\texttt{#1}}%
\index{Classes!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{method}[1]{
\begin{pgfmanualentry}
\extractmethod#1\@nil
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\extractmethod#1(#2)\@nil{%
\def\test{#1}
\ifx\test\currentclass
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
Constructor \declare{\ttfamily #1}\texttt(#2\texttt)}
\else
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
Method \declare{\ttfamily #1}\texttt(#2\texttt)}
\fi
\index{#1@\protect\texttt{#1} method}%
\index{Methods!#1@\protect\texttt{#1}}
\index{Class \currentclass!#1@\protect\texttt{#1}}%
}
\newenvironment{classattribute}[1]{
\begin{pgfmanualentry}
\extractattribute#1\@nil
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\extractattribute#1=#2;\@nil{%
\def\test{#2}%
\ifx\test\@empty
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
Private attribute \declare{\ttfamily #1} \hfill (initially empty)}
\else
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
Private attribute \declare{\ttfamily #1} \hfill (initially {\ttfamily #2})}
\fi
\index{#1@\protect\texttt{#1} attribute}%
\index{Attributes!#1@\protect\texttt{#1}}
\index{Class \currentclass!#1@\protect\texttt{#1}}%
}
\newenvironment{predefinednode}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{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{%
\pgfmanualpdflabel{#1}{}%
\textbf{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{\textbf{Snake} {\ttfamily\declare{#1}}}%
\index{#1@\protect\texttt{#1} snake}%
\index{Snakes!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{decoration}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{\textbf{Decoration} {\ttfamily\declare{#1}}}%
\index{#1@\protect\texttt{#1} decoration}%
\index{Decorations!#1@\protect\texttt{#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\pgfmanualbar{\char`\|}
\makeatletter
\newenvironment{pathoperation}[3][]{
\begin{pgfmanualentry}
\def\pgfmanualtest{#1}%
\pgfmanualentryheadline{%
\ifx\pgfmanualtest\@empty%
\pgfmanualpdflabel{#2}{}%
\fi%
\textcolor{gray}{{\ttfamily\char`\\path}\
\ \dots}
\declare{\texttt{\noligs{#2}}}#3\ \textcolor{gray}{\dots\texttt{;}}}%
\ifx\pgfmanualtest\@empty%
\index{#2@\protect\texttt{#2} path operation}%
\index{Path operations!#2@\protect\texttt{#2}}%
\fi%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{datavisualizationoperation}[3][]{
\begin{pgfmanualentry}
\def\pgfmanualtest{#1}%
\pgfmanualentryheadline{%
\ifx\pgfmanualtest\@empty%
\pgfmanualpdflabel{#2}{}%
\fi%
\textcolor{gray}{{\ttfamily\char`\\datavisualization}\
\ \dots}
\declare{\texttt{\noligs{#2}}}#3\ \textcolor{gray}{\dots\texttt{;}}}%
\ifx\pgfmanualtest\@empty%
\index{#2@\protect\texttt{#2} (data visualization)}%
\index{Data visualization!#2@\protect\texttt{#2}}%
\fi%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\makeatother
\def\doublebs{\texttt{\char`\\\char`\\}}
\newenvironment{package}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
{\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{pgfmodule}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
{\ttfamily\char`\\usepgfmodule\char`\{\declare{#1}\char`\}\space\space\space
\char`\%\space\space \LaTeX\space and plain \TeX\space and pure pgf}}
\index{#1@\protect\texttt{#1} module}%
\index{Modules!#1@\protect\texttt{#1}}%
\pgfmanualentryheadline{{\ttfamily\char`\\usepgfmodule[\declare{#1}]\space\space \char`\%\space\space Con\TeX t\space and pure pgf}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{pgflibrary}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{\tikzname\ Library} \texttt{\declare{#1}}}
\index{#1@\protect\texttt{#1} library}%
\index{Libraries!#1@\protect\texttt{#1}}%
\vskip.25em%
{{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space
\char`\%\space\space \LaTeX\space and plain \TeX\space and pure pgf}}\\
{{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space Con\TeX t\space and pure pgf}}\\
{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space
\char`\%\space\space \LaTeX\space and plain \TeX\space when using \tikzname}}\\
{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space
\char`\%\space\space Con\TeX t\space when using \tikzname}}\\[.5em]
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{purepgflibrary}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{{\small PGF} Library} \texttt{\declare{#1}}}
\index{#1@\protect\texttt{#1} library}%
\index{Libraries!#1@\protect\texttt{#1}}%
\vskip.25em%
{{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space
\char`\%\space\space \LaTeX\space and plain \TeX}}\\
{{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space Con\TeX t}}\\[.5em]
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\newenvironment{tikzlibrary}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{#1}{}%
\textbf{\tikzname\ Library} \texttt{\declare{#1}}}
\index{#1@\protect\texttt{#1} library}%
\index{Libraries!#1@\protect\texttt{#1}}%
\vskip.25em%
{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX\space and plain \TeX}}\\
{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}}\\[.5em]
\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\eps{\texttt{eps}}
\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\indexoption#1{%
\index{#1@\protect\texttt{#1} option}%
\index{Graphic options and styles!#1@\protect\texttt{#1}}%
}
\def\itemcalendaroption#1{\item \declare{\texttt{#1}}%
\index{#1@\protect\texttt{#1} date test}%
\index{Date tests!#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 29\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}
\newenvironment{arrowtipsimple}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{\textbf{Arrow Tip Kind} {\ttfamily#1}}
\index{#1@\protect\texttt{#1} arrow tip}%
\index{Arrow tips!#1@\protect\texttt{#1}}%
\def\currentarrowtype{#1}
\pgfmanualbody}
{
\end{pgfmanualentry}
}
\newenvironment{arrowtip}[4]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{\textbf{Arrow Tip Kind} {\ttfamily#1}}
\index{#1@\protect\texttt{#1} arrow tip}%
\index{Arrow tips!#1@\protect\texttt{#1}}%
\pgfmanualbody
\def\currentarrowtype{#1}
\begin{minipage}[t]{10.25cm}
#2
\end{minipage}\hskip5mm\begin{minipage}[t]{4.75cm}
\leavevmode\vskip-2em
\tikz{
\draw [black!50,line width=5mm,-{#1[#3,color=black]}] (-4,0) -- (0,0);
\foreach \action in {#4}
{ \expandafter\processaction\action\relax }
}
\end{minipage}\par\smallskip
}
{
\end{pgfmanualentry}
}
\newenvironment{arrowcap}[5]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{\textbf{Arrow Tip Kind} {\ttfamily#1}}
\index{#1@\protect\texttt{#1} arrow tip}%
\index{Arrow tips!#1@\protect\texttt{#1}}%
\pgfmanualbody
\def\currentarrowtype{#1}
\begin{minipage}[t]{10.25cm}
#2
\end{minipage}\hskip5mm\begin{minipage}[t]{4.75cm}
\leavevmode\vskip-2em
\tikz{
\path [tips, line width=10mm,-{#1[#3,color=black]}] (-4,0) -- (0,0);
\draw [line width=10mm,black!50] (-3,0) -- (#5,0);
\foreach \action in {#4}
{ \expandafter\processaction\action\relax }
}
\end{minipage}\par\smallskip
}
{
\end{pgfmanualentry}
}
\newenvironment{pattern}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{\textbf{Pattern} {\ttfamily#1}}
\index{#1@\protect\texttt{#1} pattern}%
\index{Patterns!#1@\protect\texttt{#1}}%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\processaction#1=#2\relax{
\expandafter\let\expandafter\pgf@temp\csname manual@action@#1\endcsname
\ifx\pgf@temp\relax\else
\pgf@temp#2/0/\relax
\fi
}
\def\manual@action@length#1/#2/#3\relax{%
\draw [red,|<->|,semithick,xshift=#2] ([yshift=4pt]current bounding
box.north -| -#1,0) coordinate (last length) -- node
[above=-2pt] {|length|} ++(#1,0);
}
\def\manual@action@width#1/#2/#3\relax{%
\draw [overlay, red,|<->|,semithick] (.5,-#1/2) -- node [below,sloped] {|width|} (.5,#1/2);
}
\def\manual@action@inset#1/#2/#3\relax{%
\draw [red,|<->|,semithick,xshift=#2] ([yshift=-4pt]current bounding
box.south -| last length) -- node [below] {|inset|} ++(#1,0);
}
\newenvironment{arrowexamples}
{\begin{tabbing}
\hbox to \dimexpr\linewidth-5.5cm\relax{\emph{Appearance of the below at line width} \hfil} \=
\hbox to 1.9cm{\emph{0.4pt}\hfil} \= \hbox to 2cm{\emph{0.8pt}\hfil} \= \emph{1.6pt} \\
}
{\end{tabbing}\vskip-1em}
\newenvironment{arrowcapexamples}
{\begin{tabbing}
\hbox to \dimexpr\linewidth-5.5cm\relax{\emph{Appearance of the below at line width} \hfil} \=
\hbox to 1.9cm{\emph{1ex}\hfil} \= \hbox to 2cm{\emph{1em}\hfil} \\
}
{\end{tabbing}\vskip-1em}
\def\arrowcapexample#1[#2]{\def\temp{#1}\ifx\temp\pgfutil@empty\arrowcapexample@\currentarrowtype[{#2}]\else\arrowcapexample@#1[{#2}]\fi}
\def\arrowcapexample@#1[#2]{%
{\sfcode`\.1000\small\texttt{#1[#2]}} \>
\kern-.5ex\tikz [baseline,>={#1[#2]}] \draw [line
width=1ex,->] (0,.5ex) -- (2em,.5ex); \>
\kern-.5em\tikz [baseline,>={#1[#2]}] \draw [line
width=1em,->] (0,.5ex) -- (2em,.5ex); \\
}
\def\arrowexample#1[#2]{\def\temp{#1}\ifx\temp\pgfutil@empty\arrowexample@\currentarrowtype[{#2}]\else\arrowexample@#1[{#2}]\fi}
\def\arrowexample@#1[#2]{%
{\sfcode`\.1000\small\texttt{#1[#2]}} \>
\tikz [baseline,>={#1[#2]}] \draw [line
width=0.4pt,->] (0,.5ex) -- (2em,.5ex); thin \>
\tikz [baseline,>={#1[#2]}] \draw [line
width=0.8pt,->] (0,.5ex) -- (2em,.5ex); \textbf{thick} \>
\tikz [baseline,>={#1[#2]}] \draw [line
width=1.6pt,->] (0,.5ex) -- (3em,.5ex); \\
}
\def\arrowexampledup[#1]{\arrowexample[{#1] \currentarrowtype[}]}
\def\arrowexampledupdot[#1]{\arrowexample[{#1] . \currentarrowtype[}]}
\def\arrowexampledouble#1[#2]{\def\temp{#1}\ifx\temp\pgfutil@empty\arrowexampledouble@\currentarrowtype[{#2}]\else\arrowexampledouble@#1[{#2}]\fi}
\def\arrowexampledouble@#1[#2]{%
{\sfcode`\.1000\small\texttt{#1[#2]} on double line} \>
\tikz [baseline,>={#1[#2]}]
\draw [double equal sign distance,line width=0.4pt,->] (0,.5ex) -- (2em,.5ex); thin \>
\tikz [baseline,>={#1[#2]}]
\draw [double equal sign distance,line width=0.8pt,->] (0,.5ex) -- (2em,.5ex); \textbf{thick} \>
\tikz [baseline,>={#1[#2]}]
\draw [double equal sign distance, line width=1.6pt,->] (0,.5ex) -- (3em,.5ex); \\
}
\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 (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture} and thin
\begin{tikzpicture}[arrows={#1-#1},thin,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture}
}
\newcommand\symarrowdouble[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 (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture}
and thin
\begin{tikzpicture}[arrows={#1-#1},thin,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture}, double
\begin{tikzpicture}[arrows={#1-#1},thick,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw[double,double equal sign distance] (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture} and
\begin{tikzpicture}[arrows={#1-#1},thin,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw[double,double equal sign distance] (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 (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture} and thin
\begin{tikzpicture}[arrows={#1-#2},thin,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture}
}
\newcommand\sarrowdouble[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 (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture} and thin
\begin{tikzpicture}[arrows={#1-#2},thin,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture}, double
\begin{tikzpicture}[arrows={#1-#2},thick,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw[double,double equal sign distance] (0pt,.5ex) -- (1cm,.5ex);
\end{tikzpicture} and
\begin{tikzpicture}[arrows={#1-#2},thin,baseline]
\useasboundingbox (-1mm,-0.5ex) rectangle (1.1cm,2ex);
\fill [black!15] (1cm,-.5ex) rectangle (1.1cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\draw[double,double equal sign distance] (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 (-1mm,-0.5ex) rectangle (1.6cm,2ex);
\fill [black!15] (1.5cm,-.5ex) rectangle (1.6cm,1.5ex) (-1mm,-.5ex) rectangle (0mm,1.5ex) ;
\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{\noligs{#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{\noligs{#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
% 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}}
\gdef\showreturn{\show^^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
% Define tab-implementation functions
% \codeexample@tabinit@replacementchars@
% and
% \codeexample@tabinit@catcode@
%
% They should ONLY be used in case that tab replacement is active.
%
% This here is merely a preparation step.
%
% Idea:
% \codeexample@tabinit@catcode@ will make TAB active
% and
% \codeexample@tabinit@replacementchars@ will insert as many spaces as
% /codeexample/tabsize contains.
{
\catcode`\^^I=13
% ATTENTION: do NOT use tabs in these definitions!!
\gdef\codeexample@tabinit@replacementchars@{%
\begingroup
\count0=\pgfkeysvalueof{/codeexample/tabsize}\relax
\toks0={}%
\loop
\ifnum\count0>0
\advance\count0 by-1
\toks0=\expandafter{\the\toks0\ }%
\repeat
\xdef\codeexample@tabinit@replacementchars@@{\the\toks0}%
\endgroup
\let^^I=\codeexample@tabinit@replacementchars@@
}%
\gdef\codeexample@tabinit@catcode@{\catcode`\^^I=13}%
}%
% Called after any options have been set. It assigns
% \codeexample@tabinit@catcode
% and
% \codeexample@tabinit@replacementchars
% which are used inside of
%\begin{codeexample}
% ...
%\end{codeexample}
%
% \codeexample@tabinit@catcode is either \relax or it makes tab
% active.
%
% \codeexample@tabinit@replacementchars is either \relax or it inserts
% a proper replacement sequence for tabs (as many spaces as
% configured)
\def\codeexample@tabinit{%
\ifnum\pgfkeysvalueof{/codeexample/tabsize}=0\relax
\let\codeexample@tabinit@replacementchars=\relax
\let\codeexample@tabinit@catcode=\relax
\else
\let\codeexample@tabinit@catcode=\codeexample@tabinit@catcode@
\let\codeexample@tabinit@replacementchars=\codeexample@tabinit@replacementchars@
\fi
}
\newif\ifpgfmanualtikzsyntaxhilighting
\pgfqkeys{/codeexample}{%
width/.code= {\setlength\codeexamplewidth{#1}},
graphic/.code= {\colorlet{graphicbackground}{#1}},
code/.code= {\colorlet{codebackground}{#1}},
execute code/.is if=code@execute,
hidden/.is if=code@hidden,
code only/.code= {\code@executefalse},
setup code/.code= {\pgfmanual@setup@codetrue\code@executefalse},
multipage/.code= {\code@executefalse\pgfmanual@multipage@codetrue},
pre/.store in=\code@pre,
post/.store in=\code@post,
% #1 is the *complete* environment contents as it shall be
% typeset. In particular, the catcodes are NOT the normal ones.
typeset listing/.code= {#1},
render instead/.store in=\code@render,
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},
tabsize/.initial=0,% FIXME : this here is merely used for indentation. It is just a TAB REPLACEMENT.
every codeexample/.style={width=4cm+7pt, tikz syntax=true},
from file/.code={\codeexamplefromfiletrue\def\codeexamplesource{#1}},
tikz syntax/.is if=pgfmanualtikzsyntaxhilighting,
animation list/.store in=\code@animation@list,
animation pre/.store in=\code@animation@pre,
animation post/.store in=\code@animation@post,
animation scale/.store in=\pgfmanualanimscale,
animation bb/.style={
animation pre={
\tikzset{
every picture/.style={
execute at begin picture={
\useasboundingbox[clip] #1;}
}
}
}
},
preamble/.store in=\code@preamble,
}
\def\pgfmanualanimscale{.5}
\newread\examplesource
% Opening, reading and closing the results file
\def\opensource#1{
\immediate\openin\examplesource=#1
}
\def\do@codeexamplefromfile{%
\immediate\openin\examplesource\expandafter{\codeexamplesource}%
\def\examplelines{}%
\readexamplelines
\closein\examplesource
\expandafter\endofcodeexample\expandafter{\examplelines}%
}
\def\readexamplelines{
\ifeof\examplesource%
\else
\immediate\read\examplesource to \exampleline
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\examplelines\expandafter\expandafter\expandafter{\expandafter\examplelines\exampleline}
\expandafter\readexamplelines%
\fi
}
\let\code@animation@pre\pgfutil@empty
\let\code@animation@post\pgfutil@empty
\let\code@animation@list\pgfutil@empty
\let\code@pre\pgfutil@empty
\let\code@post\pgfutil@empty
\let\code@render\pgfutil@empty
\let\code@preamble\pgfutil@empty
\def\code@catcode@hook{}
\newif\ifpgfmanual@multipage@code
\newif\ifpgfmanual@setup@code
\newif\ifcodeexamplefromfile
\newdimen\codeexamplewidth
\newif\ifcode@execute
\newif\ifcode@hidden
\newbox\codeexamplebox
\def\codeexample[#1]{%
\global\let\pgfmanual@do@this\relax%
\aftergroup\pgfmanual@do@this%
\begingroup%
\code@executetrue
\pgfqkeys{/codeexample}{every codeexample,#1}%
\pgfmanualswitchoncolors%
\ifcodeexamplefromfile\begingroup\fi
\codeexample@tabinit% assigns \codeexample@tabinit@[catcode,replacementchars]
\parindent0pt
\begingroup%
\par% this \par is not inside \ifcode@hidden because we want to switch to vmode
\ifcode@hidden\else
\medskip%
\fi
\let\do\@makeother%
\dospecials%
\obeylines%
\@vobeyspaces%
\catcode`\%=13%
\catcode`\^^M=13%
\code@catcode@hook%
\codeexample@tabinit@catcode
\relax%
\ifcodeexamplefromfile%
\expandafter\do@codeexamplefromfile%
\else%
\expandafter\find@example%
\fi}
\def\endofcodeexample#1{%
\endgroup%
\ifpgfmanual@setup@code%
\gdef\pgfmanual@do@this{%
{%
\returntospace%
\commenthandler%
\xdef\code@temp{#1}% removes returns and comments
}%
\edef\pgfmanualmcatcode{\the\catcode`\^^M}%
\catcode`\^^M=9\relax%
\expandafter\scantokens\expandafter{\code@temp}%
\catcode`\^^M=\pgfmanualmcatcode%
}%
\fi%
\ifcode@hidden\else
\ifcode@execute%
\setbox\codeexamplebox=\hbox{%
\ifx\code@render\pgfutil@empty%
{%
{%
\returntospace%
\commenthandler%
\xdef\code@temp{#1}% removes returns and comments
}%
\catcode`\^^M=9%
\colorbox{graphicbackground}{\color{black}\ignorespaces%
\code@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@post\ignorespaces}%
}%
\else%
\global\let\code@temp\code@render%
\colorbox{graphicbackground}{\color{black}\ignorespaces%
\code@render}%
\fi%
}%
\ifx\code@animation@list\pgfutil@empty%
\else%
\setbox\codeexampleboxanim=\vbox{%
\rightskip0pt\leftskip0pt plus1filll%
\ifdim\wd\codeexamplebox>\codeexamplewidth%
\else%
\hsize\codeexamplewidth%
\advance\hsize by2cm%
\fi%
\leavevmode\catcode`\^^M=9%
\foreach \pgfmanualtime/\pgfmanualtimehow in\code@animation@list{%
\setbox\codeexampleboxanim=\hbox{\colorbox{animationgraphicbackground}{%
\tikzset{make snapshot of=\pgfmanualtime}%
\scalebox{\pgfmanualanimscale}{\color{black}\ignorespaces%
\code@animation@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@animation@post\ignorespaces}%
}}%
\space\raise4pt\hbox to0pt{\vrule width0pt height1em\hbox
to\wd\codeexampleboxanim{\hfil\scriptsize$t{=}\pgfmanualtimehow \mathrm s$\hfil}\hss}%
\lower\ht\codeexampleboxanim\box\codeexampleboxanim\hfil\penalty0\hskip0ptplus-1fil%
}%
}%
\setbox\codeexampleboxanim=\hbox{\hbox{}\hskip-2cm\box\codeexampleboxanim}%
\fi%
\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%
\vskip0pt%
\leavevmode%
\box\codeexampleboxanim%
\vskip-1ex
\leavevmode%
\end{minipage}%
\else%
\def\code@mid{\par}
\def\code@width{\linewidth-6pt}
\def\code@end{}
\fi%
\code@mid%
\ifpgfmanual@multipage@code%
{%
\pgfkeysvalueof{/codeexample/prettyprint/base color}%
\pgfmanualdolisting{#1}%
}%
\else%
\colorbox{codebackground}{%
\pgfkeysvalueof{/codeexample/prettyprint/base color}%
\begin{minipage}[t]{\code@width}%
\pgfmanualdolisting{#1}%
\end{minipage}}%
\fi%
\code@end%
\par%
\medskip
\fi
\endcodeexample\endgroup%
}
\def\endcodeexample{\endgroup}
\newbox\codeexampleboxanim
\def\pgfmanualdolisting#1{%
{%
\let\do\@makeother
\dospecials
\frenchspacing\@vobeyspaces
\normalfont\ttfamily\footnotesize
\typesetcomment%
\codeexample@tabinit@replacementchars
\@tempswafalse
\def\par{%
\if@tempswa
\leavevmode \null \@@par\penalty\interlinepenalty
\else
\@tempswatrue
\ifhmode\@@par\penalty\interlinepenalty\fi
\fi}%
\obeylines
\everypar \expandafter{\the\everypar \unpenalty}%
\ifx\code@preamble\pgfutil@empty\else
\pgfutil@tempdima=\hsize
\vbox{\hsize=\pgfutil@tempdima
\raggedright\scriptsize\detokenize\expandafter{\code@preamble}}%
\fi
\pgfkeysvalueof{/codeexample/typeset listing/.@cmd}{#1}\pgfeov
}%
}
\makeatother
\usepackage{pgfmanual}
% autoxref is now always on
% \makeatletter
% % \pgfautoxrefs will be defined by 'make dist'
% \pgfutil@ifundefined{pgfautoxrefs}{%
% \renewcommand\pgfmanualpdflabel[3][]{#3}% NO-OP
% \def\pgfmanualpdfref#1#2{#2}%
% \pgfkeys{
% /pdflinks/codeexample links=false,% DISABLED.
% }%
% }{}
% \makeatother
\newdimen\pgfmanualcslinkpreskip
% Styling of the pretty printer
\pgfkeys{
/codeexample/syntax hilighting/.style={
/codeexample/prettyprint/key name/.code={\textcolor{keycolor}{\pgfmanualpdfref{##1}{\noligs{##1}}}},
/codeexample/prettyprint/key name with handler/.code 2 args={\textcolor{keycolor}{\pgfmanualpdfref{##1}{\noligs{##1}}}/\textcolor{blue!70!black}{\pgfmanualpdfref{/handlers/##2}{\noligs{##2}}}},
/codeexample/prettyprint/key value display only/.code={\textcolor{keycolor}{{\itshape{\let\pgfmanualwordstartup\relax\pgfmanualprettyprintcode{##1}}}}},
/codeexample/prettyprint/cs/.code={\textcolor{cscolor}{\pgfmanualcslinkpreskip4.25pt\pgfmanualpdfref{##1}{\noligs{##1}}}},
/codeexample/prettyprint/cs with args/.code 2 args={\textcolor{black}{\pgfmanualcslinkpreskip4.25pt\pgfmanualpdfref{##1}{\noligs{##1}}}\{\textcolor{black}{\pgfmanualprettyprintcode{##2}}\pgfmanualclosebrace},
/codeexample/prettyprint/cs arguments/pgfkeys/.initial=1,
/codeexample/prettyprint/cs/pgfkeys/.code 2 args={\textcolor{black}{\pgfmanualcslinkpreskip4.25pt\pgfmanualpdfref{##1}{\noligs{##1}}}\{\textcolor{black}{\pgfmanualprettyprintpgfkeys{##2}}\pgfmanualclosebrace},
/codeexample/prettyprint/cs arguments/begin/.initial=1,
/codeexample/prettyprint/cs/begin/.code 2 args={\textcolor{black}{##1}\{\textcolor{cscolor}{\pgfmanualpdfref{##2}{\noligs{##2}}}\pgfmanualclosebrace},
/codeexample/prettyprint/cs arguments/end/.initial=1,
/codeexample/prettyprint/cs/end/.code 2 args={\textcolor{black}{##1}\{\textcolor{cscolor}{\pgfmanualpdfref{##2}{\noligs{##2}}}\pgfmanualclosebrace},
/codeexample/prettyprint/word/.code={\pgfmanualwordstartup{\begingroup\pgfkeyssetvalue{/pdflinks/search key prefixes in}{}\pgfmanualpdfref{##1}{\noligs{##1}}\endgroup}},
/codeexample/prettyprint/point/.code={\textcolor{pointcolor}{\noligs{##1}}},%
/codeexample/prettyprint/point with cs/.code 2 args={\textcolor{pointcolor}{(\pgfmanualpdfref{##1}{\noligs{##1}}:\noligs{##2}}},%
/codeexample/prettyprint/comment font=\itshape,
/codeexample/prettyprint/base color/.initial=\color{basecolor},
/pdflinks/render hyperlink/.code={%
{\setbox0=\hbox{##1}%
\rlap{{\color{linkcolor}\dimen0\wd0\advance\dimen0by-\pgfmanualcslinkpreskip\hskip\pgfmanualcslinkpreskip\vrule width\dimen0 height-1pt depth1.6pt}}%
\box0%
}%
}
},/codeexample/syntax hilighting
}
\colorlet{keycolor}{black}
\colorlet{cscolor}{black}
\colorlet{pointcolor}{black}
\colorlet{basecolor}{black}
\colorlet{linkcolor}{black!8}
\def\pgfmanualswitchoncolors{%
\colorlet{keycolor}{green!50!black}%
\colorlet{cscolor}{blue!70!black}
\colorlet{pointcolor}{violet}
\colorlet{basecolor}{black!55}
\colorlet{linkcolor}{white}
}
\makeatletter
\def\pgfmanualwordstartup{\textcolor{black}}
\def\noligs#1{\pgfmanualnoligs#1\kern0pt--\pgf@stop}%
\def\pgfmanualnoligs#1--{%
\pgfutil@ifnextchar\pgf@stop{#1\pgfutil@gobble}{#1-\kern0pt-\kern0pt\pgfmanualnoligs}%
}
\makeatother
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "beameruserguide"
%%% End: