% !TeX TS-program = lualatex
% !TeX spellcheck = <none>
% !TeX root = tikz-ext-manual.tex
% Copyright 2022 by Qrrbrbirlbel
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Free Documentation License.
%
\usepackage[version=latest]{pgf}
\usepackage{xkeyval,calc,listings,tikz,fp}
\usepackage{imakeidx}
\makeindex
%%% Bibliography
\usepackage{csquotes}
\usepackage[backend=biber,style=numeric,backref]{biblatex}
\addbibresource{tikz-ext-manual.bib}
\usepackage{hyperref}
\hypersetup{%
colorlinks=true, % use true to enable colors below:
linkcolor=blue,%red,
filecolor=blue,%magenta,
urlcolor=blue,%cyan,
citecolor=blue,
pdfborder=0 0 0,
}
\usepackage[a4paper,left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead,columnsep=1cm]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{xxcolor}
\usepackage{pifont}
\usepackage[T1]{fontenc}
% Promote `Missing character` reports to full errors
% require texlive 2021 or above
\tracinglostchars=3
\input{pgfmanual-en-macros}
\usepackage[no-math]{fontspec}
%\usepackage{unicode-math}
%\setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
\usepackage[ttscale=.85]{libertine}
\setmonofont[Scale=0.8]{Bitstream Vera Sans Mono}
\let\arrowvert\relax
\usepackage[libertine,liby]{newtxmath}
\makeatletter
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{2.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\endgroup
\fi}
\renewcommand*\l@subsection{\@dottedtocline{2}{2.5em}{3.3em}}
\renewcommand*\l@subsubsection{\@dottedtocline{3}{5.8em}{4.2em}}
\def\@pnumwidth{2.2em}
\makeatother
% Global styles:
\tikzset{
every plot/.style={prefix=plots/pgf-},
shape example/.style={
color=black!30,
draw,
fill=yellow!30,
line width=.5cm,
inner xsep=2.5cm,
inner ysep=0.5cm}
}
% Detect changed labels
% by David Carlisle
https://tex.stackexchange.com/a/169245
\makeatletter
\def\@testdef#1#2#3{%
\def\reserved@a{#3}%
\expandafter\ifx\csname #1@#2\endcsname\reserved@a\else
\typeout{^^JLabel `#2' changed:^^J\meaning\reserved@a^^J\expandafter\meaning\csname #1@#2\endcsname^^J}%
\@tempswatrue
\fi}
\makeatother
\usepgfkeyslibrary{ext.pgfkeys-plus}
\usetikzlibrary{
decorations.markings,
ext.arrows,
ext.arrows-plus,
ext.calendar-plus,
ext.layers,
ext.misc,
ext.node-families,
ext.node-families.shapes.geometric,
ext.nodes,
ext.paths.arcto,
ext.paths.ortho,
ext.paths.timer,
ext.patterns.images,
ext.positioning-plus,
ext.scalepicture,
ext.shapes.heatmark,
ext.shapes.circlearrow,
ext.shapes.circlecrosssplit,
ext.shapes.rectangleroundedcorners,
ext.shapes.superellipse,
ext.shapes.uncenteredrectangle,
ext.topaths.arcthrough,
ext.topaths.autobend,
ext.transformations.mirror,
%
bending,
calc,
cd,
fit,
intersections,
matrix,
shapes.geometric,
spath3,
through,
trees,
}
\tikzextset{compat=0.6}
\usepackage{pgffor-ext}
%% needs Lua!
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{force}
\makeatletter
\def\endofcodeexample#1{% original from tex/latex/pgf/doc/pgfmanual-en-macros.tex by Till Tantau et al
\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% removed this line
\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%
}
\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}
}
\makeatother
\usepackage{paracol}
%% normal references
\newcommand*{\indexLibrary}[1]{%
\index{#1@\protect\texttt{#1} library}%
\index{Libraries!#1@\protect\texttt{#1}}%
}
\newcommand*{\indexMathFunction}[1]{%
\index{#1@\protect\texttt{#1} math function}%
\index{Math functions!#1@\protect\texttt{#1}}%
}
\newcommand*{\indexShape}[1]{%
\index{#1@\protect\texttt{#1} shape}%
\index{Shapes!#1@\protect\texttt{#1}}%
}
\newcommand*{\indexHandler}[1]{%
\index{\gobble#1@\protect\texttt{#1} handler}%
\index{Key handlers!#1@\protect\texttt{#1}}
}
\newcommand*{\indexKey}[2][/tikz/]{%
\begingroup
\def\mykey{#1#2}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue
\decompose#1#2/\nil
\endgroup
}
\newcommand*{\indexPathOperation}[1]{%
\index{#1@\protect\texttt{#1} path operation}%
\index{Path operations!#1@\protect\texttt{#1}}%
}
\newcommand*{\indexPackage}[1]{%
\index{#1@\protect\texttt{#1} package}%
\index{Packages and files!#1@\protect\texttt{#1}}%
}
\newcommand*{\indexPackageO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} package\originalsuffix}%
\index{Packages and files!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
%% references to original
\newcommand*{\indexLibraryO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} library\originalsuffix}%
\index{Libraries!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\indexMathFunctionO}[1]{%
\index{#1@\protect\texttt{\original{#1}} math function\originalsuffix}%
\index{Math functions!#1@\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\indexShapeO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} shape\originalsuffix}%
\index{Shapes!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\indexHandlerO}[1]{%
\index{\gobble#1@\originalprefix\protect\texttt{\original{#1}} handler\originalsuffix}%
\index{Key handlers!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}
}
\newcommand*{\indexKeyO}[2][/tikz/]{%TODO
\begingroup\let\decomposetoodeep\decomposetoodeepO
\def\mykey{#1#2}%
\def\mypath{}%
\gdef\myname{}%
\firsttimetrue
\decomposeO#1#2/\nil
\endgroup
}
\def\decomposetoodeepO#1/#2/\nil{%
% avoid too-deep nesting in index
\index{#1/#2@\originalprefix\protect\texttt{\original{#1/#2}} key\originalsuffix}%
\index{\mypath#1/#2@\originalprefix\protect\texttt{\original{#1/#2}}\originalsuffix}%
\decomposefindlast/#1/#2/\nil%
}
\def\decomposeO/#1/#2\nil{%
\def\test{#2}%
\ifx\test\empty%
% aha.
\index{#1@\originalprefix\protect\texttt{\original{#1}} key\originalsuffix}%
\index{\mypath#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
\gdef\myname{#1}%
\pgfmanualpdflabel{#1}{}%
\else%
\advance\pgfmanualdecomposecount by1\relax%
\ifnum\pgfmanualdecomposecount>2\relax%
\decomposetoodeepO#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{}%
\decomposeO/#2\nil%
\fi%
\fi%
}
\newcommand*{\indexPathOperationO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} path operation\originalsuffix}%
\index{Path operations!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\indexCommand}[1]{%
\removeats{#1}%
\index{\strippedat @\protect\texttt{\protect\string\protect#1}}%
}
\newcommand*{\indexCommandO}[1]{%
\removeats{#1}%
\index{\strippedat @\originalprefix\protect\texttt{\original{\protect\string\protect#1}}\originalsuffix}%
}
\newcommand*{\indexDecorationO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} decoration\originalsuffix}%
\index{Decorations!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\indexEnvironment}[1]{%
\index{#1@\protect\texttt{#1} environment}%
\index{Environments!#1@\protect\texttt{#1}}%
}
\newcommand*{\indexEnvironmentO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} environment\originalsuffix}%
\index{Environments!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\indexArrowtipO}[1]{%
\index{#1@\originalprefix\protect\texttt{\original{#1}} arrow tip\originalsuffix}%
\index{Arrow tips!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
}
\newcommand*{\referenceArrowtipandIndexO}[1]{\texttt{#1}\indexArrowtipO{#1}}
\newcommand*{\referenceEnvironmentandIndexO}[1]{\texttt{#1}\indexEnvironmentO{#1}}
\newcommand*{\referenceDecorationandIndexO}[1]{\texttt{#1}\indexDecorationO{#1}}
\newcommand*{\referenceKeyandIndexO}[2][/tikz/]{\texttt{#1#2}\indexKeyO[#1]{#2}}
\newcommand*{\referenceKeyandIndex}[2][/tikz/]{\texttt{#1#2}\indexKey[#1]{#2}}
\newcommand*{\referenceShapeandIndex}[1]{\texttt{#1}\indexShape{#1}}
\newcommand*{\referenceShapeandIndexO}[1]{\texttt{#1}\indexShapeO{#1}}
\newcommand*{\referenceLibraryandIndexO}[1]{\texttt{#1}\indexLibraryO{#1}}
\newcommand*{\referenceLibraryandIndexExt}[1]{\texttt{#1}\indexLibraryExt{#1}}
\newcommand*{\referenceLibraryandIndex}[1]{\texttt{#1}\indexLibrary{#1}}
\newcommand*{\referencePackageandIndex}[1]{\texttt{#1}\indexPackage{#1}}
\newcommand*{\referencePackageandIndexO}[1]{\texttt{#1}\indexPackageO{#1}}
\newcommand*{\referencePackageandIndeXExt}[1]{\texttt{#1}\indexPackageExt{#1}}
\newcommand*{\referencePathOperationandIndex}[1]{\texttt{#1}\indexPathOperation{#1}}
\newcommand*{\referencePathOperationandIndexO}[1]{\texttt{#1}\indexPathOperationO{#1}}
\newcommand*{\referenceCommandandIndex}[1]{\texttt{\string#1}\indexCommand{#1}}
\newcommand*{\referenceCommandandIndexO}[1]{\texttt{\string#1}\indexCommandO{#1}}
\newcommand*{\referenceCommandandIndexExt}[1]{\texttt{\string#1}\indexCommandExt{#1}}
\colorlet{originalindex}{gray}
\newcommand*{\original}[1]{\textcolor{originalindex}{#1}}%
\newcommand*{\originalsuffix}{}%\textsuperscript{\textdagger}}%\normalsize
\newcommand*{\originalprefix}{}%\footnotesize
\newcommand*{\indexPackageExt}[1]{%
\begingroup
% \originalExternals
\index{#1@\originalExternals{\protect\texttt{\original{#1}} package}}%
\index{Packages and files!#1@\originalExternals{\protect\texttt{\original{#1}}}}%
\endgroup
}
\newcommand*{\indexLibraryExt}[1]{%
\index{#1@\originalExternals{\protect\texttt{\original{#1}} library}}%
\index{Libraries!#1@\originalExternals{\protect\texttt{\original{#1}}}}%
}
\newcommand*{\indexCommandExt}[1]{%
\removeats{#1}%
\index{\strippedat @\originalExternals{\protect\texttt{\original{\protect\string\protect#1}}}}%
}
\DeclareRobustCommand*{\originalExternals}[1]{%
\begingroup
\colorlet{originalindex}{blue!50!gray}%
% \renewcommand*{\original}[1]{\textcolor{originalindex}{##1}}%
#1%
\endgroup
}
\newcommand*{\filetype}[1]{\textsc{#1}}
\makeatletter
\def\index@prologue{\section*{Index}\addcontentsline{toc}{section}{Index}
This index contains automatically generated entries as well as {\originalprefix\original{references}\originalsuffix} to
original functionalities of \pgfname/\tikzname\space
and \originalExternals{\originalprefix\original{references}\originalsuffix} to functionalities outside of \pgfname/\tikzname.
\bigskip
}
\makeatother
\DeclareMathOperator{\sgn}{sgn}
\newenvironment{implementation}{%
\noindent\rule[.5ex]{\linewidth}{.4pt}\par
\paragraph*{Notes on Implementation:}\par%
\small
\begin{quotation}%
}{\end{quotation}}
\newcommand*{\inspiration}[2]{%
\par\textbf{Q\,\&\,A:} \cite{#1} \& \cite{#2}\par
}
\newcommand*\inspirationQ[1]{\par\textbf{Q:} \cite{#1}}
\newenvironment{texpackage}[1]{% no context
\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{latexpackage}[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}
}
\usepackage{booktabs}
\renewenvironment{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]{\dimexpr\linewidth-5cm\relax}
#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}
}
\makeatletter
\def\arrowexample@#1[#2]{%
{\sfcode`\.1000\scriptsize\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\manual@action@length#1/#2/#3\relax{%
% \draw[help lines, overlay] (current bounding box.south west) rectangle (current bounding box.north east);
\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@radius#1/#2/#3\relax{%
% \draw[red] (0,#2)
% -- node[above, sloped]{\texttt{radius}}
% +(30:#1);
\draw [red, ->|, semithick]
([xshift=-#1, yshift=-#1]0,#2) %-- ++(left:#2) -- ++(down:#1);
-- node[below, sloped]{\texttt{inset}} +(30:#1);
% \draw [red,|<->|,semithick] ([xshift=-#1,yshift=2*#1]current bounding
% box.north east) -- node [above, overlay] {\texttt{radius}} ++(-#1,0);
}
\makeatother
\newcommand*\listcompat[2][pre~0.6]{%
\vspace{-6pt}\item{\color{gray}\small\sffamily#1\kern.5em{#2}}\vspace{-2pt}\par
}
\newcommand*\keylistcompat[2][pre~0.6]{%
\vspace{-6pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily/#2/\myname}}\vspace{-2pt}\par
\pgfmanualpdflabel{/#2/\myname}{}%
}
\newcommand*\keycompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily/#2/\myname}}\vspace{-2pt}\par
\pgfmanualpdflabel{/#2/\myname}{}%
}
\newcommand*\cmdcompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily\string#2}}\vspace{-2pt}\par
% \pgfmanualpdflabel{\string#2}{}%
}
\newcommand*\tipcompat[1][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily\expandafter\tipcompatstrip\currentarrowtype\tipstop}}\vspace{-2pt}\par
% \pgfmanualpdflabel{/#2/\myname}{}%
}
\newcommand*\tipCompat[2][pre~0.6]{
\vspace{-8pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily#2}}\vspace{2pt}\par
% \pgfmanualpdflabel{/#2/\myname}{}%
}
\def\tipcompatstrip ext#1#2\tipstop{#2}%
\newcommand*\handlercompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily#2}}\vspace{-2pt}\par
\pgfmanualpdflabel{#2}{}%
}
\newcommand*\mathcompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily#2}}\vspace{-2pt}\par
% \pgfmanualpdflabel{/#2/\myname}{}%
}
\usepackage{array}
\newcommand*\tikzext{tikz/ext}
\newcommand*\pgfext{pgf/ext}
\newcommand*\pgfforeachext{pgf/foreach/ext}
\newcommand*\utilsext{utils/ext}
\def\decomposetoodeep#1/#2/\nil{%
% avoid too-deep nesting in index
\ifx\CurrentLibrary\empty
\index{#1/#2@\protect\texttt{#1/#2}}%
\index{\mypath#1/#2@\protect\texttt{#1/#2}}%
\fi
\index{#1/#2@\protect\texttt{#1/#2} (\CurrentLibrary)}%
\index{\mypath#1/#2@\protect\texttt{#1/#2} (\CurrentLibrary)}%
\fi
\decomposefindlast/#1/#2/\nil%
}
\def\decompose/#1/#2\nil{%
\def\test{#2}%
\ifx\test\empty%
% aha.
\ifx\CurrentLibrary\empty
\index{#1@\protect\texttt{#1} key}%
\index{\mypath#1@\protect\texttt{#1}}%
\else
\index{#1@\protect\texttt{#1} key (\CurrentLibrary)}%
\index{\mypath#1@\protect\texttt{#1} (\CurrentLibrary)}%
\fi
\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\empty{}
\newcommand*\noLibrary{\gdef\CurrentLibrary{}}
\newcommand*\currentLibrary[1]{\gdef\CurrentLibrary{{\small ext.}#1}}
\noLibrary
\newenvironment{ext_shape}[1]{
\begin{pgfmanualentry}
\pgfmanualentryheadline{%
\pgfmanualpdflabel{ext_#1}{}%
\textbf{Shape} {\ttfamily\declare{ext\textunderscore#1}}%
}%
\index{ext\textunderscore#1@\protect\texttt{ext\textunderscore#1} shape}%
\index{Shapes!ext\textunderscore#1@\protect\texttt{ext\textunderscore#1}}
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
%\newenvironment{ext_math-function}[1]{
% \def\mathdefaultname{ext\textunderscore#1}
% \extractmathfunctionname{ext#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}
%}
\makeatletter
\newenvironment{ext_handler}[1]{
\begin{pgfmanualentry}
\extextracthandler#1\@nil%
\pgfmanualbody
}
{
\end{pgfmanualentry}
}
\def\extextracthandler#1#2\@nil{%
\pgfmanualentryheadline{%
\pgfmanualpdflabel{/handlers/.ext_#1}{}%
\textbf{Key handler} \meta{key}{\ttfamily/\declare{.ext\textunderscore#1}}#2}%
\index{ext\textunderscore#1@\protect\texttt{.ext\textunderscore#1} handler}%
\index{Key handlers!.ext\textunderscore#1@\protect\texttt{.ext\textunderscore#1}}
}
\makeatother
\newcommand*\Beamer{\textsc{Beamer}}