% !TeX spellcheck = en_US
% !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.
%
\newcommand*\tikzextname{Ti\textit kZ-Extensions}
%\includeonly{
%  tikz-ext-manual-en-intro,
%  tikz-ext-manual-en-library-arrows-plus,
%  tikz-ext-manual-en-library-beamer,
%  tikz-ext-manual-en-library-calendar-plus,
%  tikz-ext-manual-en-library-layers,
%  tikz-ext-manual-en-library-node-families,
%  tikz-ext-manual-en-library-nodes,
%  tikz-ext-manual-en-library-paths.arcto,
%  tikz-ext-manual-en-library-paths.ortho,
%  tikz-ext-manual-en-library-paths.timer,
%  tikz-ext-manual-en-library-patterns.images,
%  tikz-ext-manual-en-library-positioning-plus,
%  tikz-ext-manual-en-library-scalepicture,
%  tikz-ext-manual-en-library-topaths.arcthrough,
%  tikz-ext-manual-en-library-topaths.autobend,
%  tikz-ext-manual-en-library-trans,
%  tikz-ext-manual-en-pgf-arrows,
%  tikz-ext-manual-en-pgf-trans,
%  tikz-ext-manual-en-pgf-shapes-circlearrow,
%  tikz-ext-manual-en-pgf-shapes-circlecrosssplit,
%  tikz-ext-manual-en-pgf-shapes-heatmark,
%  tikz-ext-manual-en-pgf-shapes-rectround,
%  tikz-ext-manual-en-pgf-shapes-superellipse,
%  tikz-ext-manual-en-pgf-shapes-uncentered,
%  tikz-ext-manual-en-calendar,
%  tikz-ext-manual-en-library-pgffor,
%  tikz-ext-manual-en-library-misc,
%}
\begin{document}
{\colorlet{blue}{black}% links shall be black
\title{\bfseries The \tikzextname\space Package\\
 \large Manual for version \tikzextversion\space (\tikzextversionnumber)\\[1mm]
\large\href{https://github.com/Qrrbrbirlbel/tikz-extensions}
  {\texttt{https://github.com/Qrrbrbirlbel/tikz-extensions}}
\author{Qrrbrbirlbel}}

\maketitle
\label{table-of-contents}

\tableofcontents
}
\include{tikz-ext-manual-en-intro}
%
\part{\tikzname\space Libraries}
\label{part:tikz}

These libraries only work with \tikzname.
\vspace{1em}
\begin{center}\tikzsetnextfilename{main-cover}
\begin{tikzpicture}[
 very thick,
 scale=2.7,
 grow cyclic,
 level distance=1cm,
 level/.style={
   level distance/.expanded=\ifnum#1>1 \tikzleveldistance/1.5\else\tikzleveldistance\fi,
   nodes/.expanded={\ifodd#1 fill\else fill=none\fi}
 },
 level 1/.style={sibling angle=120},
 level 2/.style={sibling angle=90},
 level 3/.style={sibling angle=90},
 level 4/.style={sibling angle=45},
 nodes={circle,draw,inner sep=+0pt, minimum size=+5pt},
 ]

\path[rotate=30]
 node {}
 child foreach \cntI in {1,...,3} {
   node {}
   child foreach \cntII in {1,...,2} {
     node {}
     child foreach \cntIII in {1,...,2} {
       node {}
       child foreach \cntIV in {1,...,2} {
         node {}
         child foreach \cntV in {1,...,2} {}
       }
     }
   }
 };
\end{tikzpicture}
\end{center}

\tikzsetfigurename{arrows-plus}     \include{tikz-ext-manual-en-library-arrows-plus}
                                   \include{tikz-ext-manual-en-library-beamer}
\tikzsetfigurename{calendar-plus}   \include{tikz-ext-manual-en-library-calendar-plus}
\tikzsetfigurename{layers}          \include{tikz-ext-manual-en-library-layers}
\tikzsetfigurename{node-families}   \include{tikz-ext-manual-en-library-node-families}
\tikzsetfigurename{nodes}           \include{tikz-ext-manual-en-library-nodes}
\tikzsetfigurename{paths.arcto}     \include{tikz-ext-manual-en-library-paths.arcto}
\tikzsetfigurename{paths.ortho}     \include{tikz-ext-manual-en-library-paths.ortho}
\tikzsetfigurename{paths.timer}     \include{tikz-ext-manual-en-library-paths.timer}
\tikzsetfigurename{patterns.images} \include{tikz-ext-manual-en-library-patterns.images}
\tikzsetfigurename{positioning-plus}
\include{tikz-ext-manual-en-library-positioning-plus}
\tikzsetfigurename{scalepicture}
\include{tikz-ext-manual-en-library-scalepicture}
\tikzsetfigurename{topaths}
\include{tikz-ext-manual-en-library-topaths.arcthrough}
\include{tikz-ext-manual-en-library-topaths.autobend}
\tikzsetfigurename{trans}
\include{tikz-ext-manual-en-library-trans}
%
\part{\pgfname\space Libraries}
\label{part:pgf}
These libraries (should) work with both \pgfname\space and \tikzname.

\begin{center}\tikzsetnextfilename{main-graph}
\begin{codeexample}[width=10cm,preamble=%
 \usetikzlibrary{graphs,graphdrawing,ext.misc} \usegdlibrary{force}]
\tikzset{
 mynode/.style={
   circle, minimum size=10mm, draw, densely dashdotted, thick,
   decide color/.expand once=#1},
 decide color/.style 2 args={
   /utils/ext/if=c#1
     {/utils/ext/ifnum={#2<5}{bluelight}{bluedark}}
     {/utils/ext/ifnum={#2<8}{light}{dark}}},
 light/.style={fill=gray!20},  bluelight/.style={fill=blue!10},
 dark/.style ={fill=gray!60},  bluedark/.style ={fill=blue!30}}
\tikz\graph[
 spring electrical layout, vertical=c2 to p13,
 node distance=1.5cm, typeset=$n_{\tikzgraphnodetext}$,
 nodes={mynode=\tikzgraphnodetext}] {
 % outer ring
 c2 -- {p1, p11, p6};
   p1 -- {p8, c6, p11};
     p8 -- {p3, p10, c6};
      p3 -- {p13, p15, p10};
        p13 -- {p15, c7};
          c7  -- {c3, c4, p15};
          c3  -- {p14, c4};
          p14 -- {p7, c4};
        p7 -- {p9, p2, c4};
      p9 -- {c5, p12, p2};
    c5 -- {c1, p4, p12};
  c1 -- {p6, p4};
 p6 -- {p11, p4};
 % inner ring
 p11 -- {c6, p12, p4};
 p5 -- {c6 -- {p10, p12}, p10 -- p15, p15 -- c4, c4 -- p2, p2 -- p12, p12 -- p4};
};
\end{codeexample}
\end{center}

\tikzsetfigurename{PGF.arrows}\include{tikz-ext-manual-en-pgf-arrows}
\tikzsetfigurename{PGF.trans}\include{tikz-ext-manual-en-pgf-trans}
\tikzsetfigurename{PGF.shapes}%
\include{tikz-ext-manual-en-pgf-shapes-circlearrow}
\include{tikz-ext-manual-en-pgf-shapes-circlecrosssplit}
\include{tikz-ext-manual-en-pgf-shapes-heatmark}
\include{tikz-ext-manual-en-pgf-shapes-rectround}
\include{tikz-ext-manual-en-pgf-shapes-superellipse}
\include{tikz-ext-manual-en-pgf-shapes-uncentered}

\part{Utilities}

\label{part:misc}
\vfill\tikzsetnextfilename{main-misc}
\begin{codeexample}[width=6cm, preamble=\usetikzlibrary{ext.misc}]
\begin{tikzpicture}[
 declare function={bigR(\n)=smallR+.05*\n;},
 ext/declare constant={smallR=1; segments=20;},
 ext/full arc=segments]
\foreach \iN[evaluate={\endRadius=bigR(\iN+1);}, ext/use int=0 to segments-1]
 \filldraw[fill=gray!50] (\iN R:\endRadius)
   arc [radius=\endRadius, start angle=\iN R, delta angle=+1R] -- (\iN R+1R:smallR)
   arc [radius=smallR,       end angle=\iN R, delta angle=-1R] -- cycle;

\node                                              {$\phi^2$};
\node at (north west:{sqrt 2 * bigR(segments/2)})  {$\{\Omega\}_{i=1}^n$};
\node[rotate=-.5R, right] at (-.5R: bigR segments) {$\partial \varphi$};

\tikzset{yshift=-5cm, ext/declare constant={segments=25;}, ext/full arc=segments}
\filldraw[fill=gray!50] (right:smallR)
 \foreach \iN[evaluate={\endRadius=bigR(\iN+1);}, ext/use int=0 to segments-1] {
   -- (\iN R:\endRadius) arc[radius=\endRadius, start angle=\iN R, delta angle=1R]}
   -- (right:smallR)     arc[radius=smallR,     start angle=0,     delta angle=-360];

\node                                              {$\phi^2$};
\node at (north west:{sqrt 2 * bigR(segments/2)})  {$\{\Omega\}_{i=1}^n$};
\node[rotate=-.5R, right] at (-.5R: bigR segments) {$\partial \varphi$};
\end{tikzpicture}
\end{codeexample}
\vfill

\tikzsetfigurename{misc.calendar}\include{tikz-ext-manual-en-calendar}
\tikzsetfigurename{misc.pgffor}\include{tikz-ext-manual-en-library-pgffor}
\tikzsetfigurename{misc.misc}\include{tikz-ext-manual-en-library-misc}

%% END
\newcommand*{\addPackage}[1]{Added package \texttt{#1-ext}.}
\newcommand*{\addTikz}[1]{Added \tikzname\space library \texttt{ext.#1}.}
\newcommand*{\addPGF}[1]{Added \pgfname\space library \texttt{ext.#1}.}
\newcommand*{\addPGFkeys}[1]{Added \pgfname keys library \texttt{ext.#1}.}
\newcommand*{\addShape}[2][]{Added shape \texttt{\ifx\\#1\\#2\else#1\fi}\\(\pgfname\space library \texttt{ext.shapes.#2}).}
\part{Changelog, Index \& References}
\section*{Changelog}\addcontentsline{toc}{section}{Changelog}
\begin{multicols}{2}\raggedright
\noindent
Version \tikzextversion\ (\the\year-\ifnum\month<10 0\fi\the\month-\ifnum\day<10 0\fi\the\day)
\begin{itemize}
\item Bugfix to and slight refactoring of |ext.paths.ortho|.
\item Bugfix to |pgffor-ext|/|ext.misc|.
\item Added better support for |graphs| library for |ext.beamer|.
\end{itemize}
Version 0.6.1 (2025-04-12)
\begin{itemize}
\item \addTikz{beamer}
\item Added new tips |ext_Double Cap|, |ext_Double Stealth| and |ext_Double Triange|.
\item Bugfix to |ext.arrows-plus|. \cite{GH18}
\end{itemize}
Version 0.6 (2025-03-18)
\begin{itemize}
\item Added \texttt{\textbackslash tikzextset},
           \texttt{\textbackslash tikzextversion} and
           \texttt{\textbackslash tikzextversionnumber}
\item Added six new |auto| placement mechanisms:
     |ext/above|, |ext/below|, |ext/west|, |ext/east|, |ext/north| and |ext/south|.
\item Added |ext/auto offset| for |auto| placement.
\item Added |ext/precise auto angle|.
\item \addTikz{arrows-plus}
\item \addTikz{topaths.autobend}
\item Made |ext.node-families| and |ext.scalepicture| memoizable.
\end{itemize}
Version 0.5.1 (2023-04-02)
\begin{itemize}
\item \addPGF{arrows}
\item Bugfix to |ext.pgfkeys-plus|. \cite{GH6}
\end{itemize}
Version 0.5 (2023-03-17)
\begin{itemize}
\item \addPackage{pgffor}
\item \addTikz{nodes}
\item \addTikz{layers}
\item Bugfixes to |ext.calendar-plus|.
\item Allow the original |rectangle| timer with |ext.paths.timer|.
\end{itemize}
Version 0.4.2 (2022-10-30)
\begin{itemize}
\item \addTikz{scalepicture}
\item Bugfixes to |shapes.uncenteredrectangle|, |paths.ortho|, |positioning-plus| and |pgfcalender-ext|.
\end{itemize}
Version 0.4.1 (2022-10-23)
\begin{itemize}
\item Cleaned up directory structure of documentary.
\item \addPGFkeys{pgfkeys-plus}
\item \addShape[uncentered rectangle]{uncenteredrectangle}
\item Fixed |ext.paths.arcto| -- again \cite{GH2}.
\end{itemize}
Version 0.4 (2022-10-10)
\begin{itemize}
\item CTAN version of 0.3.1
\end{itemize}
Version 0.3.1 (2022-10-09)
\begin{itemize}
\item Fixed |ext.paths.ortho| keys |only vertical first| and |only horizontal first|.
\item Moved all (except the |to path|s) to namespace |/tikz/ortho|.
    |/tikz/hvvh| and |/tikz/udlr| are considered deprecated.
\item Fixed |\pgfcalendarjulianyeartoweek|.
\item Added more calendar tests.
\item Added directory structure.
\end{itemize}
Version 0.3 (2022-09-24)
\begin{itemize}
\item \addShape[circle arrow]{circlearrow}
\item \addShape[circle cross split]{circlecrosssplit}
\item \addShape{heatmark}
\item \addShape[rectangle with rounded corners]{rectangleroundedcorners}
\item \addShape{superellipse}
\item \addTikz{node-families.shapes.geometric}
\item Fixed |ext.node-families|' key |size|.
\item Renamed internal macros to use custom namespace starting with |\tikzext@|.
\item Added some references.
\end{itemize}
Version 0.2 (2022-08-21)
\begin{itemize}
\item \addTikz{positioning-plus}
\item \addTikz{node-families}
\end{itemize}
Version 0.1 (2022-08-16)
\begin{itemize}
\item \addTikz{calendar-plus}
\item \addTikz{misc}
\item \addTikz{paths.arcto}
\item \addTikz{paths.ortho}
\item \addTikz{paths.timer}
\item \addTikz{patterns.images}
\item \addTikz{topaths.arcthrough}
\item \addTikz{transformations.mirror}
\item \addPGF{transformations.mirror}
\end{itemize}
\end{multicols}
\printindex

\makeatletter
\def\url#1{%
 \in@{/16595}{#1}%
 \ifin@
   \hyper@linkurl{\expandafter\Hurl\expandafter{\strip@url#1\relax}}{#1}%
 \else
   \hyper@linkurl{\Hurl{#1}}{#1}%
 \fi
}
\def\strip@url#1/16595\relax{#1}
\makeatother
\printbibliography[heading=bibintoc]
%\typeout{Examples: \the\codeexamplecount}%
\end{document}