texlive[64166] Master: tikz-ext (22aug22)

commits+karl at tug.org commits+karl at tug.org
Mon Aug 22 22:49:17 CEST 2022


Revision: 64166
          http://tug.org/svn/texlive?view=revision&revision=64166
Author:   karl
Date:     2022-08-22 22:49:17 +0200 (Mon, 22 Aug 2022)
Log Message:
-----------
tikz-ext (22aug22)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikz-ext/
    trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-intro.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-node-families.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-trans.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-trans.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/
    trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.sty
    trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.transformations.mirror.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.calendar-plus.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.timer.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.patterns.images.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.positioning-plus.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.topaths.arcthrough.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.transformations.mirror.code.tex
    trunk/Master/tlpkg/tlpsrc/tikz-ext.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,29 @@
+# TikZ-Extensions
+
+## License
+
+This material is subject to the LaTeX Project Public License and the GNU Free Documentation License.
+
+## About the Author
+
+Name: Qrrbrbirlbel
+
+## Introduction
+
+This is not a LaTeX package but a collection of libraries for PGF and TikZ.
+
+These are
+
+ * `ext.calendar-plus`,
+ * `ext.node-familes`,
+ * `ext.transformations.mirror`,
+ * `ext.paths.arcto`,
+ * `ext.paths.ortho`,
+ * `ext.paths.timer`,
+ * `ext.patterns.images`,
+ * `ext.positioning-plus`,
+ * `ext.topaths.arcthrough` and
+ * `ext.misc`.
+
+ These were developed in response to questions on tex.stackexchange.com.
+ Some of these can be find by searching for my [user id](https://tex.stackexchange.com/search?q=user%3A16595+%22my+library%22).
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,80 @@
+% !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.
+%
+
+\section{Calendar: Weeknumbers and more conditionals}
+\begin{package}{calendar-ext}
+  This package adds week numbers and more conditionals to the PGF package |pgfcalendar|.
+  (Despite the code example above, this package is not set up to work with Con\TeX t.)
+\end{package}
+
+%This package extends the |pgfcalendar| package.
+
+\begin{multicols}{2}
+
+\subsection{Extensions}
+
+The following tests are added.
+\begin{itemize}
+\itemcalendaroption{Jan} This test is passed by all dates that are in the month of January.
+\itemcalendaroption{Feb} as above.
+\itemcalendaroption{Mar} as above.
+\itemcalendaroption{Apr} as above.
+\itemcalendaroption{May} as above.
+\itemcalendaroption{Jun} as above.
+\itemcalendaroption{Jul} as above.
+\itemcalendaroption{Aug} as above.
+\itemcalendaroption{Sep} as above.
+\itemcalendaroption{Oct} as above.
+\itemcalendaroption{Nov} as above.
+\itemcalendaroption{Dec} as above.
+\itemcalendaroption{leap year}\opt{|=|\meta{year}}
+    This test checks whether the given year is a leap year. If
+    \meta{year} is omitted, it checks the year of the current date.
+\itemcalendaroption{and}|=|\marg{tests}
+    This test passes when all \meta{tests} pass.
+\itemcalendaroption{not}|=|\marg{tests}
+    This test passes when \meta{tests} do not pass.
+\itemcalendaroption{yesterday}|=|\marg{tests}
+    This test passes when the previous day passes \meta{tests}.
+\itemcalendaroption{week}|=|\meta{num}
+    This test passes when the current week of the year equals \marg{num}.
+\end{itemize}
+
+The shorthands for |d-| and |m-| are slightly changed so that they are
+expandable. This makes it possible to use these shorthands inside of PGFmath.
+The shorthands for the week (see section~\ref{calendar:weeknumbering})
+are added. These are
+\begin{itemize}
+\item |n-| (shortest numerical representation),
+\item |n=| (shortest but added horizontal space) and
+\item |n0| (leading zero when below 10).
+\end{itemize}
+
+\subsection{Week numbering (ISO~8601)}
+\label{calendar:weeknumbering}
+\begin{command}{\pgfcalendarjulianyeartoweek\marg{Julian day}\marg{year}\marg{week counter}}
+  This command calculates the week for the \meta{Julian day} of \meta{year}.
+  The \meta{week counter} must be a \TeX\space counter.
+
+  The calculation follows the rule of ISO~8601 where the first week has that
+  year's first Thursday in it.
+\end{command}
+
+Inside of |\pgfcalendar|\indexCommandO\pgfcalendar the command |\pgfcalendarcurrentweek| will be available.
+\begin{command}{\pgfcalendarcurrentweek}
+  This command returns the current week number (always two digits -- use shorthand |n.|
+  to strip the leading zero).
+\end{command}
+
+Inside of |\ifdate|\indexCommandO\ifdate the command |\pgfcalendarifdateweek| will be available.
+\begin{command}{\pgfcalendarifdateweek}
+  This command returns the week number (always two digits).
+\end{command}
+\end{multicols}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-intro.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-intro.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-intro.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,28 @@
+% !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.
+%
+\part{Introduction}
+\begin{multicols}{2}
+\section{Usage}
+This package is called |tikz-ext|, however, one can't load it via |\usepackage|.
+Instead, this package consists of multiple PGF and \tikzname\space libraries
+which are loaded by either |\usepgflibrary| or |\usetikzlibrary|.
+
+\section{Why do we need it?}
+Since I have been answering questions on \hyperlink{https://tex.stackexchange.com}{TeX.sx}
+I've noticed that some questions come up again and again,
+every time with a slightly different approach on how to solve them.
+
+I don't like reinventing the wheel which is why I've gathered the code of my answers in this package.
+
+And, yes, I am using them myself, too.
+
+\section{Should these libraries be part of \tikzname?}
+I guess.
+\end{multicols}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-intro.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,69 @@
+% !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.
+%
+
+\section{Calendar}
+\begin{tikzlibrary}{ext.calendar-plus}
+  This library extends the \tikzname\space library |calendar|\indexLibraryO{calendar}.
+\end{tikzlibrary}
+
+\begin{multicols}{2}
+
+\subsection{Value-keys and nestable \texttt{if} key}
+
+The values of following keys are originally stored in some macros that are not
+accessible by the user. These are now simple value-keys.
+The |@|-protected macros are still available, of course.
+
+\begin{key}{/tikz/day xshift (initially 3ex)}
+\end{key}
+\begin{key}{/tikz/day yshift (initially 3.5ex)}
+\end{key}
+\begin{key}{/tikz/month xshift (initially 9ex)}
+\end{key}
+\begin{key}{/tikz/month yshift (initially 9ex)}
+\end{key}
+
+It is now also possible to nest |/tikz/if| occurrences.
+\begin{key}{/tikz/if=|(|\meta{conditions}|)|\meta{code or options}\opt{|else|\meta{else code or options}}}
+\end{key}
+
+\subsection{Week numbering (ISO~8601)}
+
+The actual week number algorithm is implemented by the |pgfcalendar-ext| package/module in section~\ref{calendar:weeknumbering}.
+\begin{key}{/tikz/week code=\meta{code}}
+  Works like |/tikz/day code| or |/tikz/month code|, only for weeks.\indexKeyO{day code}\indexKeyO{month code}
+\end{key}
+
+\begin{key}{/tikz/week text=\meta{text}}
+  Works like |/tikz/day text| or |/tikz/month text|, only for weeks.\indexKeyO{day text}\indexKeyO{month text}
+\end{key}
+
+\begin{stylekey}{/tikz/every week}
+  Works like |/tikz/every day| or |/tikz/every month|, only for weeks.\indexKeyO{every day}\indexKeyO{every month}
+\end{stylekey}
+
+\begin{stylekey}{/tikz/week label left}
+    Places the week label to the left of the first day of the month. (For
+    |week list| and |month list| where a week does not start on a Monday, the
+    position is chosen ``as if'' the week had started on a Monday --  which is
+    usually exactly what you want.)
+    %
+\begin{codeexample}[preamble={\usetikzlibrary{ext.calendar-plus}}]
+\tikz
+  \calendar [week list, month label above centered,
+             dates=2022-07-01 to 2022-07-31,
+             week label left,
+             every week/.append style={gray!50!black,font=\sffamily}];
+\end{codeexample}
+    %
+\end{stylekey}
+
+\end{multicols}
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,244 @@
+% !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.
+%
+
+\section{And a little bit more}
+\begin{tikzlibrary}{ext.misc}
+  This library adds miscellaneous utilities to PGFmath, PGF or \tikzname.
+\end{tikzlibrary}
+
+\subsection{PGFmath}
+
+\begin{multicols}{2}
+\pgfkeys{/codeexample/every codeexample/.append style={width=3cm}}
+\subsubsection{Postfix operator \texttt{R}}
+
+Similar to |\segments[<num>]| in PSTricks, the postfix operator |R| allows the user
+to use an arbitrary number of segments of a circle to be used instead of an angle.
+
+\begin{key}{/tikz/full arc=\meta{num} (default |{}|)}
+  The number \meta{num} of segments will be set up.
+  Using |full arc| with an empty value disables the segmentation and |1R| equals $1^\circ$.
+  
+  The given value \meta{num} is evaluated when the key is used and doesn't change when
+  \meta{num} contains variables that change.
+\end{key}
+The |R| operator can then be used.
+\begin{math-operator}{R}{postfix}{fullarc}
+  Multiplies \mvar{x} with $\frac{360}{\meta{num}}$.
+\end{math-operator}
+
+\subsubsection{Functions}
+
+\begin{math-function}{strrepeat("\mvar{Text}", \mvar{x})}
+\mathcommand
+  Returns a string with \mvar{Text} repeated \mvar{x} times.
+
+\begin{codeexample}[]
+\pgfmathparse{strrepeat("foo", 5)}
+\pgfmathresult
+\end{codeexample}
+\end{math-function}
+
+\begin{math-function}{isInString("\mvar{String}", "\mvar{Text}")}
+\mathcommand
+  Returns |1| (true) if \mvar{Text} contains \mvar{String},
+  otherwise |0| (false).
+
+\begin{codeexample}[]
+\pgfmathparse{isInString("foo", "bar")}
+\pgfmathresult \ and\ 
+\pgfmathparse{isInString("foo", "foobar")}
+\pgfmathresult
+\end{codeexample}
+\end{math-function}
+
+\begin{math-function}{strcat("\mvar{Text A}", "\mvar{Text B}", …)}
+\mathcommand
+  Returns the concatenation of all given parameters.
+
+\begin{codeexample}[]
+\pgfmathparse{strcat("blue!", int(7*3), "!green")}
+\pgfmathresult
+\end{codeexample}
+\end{math-function}
+
+
+\begin{math-function}{isEmpty("\mvar{Text}")}
+\mathcommand
+  Returns |1| (true) if \mvar{Text} is empty, otherwise |0| (false).
+  %
+\begin{codeexample}[]
+\pgfmathparse{isEmpty("foo")} \pgfmathresult\ and\ 
+\pgfmathparse{isEmpty("")}    \pgfmathresult\ and\ 
+\def\emptyText{}
+\pgfmathparse{isEmpty("\emptyText")} \pgfmathresult
+\end{codeexample}
+\end{math-function}
+
+\begin{math-function}{atanXY(\mvar{x},\mvar{y})}
+\mathcommand
+  Arctangent of $\mvar y\div \mvar x$ in degrees. This also takes into account the quadrant.
+  This is just a argument-swapped version of |atan2|\indexMathFunctionO{atan2} which makes it easier to use
+  the |\p| commands of the |calc|\indexLibraryO{calc} library.
+  %
+\begin{codeexample}[]
+\pgfmathparse{atanXY(3,4)} \pgfmathresult
+\end{codeexample}
+\end{math-function}
+\begin{math-function}{atanYX(\mvar{y},\mvar{x})}
+\mathcommand
+   Arctangent of $y\div x$ in degrees. This also takes into account the quadrant.
+\begin{codeexample}[]
+\pgfmathparse{atanYX(4,3)} \pgfmathresult
+\end{codeexample}
+\end{math-function}
+
+\subsubsection{Functions: using coordinates}
+The following functions can only be used with PGF and/or \tikzname.
+Since the arguments are usually plain text (and not numbers) one has to wrap
+them in |"|.
+\begin{math-function}{anglebetween("\mvar{p1}", "\mvar{p2}")}\mathcommand
+  Return the angle between the centers of the nodes \mvar{p1} and \mvar{p2}.
+\end{math-function}
+\begin{math-function}{qanglebetween("\mvar{p}")}\mathcommand
+  Return the angle between the origin and the center of the node \mvar{p}.
+\end{math-function}
+\begin{math-function}{distancebetween("\mvar{p1}", "\mvar{p2}")}\mathcommand
+  Return the distance (in pt) between the centers of the nodes \mvar{p1} and \mvar{p2}.
+\end{math-function}
+\begin{math-function}{qdistancebetween("\mvar{p}")}\mathcommand
+  Return the distance (in pt) between the origin and the center of the node \mvar{p}.
+\end{math-function}
+
+\end{multicols}
+
+\begin{codeexample}[width=6cm,preamble=\usetikzlibrary{calc,ext.misc,through}]
+\begin{tikzpicture}
+\path (0,0) coordinate (A) + (0:4) coordinate (B) +(75:4) coordinate (C);
+\draw (A) -- (B) -- (C) -- cycle;
+\foreach \cnt in {1,...,4}{
+  \pgfmathsetmacro\triA{distancebetween("B","C")}
+  \pgfmathsetmacro\triB{distancebetween("C","A")}
+  \pgfmathsetmacro\triC{distancebetween("A","B")}
+  \path (barycentric cs:A=\triA,B=\triB,C=\triC) coordinate (M)
+       node [draw, circle through=($(A)!(M)!(C)$)] (M) {};
+  \draw ($(C)-(A)$) coordinate (vecB)
+      (M.75-90) coordinate (@)
+      (intersection of @--[shift=(vecB)]@ and B--C) coordinate (C) -- 
+      (intersection of @--[shift=(vecB)]@ and B--A) coordinate (A);}
+\end{tikzpicture}
+\end{codeexample}
+\subsection{PGFkeys}
+
+\begin{multicols}{2}
+
+\subsubsection{Conditionals}
+
+\begin{key}{/utils/if=\meta{cond}\meta{true}\opt{\meta{false}}}
+  This key checks the conditional \meta{cond} and applies the styles \meta{true}
+  if \meta{cond} is true, otherwise \meta{false}.
+  \meta{cond} can be anything that PGFmath understands.
+  
+  As a side effect on how PGFkeys parses argument, the \meta{false} argument is
+  actually optional.
+\end{key}
+
+The following keys use \TeX' macros |\if|, |\ifx|, |\ifnum| and |\ifdim| for faster
+executions.
+
+\begin{key}{/utils/TeX/if=\meta{token A}\meta{token B}\meta{true}\opt{\meta{false}}}
+  This key checks via |\if| if \meta{token A} matches \meta{token B}
+  and applies the styles \meta{true} if it does, otherwise \meta{false}.
+  
+  As a side effect on how PGFkeys parses argument, the \meta{false} argument is
+  actually optional.
+\end{key}
+
+\begin{key}{/utils/TeX/ifx=\meta{token A}\meta{token B}\meta{true}\opt{\meta{false}}}
+  As above.
+\end{key}
+
+\begin{key}{/utils/TeX/ifnum=\meta{num cond}\meta{true}\\opt{\meta{false}}}
+  This key checks |\ifnum|\meta{num cond}
+  and applies the styles \meta{true} if true, otherwise \meta{false}.
+  A delimiting |\relax| will be inserted after \meta{num cond}.
+  
+  As a side effect on how PGFkeys parses argument, the \meta{false} argument is
+  actually optional.
+\end{key}
+
+\begin{key}{/utils/TeX/ifdim=\meta{dim cond}\meta{true}\opt{\meta{false}}}
+  As above.
+\end{key}
+
+\begin{key}{/utils/TeX/ifempty=\meta{Text}\meta{true}\opt{\meta{false}}}
+  This checks whether \meta{Text} is empty and applies styles \meta{true} if true,
+  otherwise \meta{false}.
+\end{key}
+
+
+\subsubsection{Handlers}
+
+While already a lot of values given to keys are evaluated by PGFmath at some point,
+not all of them are.
+
+\begin{handler}{{.pgfmath}|=|\meta{eval}}
+  This handler evaluates \meta{eval} before it is handed to the key.
+\end{handler}
+
+\begin{handler}{{.pgfmath int}|=|\meta{eval}}
+  As above but truncates the result.
+\end{handler}
+
+\begin{handler}{{.pgfmath strcat}|=|\meta{eval}}
+  As above but uses the |strcat| function.
+  
+  In the example below, one could have used the |/pgf/foreach/evaluate| key from |\foreach|.
+\begin{codeexample}[width=3.7cm,preamble=\usetikzlibrary{misc}]
+\tikz\foreach \i in {0,10,...,100}
+\draw[
+  line width=+.2cm,
+  color/.pgfmath strcat={"red!",sqrt(\i)*10,"!blue"}
+]
+  (0,\i/50) -- +(right:3);
+\end{codeexample}
+\end{handler}
+
+\begin{handler}{{.List}|=|\meta{\meta{e1}, \meta{e2}, \dots, \meta{en}}}
+  This handler evaluates the given list with |\foreach| and concatenates the element and
+  the result is then given to the used key.
+\end{handler}
+\end{multicols}
+\begin{codeexample}[width=6cm,preamble=\usetikzlibrary{fit,ext.misc}]
+\begin{tikzpicture}[nodes={draw, dashed, inner sep=+10pt}]
+  \foreach \point [count=\cnt] in {(0,0), (0,2), (2,0), (2,2), (3,3), (-1,-1)}
+    \fill \point circle[radius=.1] coordinate (point-\cnt);
+  \node[gray, fit/.List={(point-1),(point-...),(point-4)}] {}; 
+  \node[red,  fit/.List={(point-1),(point-...),(point-5)}] {}; 
+  \node[blue, fit/.List={(point-1),(point-...),(point-6)}] {};
+\end{tikzpicture}
+\end{codeexample}
+
+\subsection{PGFfor}
+
+Instead of |\foreach \var in {start, start + delta, ..., end}| one can use
+|\foreach \var[use int=start to end step delta]|.
+
+\begin{key}{/pgf/foreach/use int=\meta{start}|to|\meta{end}\opt{|step|\meta{delta}}}
+The values \meta{start}, \meta{end} and \meta{delta} are evaluates by PGFmath at initialization.
+The part |step |\meta{delta} is optional (\meta{delta} = 1).
+\end{key}
+
+\begin{key}{/pgf/foreach/use float=\meta{start}|to|\meta{end}\opt{|step|\meta{delta}}}
+Same as above, however the results are not truncated.
+\end{key}
+
+%TODO: edges to and edges through
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-node-families.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-node-families.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-node-families.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,102 @@
+% !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.
+%
+\section{Node Families}
+\begin{tikzlibrary}{ext.node-families}
+  With this library the user can instruct multiple nodes to have the same
+  width, height, text width, text height or text width.
+  This uses the hook \referenceKeyandIndexO{execute at end picture} to write the nodes'
+  measurements to the \filetype{aux} file.
+  
+  Unfortunately, this does not work with the |external| library.\indexLibraryO{external}%
+  \footnote{Not only would the \texttt{external} library not notice the change of the value between compilations runs,
+    it also changes the way \texttt{\textbackslash pgfutil at writeout} works which suddenly writes to the \textsc{log} file instead.}
+\end{tikzlibrary}
+
+This library introduces two new shapes called |Circle| and |Rectangle|
+that are basically copies of the original shapes |circle|\indexShapeO{circle} and |rectangle|\indexShapeO{rectangle}.
+However, their dimension will be set to the same maximum |minimum width| and |minimum height|
+when one of the following \meta{name}s are declared.
+\begin{key}{/tikz/node family/width=\meta{name} (initially |\{\}|)}
+Nodes with the same \meta{name} will have the same \referenceKeyandIndexO[/pgf/]{minimum width}.
+An empty \meta{name} disables the evaluation by the library.
+\begin{codeexample}[preamble=\usetikzlibrary{positioning,ext.node-families},/tikz/node distance=.5cm]
+\tikzexternaldisable % ext.node-families does not work with active externalization
+\begin{tikzpicture}[nodes={Rectangle, draw, node family/width=manual}]
+\node (a) {Foo};
+\node[below=of a] (b) {Foobar};
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+\begin{key}{/tikz/node family/height=\meta{name} (initially |\{\}|)}
+Nodes with the same \meta{name} will have the same \referenceKeyandIndexO[/pgf/]{minimum height}.
+An empty \meta{name} disables the evaluation by the library.
+\end{key}
+\begin{key}{/tikz/node family/size=\meta{name}}
+Sets both |height| and |width|.
+\end{key}
+
+While |node family/width| and |node family/height| only work for the new shapes |Circle| and |Rectangle|,
+the following keys~-- when setup, see below~-- work with every shape with one single node part.
+Initially though, only |circle|, |rectangle|, |Circle| and |Rectangle| are set up that way.
+\begin{key}{/tikz/node family/text height=\meta{name} (initially |\{\}|)}
+Nodes with the same \meta{name} will have the same text height.
+An empty \meta{name} disables the evaluation by the library.
+\end{key}
+
+\begin{key}{/tikz/node family/text depth=\meta{name} (initially |\{\}|)}
+Nodes with the same \meta{name}  will have the same text depth.
+An empty \meta{name} disables the evaluation by the library.
+\end{key}
+
+\begin{key}{/tikz/node family/text width=\meta{name} (initially |\{\}|)}
+Nodes with the same \meta{name} will have the same text width.
+An empty \meta{name} disables the evaluation by the library.
+\end{key}
+
+\begin{key}{/tikz/node family/text=\meta{name}}
+Sets |text height|, |text depth| and |text width|.
+\end{key}
+
+Since the width of the node's content's box is setup much earlier,
+the previous key only extends the width of that box which would make the text
+seem as if it where aligned to the left.
+With |text width family align| this can changed.
+\begin{key}{/tikz/node family/text width align=\meta{alignment}(initially |center|)}
+\meta{alignment} is one of |left|, |center| or |right|.
+
+\begin{codeexample}[preamble=\usetikzlibrary{positioning,ext.node-families},/tikz/node distance=.5cm]
+\tikzexternaldisable % ext.node-families does not work with active externalization
+\begin{tikzpicture}[nodes={Rectangle, draw, node family={text width=manual, text width align=right}}]
+\node (a) {Foo};
+\node[below=of a] (b) {Foobar};
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/node family/prefix=\meta{prefix}(initially \expandafter|\string\pgfpictureid-|)}
+The family names are prefixed with the value of |/tikz/node family/prefix|.
+\end{key}
+
+\begin{key}{/tikz/node family/setup shape=\meta{shape}}
+This adds instructions to the \meta{shape}'s definition which
+adjust the text box's dimensions according to the family.
+
+This should be only used once per shape.
+\end{key}
+\begin{codeexample}[width=9cm,preamble=\usetikzlibrary{ext.node-families,shapes.geometric}]
+\tikzexternaldisable % ext.node-families does not work with active externalization
+\begin{tikzpicture}[node family/setup shape=diamond]
+\foreach \cnt[count=\Cnt] in {a,...,h}
+  \node[draw, diamond, node family/text=aTOh] (\cnt)
+    at (right:\Cnt) {\cnt};
+\draw[help lines] (a.south) -- (h.south) (a.north) -- (h.north) (a.base-|a.west) -- (h.base-|h.east);
+\end{tikzpicture}
+\end{codeexample}
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-node-families.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,110 @@
+% !TeX root = tikz-ext-manual.tex
+% !TeX spellcheck = en_US
+% 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.
+%
+
+\section{Arc \emph{to} a point}
+\label{library:paths.arcto}
+
+\begin{tikzlibrary}{ext.paths.arcto}
+  This library adds the new path operation |arc to| that specifies an arc \emph{to} a point~--
+  without the user having to specify any angles.
+\end{tikzlibrary}
+
+\begin{codeexample}[width=.5\linewidth,preamble=\usetikzlibrary{ext.paths.arcto}]
+\begin{tikzpicture}[ultra thick,dot/.style={label={#1}}]
+\coordinate[dot=below left:$a$] (a) at (0,0);
+\coordinate[dot=above right:$b$] (b) at (2,3);
+\begin{scope}[
+  radius=3,
+  nodes={
+    shape=circle,
+    fill=white,
+    fill opacity=.9,
+    text opacity=1,
+    inner sep=+0pt,
+    sloped,
+    allow upside down
+  }]
+\draw[blue]    (a) arc to[] 
+  node[near start] {.25} node {.5} node[near end] {.75} (b);
+\draw[red]     (a) arc to[clockwise]
+  node[near start] {.25} node {.5} node[near end] {.75} (b);
+\draw[blue!50] (a) arc to[large]
+  node[near start] {.25} node {.5} node[near end] {.75} (b);
+\draw[red!50]  (a) arc to[large, clockwise]
+  node[near start] {.25} node {.5} node[near end] {.75} (b);
+\end{scope}
+
+\fill[radius=2pt] (a) circle[] (b) circle[];
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{pathoperation}{arc to}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+When this operation is used, the path gets extended by an arc that goes through
+the current point and \meta{coordinate}.
+
+For two points there exist two circles or four arcs that go through or connect
+these two points. Which one of these is constructed is determined by the following
+options that can be used inside of \meta{options}.
+
+\begin{stylekey}{/tikz/arc to/clockwise}
+  This constructs an arc that goes clockwise.
+\end{stylekey}
+
+\begin{stylekey}{/tikz/arc to/counter clockwise}
+  This constructs an arc that goes counter clockwise.
+  
+  This is the default.
+\end{stylekey}
+
+\begin{stylekey}{/tikz/arc to/large}
+  This constructs an arc whose angle is larger than $180^\circ$.
+\end{stylekey}
+
+\begin{stylekey}{/tikz/arc to/small}
+  This constructs an arc whose angle is smaller than $180^\circ$.
+\end{stylekey}
+
+\begin{key}{/tikz/arc to/rotate=\meta{degree}}
+  Rotates the arc by \meta{degree}.
+  This is only noticeable when |x radius| and |y radius| are different.
+\end{key}
+
+\begin{key}{/tikz/arc to/x radius=\meta{value}}
+  This forwards the \meta{value} to \referenceKeyandIndexO{x radius}.
+  Its \meta{value} is used for the radius of the arc.
+\end{key}
+
+\begin{key}{/tikz/arc to/y radius=\meta{value}}
+  This forwards the \meta{value} to \referenceKeyandIndexO{y radius}.
+  Its \meta{value} is used for the radius of the arc.
+\end{key}
+
+\begin{key}{/tikz/arc to/radius=\meta{value}}
+  This forwards the \meta{value} to both |/tikz/x radius| and |/tikz/y radius|.
+  Its \meta{value} is used for radius of the arc.
+\end{key}
+
+\begin{stylekey}{/tikz/every arc to}
+  After |/tikz/every arc| this will also be applied before any \meta{options} are set.
+\end{stylekey}
+
+It should be noted that this uses |\pgfpatharcto| for which the \tikzname\space manual warns:\indexCommandO\pgfpatharcto
+\begin{quote}\itshape
+    The internal computations necessary for this command are numerically very unstable.
+    In particular, the arc will not always really end at the \meta{target coordinate},
+    but may be off by up to several points.
+    A more precise positioning is currently infeasible due to \TeX's numerical weaknesses.
+    The only case it works quite nicely is when the resulting angle is a multiple of $90^\circ$. 
+\end{quote}
+
+The |arc to| path operation will also work only in the |canvas| coordinate system.
+The lengths of the vectors $(1, 0)$ and $(0, 1)$ will be used for the calculation of the radii
+but no further consideration is done.
+\end{pathoperation}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,185 @@
+% !TeX root = tikz-ext-manual.tex
+% !TeX spellcheck = en_US
+% 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.
+%
+
+\section{More Horizontal and Vertical Lines}
+\label{library:paths.ortho}
+
+\begin{tikzlibrary}{ext.paths.ortho}
+  This library adds new path specifications \verb!|-|!, \verb!-|-! as well as
+  |r-ud|, |r-du|, |r-lr| and |r-rl|.
+\end{tikzlibrary}
+
+\subsection{Zig-Zag}
+Similar to the path operations \verb!|-! and \verb!-|! this library adds\indexPathOperationO{\protect\pgfmanualbar-}\indexPathOperationO{-\protect\pgfmanualbar}
+the path operations \verb!|-|! and \verb!-|-!.
+{\catcode`\|=12
+\begin{pathoperation}[noindex]{|-|}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+    \index{---1@\protect\texttt{\protect\pgfmanualbar-\protect\pgfmanualbar} path operation}%
+    \index{Path operations!---1@\protect\texttt{\protect\pgfmanualbar-\protect\pgfmanualbar}}%
+    \pgfmanualpdflabel[\catcode`\|=12 ]{|-|}{}%
+    This operation means ``first vertical, then horizontal and then vertical again''.
+\end{pathoperation}
+\begin{pathoperation}[noindex]{-|-}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+    \index{--1@\protect\texttt{-\protect\pgfmanualbar-} path operation}%
+    \index{Path operations!--1@\protect\texttt{-\protect\pgfmanualbar-}}%
+    \pgfmanualpdflabel[\catcode`\|=12 ]{-|-}{}%
+    This operation means ``first horizontal, then vertical and then horizontal again''.
+\end{pathoperation}
+}
+\begin{key}{/tikz/hvvh/ratio=\meta{ratio} (initially 0.5)}
+  This sets the ratio for the middle part of the Zig-Zag connection.
+  
+  For values $\meta{ratio} < 0$ and $\meta{ratio} > 1$ the Zig-Zag lines will
+  look more like Zig-Zig lines.
+\begin{codeexample}[preamble=\usetikzlibrary{paths.ortho}]
+\begin{tikzpicture}[very thick, rounded corners]
+\draw[help lines] (-.25, -1.25) grid (2.25, 1.25);
+\draw (0, 0) -|-            (2, 1) --
+      (2, 0) -|-[ratio=.25] (0,-1) -- cycle;
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+%TODO: hvvh/distance needs fixing, maybe?
+\begin{key}{/tikz/hvvh/distance=\meta{distance}}
+  This sets the distance between the start point
+  and the middle part of the Zig-Zag connection.
+  
+  For values $\meta{distance} < 0$ the distance will be used for the target coordinate.
+\begin{codeexample}[width=8cm,preamble=\usetikzlibrary{ext.paths.ortho}]
+\begin{tikzpicture}[very thick,-latex]
+\draw[help lines,-] (-.25, -.25) grid (5.25, 3.25);
+\draw (0, 0) -|-[distance= .5cm] ++(2, 1);
+\draw (0, 2) -|-[distance=-.5cm] ++(2, 1);
+
+\tikzset{xshift=3cm}
+\draw (2, 1) -|-[distance= .5cm] ++(-2, -1);
+\draw (2, 3) -|-[distance=-.5cm] ++(-2, -1);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+\begin{key}{/tikz/hvvh/from center=\opt{\meta{true or false}} (default true)}
+  When nodes get connected the placement of the middle part of the Zig-Zag
+  and the Zig-Zig (see below) connections will be calculated from the border
+  of these nodes.
+  The middle part of the connections can be calculated from the nodes' center
+  if this key is set to |true|.
+\end{key}
+
+New timers are setup for both the Zig-Zag and the Zig-Zig connections,
+these can be configured through the following keys.
+\begin{codeexample}[width=8cm,preamble=\usetikzlibrary{paths.ortho}]
+\tikz \draw (0,0) -|- (2,3) 
+  foreach \p in {0.0, 0.25, 0.5, 0.75, 1.0}{
+    node [pos=\p] {\p}};
+\end{codeexample}
+\begin{key}{/tikz/hvvh/spacing=\meta{number} (initially 4)}
+  Unless $\meta{number} = 0$ is set
+  \begin{itemize}
+  \item |pos = 0| will be at the start,\indexKeyO{pos}
+  \item |pos = 1| will be at the end,
+  \item |pos = |$\frac{1}{\meta{number}}$ will be at the first kink,
+  \item |pos = |$\frac{\meta{number}-1}{\meta{number}}$ will be at the second kink and
+  \item |pos = .5| will be in the middle of the middle part of the connection.
+  \end{itemize}
+  
+  If $\meta{number} = 0$ then
+  \begin{itemize}
+  \item |pos = -1| will be at the start,
+  \item |pos = 2| will be at the end,
+  \item |pos = 0| will be at the first kink,
+  \item |pos = 1| will be at the second kink and
+  \item |pos = .5| will still be in the middle of the middle part of the connection.
+  \end{itemize}
+\end{key}
+\begin{key}{/tikz/hvvh/middle 0 to 1}
+  This is an alias for |spacing = 0|.
+\end{key}
+
+\subsection{Zig-Zig}
+\begin{pathoperation}{r-ud}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+  This operation means ``first up, then horizontal and then down''.
+  \begin{key}{/tikz/udlr/ud distance=\meta{length} (initially .5cm)}
+    This sets the distance between the start and the horizontal line to \meta{length}.
+  \end{key}
+\end{pathoperation}
+\begin{pathoperation}{r-du}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+  This operation means ``first down, then horizontal and then up''.
+  \begin{key}{/tikz/udlr/du distance=\meta{length} (initially .5cm)}
+    This sets the distance between the start and the horizontal line to \meta{length}.
+  \end{key}
+\end{pathoperation}
+\begin{pathoperation}{r-lr}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+  This operation means ``left down, then vertical and then right''.
+  \begin{key}{/tikz/udlr/lr distance=\meta{length} (initially .5cm)}
+    This sets the distance between the start and the vertical line to \meta{length}.
+  \end{key}
+\end{pathoperation}
+\begin{pathoperation}{r-rl}{\opt{\oarg{options}}\meta{coordinate or cycle}}
+  This operation means ``first right, then vertical and then down''.
+  \begin{key}{/tikz/udlr/rl distance=\meta{length} (initially .5cm)}
+    This sets the distance between the start and the vertical line to \meta{length}.
+  \end{key}
+\end{pathoperation}
+
+All distances can be set with on key.
+\begin{key}{/tikz/udlr/distance=\meta{length}}
+  Sets all distances in the |/tikz/udlr| namespace.
+\end{key}
+
+\begin{key}{/tikz/udlr/from center=\opt{\meta{true or false}} (initially false, default true)}
+  This is an alias for |/tikz/hvvh/from center|.
+\end{key}
+
+\subsection{Even more Horizontal and Vertical Lines}
+
+The following keys can be used to access vertical and horizontal line path operations.
+\begin{stylekey}{/tikz/horizontal vertical}
+  This installs  \verb!to path = -| (\tikztotarget) \tikztonodes! that can be used with\indexKeyO{to path}
+  the path operations |to| or |edge|.
+\end{stylekey}
+\begin{stylekey}{/tikz/vertical horizontal}
+  This installs \verb!to path = |- (\tikztotarget) \tikztonodes! that can be used with
+  the path operations |to| or |edge|.
+\end{stylekey}
+\begin{stylekey}{/tikz/horizontal vertical horizontal}
+  This installs  \verb!to path = -|- (\tikztotarget) \tikztonodes! that can be used with
+  the path operations |to| or |edge|.
+\end{stylekey}
+\begin{stylekey}{/tikz/vertical horizontal vertical}
+  This installs  \verb!to path = |-| (\tikztotarget) \tikztonodes! that can be used with
+  the path operations |to| or |edge|.
+\end{stylekey}
+
+When connecting rectangular nodes, these keys could be useful as well.
+They all need to be given to a |to| or |edge| path operation.
+\begin{stylekey}{/tikz/only vertical second=\opt{\meta{length}} (default 0pt)}
+This draws a vertical line from the start point to the target point so that
+it connects to the target point in the center (or at its border in case it is a node).
+
+The optional \meta{length} can be used to shift the line orthogonally to its direction.
+\end{stylekey}
+\begin{stylekey}{/tikz/only horizontal second=\opt{\meta{length}} (default 0pt)}
+This draws a horizontal line from the start point to the target point so that
+it connects to the target point in the center (or at its border in case it is a node).
+
+The optional \meta{length} can be used to shift the line orthogonally to its direction.
+\end{stylekey}
+\begin{stylekey}{/tikz/only vertical first=\opt{\meta{length}} (default 0pt)}
+This draws a vertical line from the start point to the target point so that
+it connects to the start point in the center (or at its border in case it is a node).
+
+The optional \meta{length} can be used to shift the line orthogonally to its direction.
+\end{stylekey}
+\begin{stylekey}{/tikz/only horizontal first=\opt{\meta{length}} (default 0pt)}
+This draws a horizontal line from the start point to the target point so that
+it connects to the start point in the center (or at its border in case it is a node).
+
+The optional \meta{length} can be used to shift the line orthogonally to its direction.
+\end{stylekey}


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,90 @@
+% !TeX root = tikz-ext-manual.tex
+% !TeX spellcheck = en_US
+% 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.
+%
+
+\section{Extending the Path Timers}
+\label{library:timer}
+
+\begin{tikzlibrary}{ext.paths.timer}
+  This library adds timers to the path specifications |rectangle|, |parabola|, |sin| and |cos|.
+\end{tikzlibrary}
+
+In \tikzname, the path specification |rectangle|, |parabola|, |sin| and |cos| do not provide
+their own timer, i.\,e. a node placing algorithm that is dependent on the actual path.
+For |rectangle| the timer of the straight line between the rectangle's corners is used, for
+the other paths, nodes, coordinates, pics, etc. are placed on the last coordinate.
+
+This library allows this.
+
+\subsection{Rectangle}
+\indexPathOperationO{rectangle}
+
+For the |rectangle| path operator, the timer starts with |pos = 0| (= |at start|) from\indexKeyO{pos}
+the starting coordinate in a counter-clockwise direction along the rectangle.
+The corners will be at positions 0.0, 0.25, 0.5, 0.75 and 1.0.
+
+\begin{codeexample}[width=10cm,preamble=\usetikzlibrary{ext.paths.timer}]
+\begin{tikzpicture}[scale=2, every pin edge/.style={latex-, gray}]
+\coordinate [label=above right:Target] (A) at (0,0);
+\coordinate [label=below left:Start]   (B) at (1,2);
+\draw[->, help lines] ([shift=(50:.3 and .75)] .5,1)
+  arc[start angle=50, delta angle=340, x radius=.3, y radius=.75];
+\draw (B) rectangle (A)
+  foreach \pos/\ang in {at start/60, very near start/90, near start/180, pos=.375/180,
+                        midway/180, pos=.625/270, near end/0, very near end/0, at end/0}{
+    node[pin=\ang:\pos, style/.expanded=\pos]{}};
+\end{tikzpicture}
+\end{codeexample}
+
+\subsection{Parabola}
+\indexPathOperationO{parabola}%
+
+For the |parabola| path operator the timer is similar to the |.. controls ..| operator.
+
+The position 0.5 will lie at the |bend|.
+\begin{codeexample}[width=.3\linewidth,preamble=\usetikzlibrary{ext.paths.timer}]
+\begin{tikzpicture}
+\draw[help lines]  (-2.25, -1.25) grid (2.25, 3.25);
+\draw              ( 2,-1) parabola bend (0,0) (-1,3);
+\draw[ultra thick] (-2,-1) parabola bend (0,0) ( 1,3)
+  foreach \pos in {1,...,4,6,7,...,9}{
+    node[
+      pos=.\pos, sloped, fill=white, font=\small, inner sep=+0pt
+    ] {\pos}
+  };
+\end{tikzpicture}
+\end{codeexample}
+
+If no |bend| is specified half the positions will collapse into one end of the curve.
+
+\begin{codeexample}[width=.3\linewidth,preamble=\usetikzlibrary{ext.paths.timer}]
+\begin{tikzpicture}[every pin edge/.style={latex-, shorten <=1pt, gray}]
+\draw (-2,-2) parabola (1,0)
+  foreach \pos in {0, 1, ..., 10} {
+    node [pos=\pos/10, pin={[anchor=-18*\pos+90]-18*\pos+270:\pos}]{}
+  };
+\end{tikzpicture}
+\end{codeexample}
+
+\subsection{Sine/Cosine}
+\indexPathOperationO{sin}\indexPathOperationO{cos}%
+
+The |sin| and |cos| path operators also allow placing of nodes along their paths.
+
+\begin{codeexample}[width=.3\linewidth,preamble=\usetikzlibrary{ext.paths.timer}]
+\begin{tikzpicture}[mark nodes on line/.style={insert path={
+  foreach \pos in {1, ..., 9} {node[
+    sloped, fill=white, font=\small, inner sep=+0pt, pos=\pos/10] {\pos}}}}]
+\draw[help lines] (-2.1,-2.1) grid (2.1,0.1);
+\draw             (-2,-2) sin (1,0) [mark nodes on line];
+\draw[shift=(0:1)](-2,-2) cos (1,0) [mark nodes on line];
+\end{tikzpicture}
+\end{codeexample}
+
+\endinput


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,50 @@
+% !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.
+%
+\clearpage
+\section{Using Images as a Pattern}
+\label{library:patterns.images}
+
+\begin{tikzlibrary}{ext.patterns.images}
+  This library allows to use an image to be used as a repeating pattern for a path.
+\end{tikzlibrary}
+
+With this library arbitrary images (or indeed PDF documents) can be used as
+a repeating pattern for the background of a path.
+
+This is a two-step process:
+\begin{enumerate}
+\item Declaring an image as an ``image-pattern''.
+\item Using the ``image-pattern''.
+\end{enumerate}
+
+\begin{command}{\pgfsetupimageaspattern\oarg{options}\marg{name}\marg{image}}
+\end{command}
+
+\begin{key}{/tikz/image as pattern=\meta{options} (default |\{\}|)}
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.patterns.images}]
+\pgfsetupimageaspattern[width=.5cm]{grid}{example-image-1x1}
+\tikz \node[star, minimum size=3cm, draw,
+  image as pattern={name=grid,options={left, bottom, y=-.5cm, rotate=45}}] {};
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/image as pattern/name=\meta{name}}
+Specifies the name of the ``image-pattern'' to be used.
+\end{key}
+
+\begin{stylekey}{/tikz/image as pattern/option}
+Options that's be used by the internal |\pgftext|,\indexCommandO{\pgftext}
+only keys from |/pgf/text| should be used.\indexKeyO[/pgf/]{text}
+\end{stylekey}
+
+\begin{stylekey}{/tikz/image as pattern/options=\meta{style}}
+Appends style |/tikz/image as pattern/option|.
+\end{stylekey}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,183 @@
+% !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.
+%
+\clearpage
+\section{Positioning Plus}
+\label{library:positioning-plus}
+\tikzsetnextfilename{posplus}
+\begin{tikzlibrary}{ext.positioning-plus}
+  With the help of the |positioning|\indexLibrary{positioning} and the |fit|\indexLibrary{fit} library this extends the placement of nodes.
+\end{tikzlibrary}
+
+\subsection{Useful corner anchors}
+The anchors |corner north east|, |corner north west|, |corner south west| and |corner south east|
+are defined as ``generic anchors'', i.\,e. they are defined for all shapes.
+This is mostly useful for the placement of circular shapes.
+\begin{stylekey}{/tikz/corner above left=\opt{\meta{specification}} (default 0pt)}
+  Similar as \referenceKeyandIndexO{above left} of the \tikzname\space library |positioning|
+  but uses the |corner north west| anchor.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner below left=\opt{\meta{specification}} (default 0pt)}
+  Similar as \referenceKeyandIndexO{below left} of the \tikzname\space library |positioning|
+  but uses the |corner south west| anchor.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner above right=\opt{\meta{specification}} (default 0pt)}
+  Similar as \referenceKeyandIndexO{above right} of the \tikzname\space library |positioning|
+  but uses the |corner north east| anchor.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner below right=\opt{\meta{specification}} (default 0pt)}
+  Similar as \referenceKeyandIndexO{below right} of the \tikzname\space library |positioning|
+  but uses the |corner south east| anchor.
+\end{stylekey}
+
+\begin{codeexample}[width=.6\linewidth,preamble=\usetikzlibrary{ext.positioning-plus}]
+\Huge
+\begin{tikzpicture}
+\node[name=s,shape=circle,shape example]
+  {Circle\vrule width 1pt height 2cm};
+\foreach \anchor/\placement in {
+  north west/above left, north/above, north east/above right,
+  west/left, center/above, east/right,
+  mid west/right, mid/above, mid east/left,
+  base west/left, base/below, base east/right,
+  south west/below left, south/below, south east/below right,
+  text/left, 10/right, 130/above}
+  \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+    node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\draw (s.corner north west) rectangle (s.corner south east);
+\foreach \anchor/\placement in {
+  corner north west/above left, corner north east/above right,
+  corner south west/below left, corner south east/below right}
+  \draw[red,shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+    node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+
+\subsection{Useful placement keys for vertical and horizontal alignment}
+\begin{stylekey}{/tikz/north left=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{left} but aligns the nodes at their |north| border.
+  
+  This is basically the same as |left=of reference.north west, anchor=north east|.
+  %
+\begin{codeexample}[preamble=\usetikzlibrary{ext.positioning-plus}]
+\begin{tikzpicture}[nodes=draw]
+\node[minimum height=2cm] (a) {};
+\node[minimum height=3cm, north right=of a] {};
+\end{tikzpicture}
+\end{codeexample}
+\end{stylekey}
+\begin{stylekey}{/tikz/north right=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{right} but aligns the nodes at their |north| border.
+  
+  This is basically the same as |left=of reference.north east, anchor=north west|.
+\end{stylekey}
+\begin{stylekey}{/tikz/south left=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{left} but aligns the nodes at their |south| border.
+  
+  This is basically the same as |left=of reference.south west, anchor=south east|.
+\end{stylekey}
+\begin{stylekey}{/tikz/south right=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{right} but aligns the nodes at their |south| border.
+  
+  This is basically the same as |left=of reference.south east, anchor=south west|.
+\end{stylekey}
+\begin{stylekey}{/tikz/west above=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{above} but aligns the nodes at their |west| border.
+  
+  This is basically the same as |left=of reference.north west, anchor=south west|.
+\end{stylekey}
+\begin{stylekey}{/tikz/west below=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{below} but aligns the nodes at their |west| border.
+  
+  This is basically the same as |left=of reference.south west, anchor=north west|.
+\end{stylekey}
+\begin{stylekey}{/tikz/east above=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{above} but aligns the nodes at their |east| border.
+  
+  This is basically the same as |left=of reference.north east, anchor=south east|.
+\end{stylekey}
+\begin{stylekey}{/tikz/east below=\opt{\meta{specification}} (default 0pt)}
+  Like \referenceKeyandIndexO{below} but aligns the nodes at their |east| border.
+  
+  This is basically the same as |left=of reference.south east, anchor=north east|.
+\end{stylekey}
+
+The same exist for the recently introduces corner anchors, too.
+\begin{stylekey}{/tikz/corner north left=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/north left| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner north right=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/north right| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner south left=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/south left| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner south right=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/south right| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner west above=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/west above| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner west below=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/west below| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner east above=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/east above| but uses the new corner anchors.
+\end{stylekey}
+\begin{stylekey}{/tikz/corner east below=\opt{\meta{specification}} (default 0pt)}
+  The same as |/tikz/east below| but uses the new corner anchors.
+\end{stylekey}
+
+While the \meta{specification} of all these keys still accept the same form as with \tikzname,
+the |ext.positioning-plus| library extends this even more.
+
+The specification after |of| can contain a list of coordinates
+(like the |fit| key of the |fit| library).
+This means that the new node will be placed in relation to a rectangular bounding box
+that fits around all this nodes in the list.
+
+If this list is prefixed with \verb!|!, |-| or |+|,
+the new node will also have the same height (\verb!|!),
+the same width (|-|) or both as this bounding box.
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.positioning-plus}]
+\begin{tikzpicture}[nodes=draw]
+\node                     (A) {A};
+\node[below=of A]         (BCD) {BCD};
+\node[right=of |(A)(BCD)] (c) {};
+\node[below=.5:of -(A)(BCD)] (d) {};
+\draw[help lines] (BCD.south west) -- (c.south east)
+                  (BCD.north east) -- (d.south east);
+\end{tikzpicture}
+\end{codeexample}
+
+This functionality is also available without the placement:
+\begin{stylekey}{/tikz/fit bounding box=\meta{list of coordinates}}
+  Creates a rectangular node with the name |fit bounding box| that encompasses
+  the \meta{list of coordinates}.
+\end{stylekey}
+\begin{stylekey}{/tikz/span vertical=\meta{list of coordinates}}
+  Creates a rectangular node with the name |fit bounding box| that encompasses
+  the \meta{list of coordinates} \emph{and} sets the \referenceKeyandIndexO[/pgf]{minimum height} to
+  the height of this bounding box.
+\end{stylekey}
+\begin{stylekey}{/tikz/span horizontal=\meta{list of coordinates}}
+  Creates a rectangular node with the name |fit bounding box| that encompasses
+  the \meta{list of coordinates} \emph{and} sets the \referenceKeyandIndexO[/pgf]{minimum width} to
+  the width of this bounding box.
+\end{stylekey}
+\begin{stylekey}{/tikz/span=\meta{list of coordinates}}
+  Is a combination of |/tikz/span vertical| and |/tikz/span horizontal|.
+\end{stylekey}
+
+As you maybe noticed in the example above, the \meta{specification} also allows a prefix
+delimited by |:| which the |node distance| will be multiplied to with for the placement.%
+\footnote{This is probably more useful when \referenceKeyandIndexO{on grid} is used.}
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,63 @@
+% !TeX root = tikz-ext-manual.tex
+% !TeX spellcheck = en_US
+% 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.
+%
+
+\section{Arcs through Three Points}
+\label{library:topaths.arcthrough}
+\begin{tikzlibrary}{ext.topaths.arcthrough}
+  This library allows to use an arc defined by three points.
+\end{tikzlibrary}
+
+\begin{codeexample}[width=10cm,preamble=\usetikzlibrary{ext.topaths.arcthrough}]
+\begin{tikzpicture}
+\coordinate[label=above right:$A$] (A) at ( 3, 1);
+\coordinate[label=above:$B$]       (B) at ( 1, 2);
+\coordinate[label=below left:$C$]  (C) at (-2,-2);
+
+\draw[ultra thick, draw=green, fill=green!50]
+  (B) to[arc through={clockwise,(A)}] (C) 
+  -- (arc through center) -- cycle;
+\draw[ultra thick, draw=blue, fill=blue!50]
+  (B) to[arc through=(A)]             (C)
+  -- (arc through center) -- cycle;
+
+\foreach \p in {A,B,C, arc through center} \fill[red] (\p) circle[radius=2pt];
+\end{tikzpicture}
+\end{codeexample}
+
+This can only by used for circles in the |canvas| coordinate system.
+
+\begin{multicols}{2}
+\begin{key}{/tikz/arc through/through=\meta{coordinate} (initially {(0,0)})}
+  The coordinate on the circle that defines~-- together with the
+  starting and target point~-- a circle.
+\end{key}
+
+\begin{key}{/tikz/arc through/center suffix=\meta{suffix} (initially {})}
+  The |arc through| will define a coordinate named |arc through center|\meta{suffix}
+  so that it can be referenced later.
+\end{key}
+
+\begin{key}{/tikz/arc through/clockwise}
+  The resulting arc will go clockwise from the starting point to the target point.
+  This will not necessarily go through the |through| point.
+\end{key}
+
+\begin{key}{/tikz/arc through/counter clockwise}
+  The resulting arc will go counter clockwise from the starting point to the target point.
+  This will not necessarily go through the |through| point.
+\end{key}
+
+\begin{key}{/tikz/arc through=\meta{key-value}}
+  This key should be used with |to|\indexPathOperationO{to} or |edge|\indexPathOperationO{edge}.
+  A parameter other than |center suffix|, |clockwise| or |counter clockwise| will
+  be assumed to be the |through| coordinate.
+\end{key}
+\end{multicols}
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-trans.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-trans.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-trans.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,136 @@
+% !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.
+%
+
+\clearpage
+\section{Mirror, Mirror on the Wall}
+\label{library:mirror}
+
+\begin{tikzlibrary}{ext.transformations.mirror}
+  This library adds more transformations to \tikzname.
+\end{tikzlibrary}
+
+As explained in section~\ref{pgflibrary:transformations}, there are two approaches to setting a mirror transformation.
+As with the commands in PGF, we'll be using a lowercase |m| for the reflection matrix and an uppercase |M| for the built-in approach.
+
+\subsection{Using the reflection matrix}
+
+\begin{codeexample}[width=.4\linewidth,preamble=\usetikzlibrary{shapes.geometric,ext.transformations.mirror}]
+\begin{tikzpicture}[line join=round, thick, reg poly/.style={
+  shape=regular polygon, regular polygon sides={#1}}]
+\node[reg poly=5, minimum size=+2cm, draw, very thick] (a) {};
+\foreach \i[evaluate={\col=(\i-1)/.04}] in {1,...,5}
+  \node [mirror=(a.corner \i)--(a.side \i), transform shape,
+         reg poly=5, minimum size=+2cm, draw=red!\col!blue] {};
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{key}{/tikz/xmirror=\meta{value or coordinate}}
+  Sets up a transformation that mirrors along a horizontal line that goes through point $(\text{\meta{value}}, 0)$ or \meta{coordinate}.
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-0.25, -.25) grid (3.25, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (1.5, -.25) coordinate (m) -- (1.5, 1.25);
+\draw[xmirror=(m),-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/ymirror=\meta{value or coordinate}}
+  Sets up a transformation that mirrors along a vertical line that goes through point $(0, \text{\meta{value}})$ or \meta{coordinate}.
+\end{key}
+
+
+\begin{key}{/tikz/mirror x=\meta{coordinate}}
+  Similar to |/tikz/xmirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.transformations.mirror}]
+\begin{tikzpicture}[x=.5cm, y=(45:1cm)]
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (1.5, -.25) coordinate (m) -- (1.5, 1.25);
+
+\draw[ xmirror=(m), -latex, red, dotted] (0,0) .. controls (.5,1) .. (1,1);
+\draw[mirror x=(m), -latex]              (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/mirror y=\meta{coordinate}}
+  Similar to |/tikz/ymirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
+\end{key}
+
+
+\begin{key}{/tikz/mirror=\meta{point A}|--|\meta{point B}}
+  Sets up a transformation that mirrors along a line that goes through \meta{point A} and \meta{point B}.
+  
+  When only \meta{point A} is given that line goes through \meta{point A} and the origin.
+\end{key}
+
+\subsection{Using built-in transformations}
+
+\begin{codeexample}[width=.4\linewidth,preamble=\usetikzlibrary{shapes.geometric,ext.transformations.mirror}]
+\begin{tikzpicture}[line join=round, thick, reg poly/.style={
+  shape=regular polygon, regular polygon sides={#1}}]
+\node[reg poly=5, minimum size=+2cm, draw, very thick] (a) {};
+\foreach \i[evaluate={\col=(\i-1)/.04}] in {1,...,5}
+  \node [Mirror=(a.corner \i)--(a.side \i), transform shape,
+         reg poly=5, minimum size=+2cm, draw=red!\col!blue] {};
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{key}{/tikz/xMirror=\meta{value or coordinate}}
+  Sets up a transformation that mirrors along a horizontal line that goes through point $(\text{\meta{value}}, 0)$ or \meta{coordinate}.
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-0.25, -.25) grid (3.25, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (1.5, -.25) coordinate (m) -- (1.5, 1.25);
+\draw[xMirror=(m),-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/yMirror=\meta{value or coordinate}}
+  Sets up a transformation that mirrors along a vertical line that goes through point $(0, \text{\meta{value}})$ or \meta{coordinate}.
+\end{key}
+
+
+\begin{key}{/tikz/Mirror x=\meta{coordinate}}
+  Similar to |/tikz/xMirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.transformations.mirror}]
+\begin{tikzpicture}[x=.5cm, y=(45:1cm)]
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (1.5, -.25) coordinate (m) -- (1.5, 1.25);
+
+\draw[ xMirror=(m), -latex, red, dotted] (0,0) .. controls (.5,1) .. (1,1);
+\draw[Mirror x=(m), -latex]              (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/Mirror y=\meta{coordinate}}
+  Similar to |/tikz/yMirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
+\end{key}
+
+
+\begin{key}{/tikz/Mirror=\meta{point A}\opt{|--|\meta{point B}}}
+  Sets up a transformation that mirrors along a line that goes through \meta{point A} and \meta{point B}.
+  
+  When only \meta{point A} is given that line goes through \meta{point A} and the origin.
+\end{key}
+
+\endinput


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-trans.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,192 @@
+% !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}
+\newcommand*\tikzextversion{0.2}
+
+%\includeonly{
+%   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-topaths.arcthrough,
+%   tikz-ext-manual-en-library-trans,
+%   tikz-ext-manual-en-pgf-trans,
+%   tikz-ext-manual-en-library-misc,
+%}
+\begin{document}
+
+\title{\bfseries The \tikzextname\space Package\\
+  \large Manual for version \tikzextversion\\[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{calendar-plus}   \include{tikz-ext-manual-en-library-calendar-plus}
+\tikzsetfigurename{node-families}   \include{tikz-ext-manual-en-library-node-families}
+\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{topaths.arcthrough}\include{tikz-ext-manual-en-library-topaths.arcthrough}
+\tikzsetfigurename{trans}             \include{tikz-ext-manual-en-library-trans}
+
+\part{PGF Libraries}
+\label{part:pgf}
+These libraries (should) work with both PGF 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/TeX/if=c#1
+      {/utils/TeX/ifnum={#2<5}{bluelight}{bluedark}}
+      {/utils/TeX/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.trans}\include{tikz-ext-manual-en-pgf-trans}
+
+\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;},
+  declare constant={smallR=1; segments=20;},
+  full arc=segments]
+\foreach \iN[evaluate={\endRadius=bigR(\iN+1);}, 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, declare constant={segments=25;}, full arc=segments}
+\filldraw[fill=gray!50] (right:smallR)
+  \foreach \iN[evaluate={\endRadius=bigR(\iN+1);}, 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.misc}\include{tikz-ext-manual-en-library-misc}
+
+%%% END
+\newcommand*{\addTikz}[1]{Added \tikzname\space library \texttt{ext.#1}.}
+\newcommand*{\addPGF}[1]{Added PGF library \texttt{ext.#1}.}
+\part{Changelog \& Index}
+\section*{Changelog}
+\begin{multicols}{2}
+Version 0.2
+\begin{itemize}
+\item \addTikz{positioning-plus}
+\item \addTikz{node-families}
+\end{itemize}
+
+Version 0.1
+\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
+
+%\typeout{Examples: \the\codeexamplecount}%
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,368 @@
+% !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.
+%
+
+\usepackage[version=latest]{pgf}
+
+\usepackage{xkeyval,calc,listings,tikz,fp}
+
+\usepackage{imakeidx}
+\makeindex
+\usepackage{hyperref}
+\hypersetup{%
+    colorlinks=false, % 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{unicode-math}
+\setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
+\usepackage[ttscale=.85]{libertine}
+\setmonofont[Scale=0.8]{Bitstream Vera Sans Mono}
+
+\makeatletter
+\renewcommand*\l at section[2]{%
+  \ifnum \c at 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 at xt@\@pnumwidth{\hss #2}\par
+    \endgroup
+  \fi}
+\renewcommand*\l at subsection{\@dottedtocline{2}{2.5em}{3.3em}}
+\renewcommand*\l at 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 at a{#3}%
+  \expandafter\ifx\csname #1@#2\endcsname\reserved at a\else
+    \typeout{^^JLabel `#2' changed:^^J\meaning\reserved at a^^J\expandafter\meaning\csname #1@#2\endcsname^^J}%
+    \@tempswatrue
+  \fi}
+\makeatother
+
+\usetikzlibrary{
+  ext.calendar-plus,
+  ext.misc,
+  ext.node-families,
+  ext.paths.arcto,
+  ext.paths.ortho,
+  ext.paths.timer,
+  ext.patterns.images,
+  ext.positioning-plus,
+  ext.topaths.arcthrough,
+  ext.transformations.mirror,
+  %
+  calc,
+  fit,
+  shapes.geometric,
+  through,
+  trees,
+}
+
+%% 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 at setup@code%
+    \gdef\pgfmanual at do@this{%
+      {%
+        \returntospace%
+        \commenthandler%
+        \xdef\code at temp{#1}% removes returns and comments
+      }%
+      \edef\pgfmanualmcatcode{\the\catcode`\^^M}%
+      \catcode`\^^M=9\relax%
+      \expandafter\scantokens\expandafter{\code at temp}%
+      \catcode`\^^M=\pgfmanualmcatcode%
+    }%
+  \fi%
+  \ifcode at hidden\else
+    \ifcode at execute%
+      \setbox\codeexamplebox=\hbox{%
+        \ifx\code at render\pgfutil at empty%
+        {%
+          {%
+            \returntospace%
+            \commenthandler%
+            \xdef\code at temp{#1}% removes returns and comments
+          }%
+          \catcode`\^^M=9%
+          \colorbox{graphicbackground}{\color{black}\ignorespaces%
+            \code at pre\expandafter\scantokens\expandafter{\code at temp\ignorespaces}\code at post\ignorespaces}%
+        }%
+        \else%
+          \global\let\code at temp\code at render%
+          \colorbox{graphicbackground}{\color{black}\ignorespaces%
+            \code at render}%
+        \fi%
+      }%
+      \ifx\code at animation@list\pgfutil at 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 at animation@list{%
+          \setbox\codeexampleboxanim=\hbox{\colorbox{animationgraphicbackground}{%
+              \tikzset{make snapshot of=\pgfmanualtime}%
+              \scalebox{\pgfmanualanimscale}{\color{black}\ignorespaces%
+                \code at animation@pre\expandafter\scantokens\expandafter{\code at temp\ignorespaces}\code at 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 at start{\par}%
+        \def\code at flushstart{}\def\code at flushend{}%
+        \def\code at mid{\parskip2pt\par\noindent}%
+        \def\code at width{\linewidth-6pt}%
+        \def\code at end{}%
+      \else%
+        \def\code at start{%
+%          \linewidth=\textwidth% removed this line
+          \parshape \@ne 0pt \linewidth
+          \leavevmode%
+          \hbox\bgroup}%
+        \def\code at flushstart{\hfill}%
+        \def\code at flushend{\hbox{}}%
+        \def\code at mid{\hskip6pt}%
+        \def\code at width{\linewidth-12pt-\codeexamplewidth}%
+        \def\code at end{\egroup}%
+      \fi%
+      \code at start%
+      \noindent%
+      \begin{minipage}[t]{\codeexamplewidth}\raggedright
+        \hrule width0pt%
+        \footnotesize\vskip-1em%
+        \code at flushstart\box\codeexamplebox\code at flushend%
+        \vskip0pt%
+        \leavevmode%
+        \box\codeexampleboxanim%
+        \vskip-1ex
+        \leavevmode%
+      \end{minipage}%
+    \else%
+      \def\code at mid{\par}
+      \def\code at width{\linewidth-6pt}
+      \def\code at end{}
+    \fi%
+    \code at mid%
+      \ifpgfmanual at multipage@code%
+        {%
+          \pgfkeysvalueof{/codeexample/prettyprint/base color}%
+          \pgfmanualdolisting{#1}%
+        }%
+      \else%
+        \colorbox{codebackground}{%
+          \pgfkeysvalueof{/codeexample/prettyprint/base color}%
+          \begin{minipage}[t]{\code at width}%
+            \pgfmanualdolisting{#1}%
+          \end{minipage}}%
+      \fi%
+    \code at 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/]{%
+  \def\mykey{#1#2}%
+  \def\mypath{}%
+  \gdef\myname{}%
+  \decompose#1#2/\nil
+}
+\newcommand*{\indexPathOperation}[1]{%
+  \index{#1@\protect\texttt{#1} path operation}%
+  \index{Path operations!#1@\protect\texttt{#1}}%
+}
+
+%% 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*{\indexCommandO}[1]{%
+  \removeats{#1}%
+  \index{\strippedat @\originalprefix\protect\texttt{\original{\protect\string\protect#1}}\originalsuffix}%
+}
+
+\newcommand*{\referenceKeyandIndexO}[2][/tikz/]{\texttt{#1#2}\indexKeyO[#1]{#2}}%
+
+\colorlet{originalindex}{gray}
+\newcommand*{\original}[1]{\textcolor{originalindex}{#1}}
+\newcommand*{\originalsuffix}{}%\textsuperscript{\textdagger}}%\normalsize
+\newcommand*{\originalprefix}{}%\footnotesize
+
+%\newcommand*{\original}[1]{\textcolor{originalindex}{#1}}
+%\newcommand*{\original}[1]{#1}%\textcolor{originalindex}{#1}}
+%\newcommand*{\originalsuffix}{}%\textsuperscript{\color{blue}\tikzname}}
+%\DeclareRobustCommand*{\originalprefix}{\smash{\footnotesize\llap{\textbullet\space}}}
+
+\newcommand*{\filetype}[1]{\textsc{#1}}
+
+\makeatletter
+\def\index at prologue{\section*{Index}\addcontentsline{toc}{section}{Index}
+  This index contains automatically generated entries as well as {\originalprefix\original{references}\originalsuffix} to
+  original functionalities of PGF/\tikzname.
+  \bigskip
+}
+\makeatother
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-trans.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-trans.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-trans.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,175 @@
+% !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.
+%
+
+\section{Transformations: Mirroring}
+\label{pgflibrary:transformations}
+
+\begin{purepgflibrary}{ext.transformations.mirror}
+  This library adds mirror transformations to PGF.
+\end{purepgflibrary}
+
+Two approaches to mirror transformation exist:
+\begin{enumerate}
+\item Using the reflection matrix (see left column).
+
+  This depends on |\pgfpointnormalised|\indexCommandO\pgfpointnormalised which involves
+  the sine\indexMathFunctionO{sin} and the cosine\indexMathFunctionO{cos} functions of PGFmath.
+
+\item Using built-in transformations (see right column).
+
+  This depends on |\pgfmathanglebetween|\indexCommandO\pgfmathanglebetween which involves the arctangent (|atan2|\indexMathFunctionO{atan2}) function of PGFmath.
+\end{enumerate}
+
+Which one is better? I don't know.
+Choose one you're comfortable with.
+
+\begin{paracol}{2}
+
+\subsection{Using the reflection matrix}
+
+The following commands use the reflection matrix that sets the transformation matrix following
+\begin{equation*}
+  A = \frac{1}{\Vert\vec l\Vert^2} \begin{bmatrix}
+  l_x^2-l_y^2 & 2l_xl_y \\
+  2l_xl_y & l_y^2-l_x^2\\
+  \end{bmatrix}.
+\end{equation*}
+
+\switchcolumn% >
+
+\stepcounter{subsection}
+\subsection{Using built-in transformations}
+
+The following commands use a combination of shifting, rotating, $-1$ scaling,
+rotating back and shifting back to reach the mirror transformation.
+
+The commands are named the same as on the left side,
+only the |m| in |mirror| is capitalized.
+
+\switchcolumn*% <
+
+\begin{command}{\pgftransformxmirror\marg{value}}
+  Sets up a transformation that mirrors along a vertical line that goes through point $(\text{\meta{value}}, 0)$.
+
+\begin{codeexample}[preamble=\usepgflibrary{transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-0.25, -.25) grid (3.25, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (1.5, -.25) -- (1.5, 1.25);
+\pgftransformxmirror{1.5}
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\switchcolumn% >
+
+\begin{command}{\pgftransformxMirror\marg{value}}
+  Sets up a transformation that mirrors along a vertical line that goes through point $(\text{\meta{value}}, 0)$.
+
+\begin{codeexample}[preamble=\usepgflibrary{transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-0.25, -.25) grid (3.25, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (1.5, -.25) -- (1.5, 1.25);
+\pgftransformxMirror{1.5}
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\switchcolumn*% <
+
+\begin{command}{\pgftransformymirror\marg{value}}
+  Sets up a transformation that mirrors along a horizontal line that goes through point $(0, \text{\meta{value})}$.
+\end{command}
+
+\begin{command}{\pgftransformmirror\marg{point A}\marg{point B}}
+  Sets up a transformation that mirrors along the line that goes through \meta{point A} and \meta{point B}.
+ 
+\begin{codeexample}[preamble=\usepgflibrary{transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-.25, -2.25) grid (2.5, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (0, -1) -- (2, 0);
+\pgftransformmirror{\pgfpointxy{0}{-1}}
+                   {\pgfpointxy{2}{ 0}}
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\switchcolumn% >
+
+\begin{command}{\pgftransformyMirror\marg{value}}
+  Sets up a transformation that mirrors along a horizontal line that goes through point $(0, \text{\meta{value})}$.
+\end{command}
+
+\begin{command}{\pgftransformMirror\marg{point A}\marg{point B}}
+  Sets up a transformation that mirrors along the line that goes through \meta{point A} and \meta{point B}.
+ 
+\begin{codeexample}[preamble=\usepgflibrary{transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-.25, -2.25) grid (2.5, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (0, -1) -- (2, 0);
+\pgftransformMirror{\pgfpointxy{0}{-1}}
+                   {\pgfpointxy{2}{ 0}}
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\switchcolumn*% <
+
+\begin{command}{\pgfqtransformmirror\marg{point A}}
+  Sets up a transformation that mirrors along the line that goes through the origin and \meta{point A}.
+
+\begin{codeexample}[preamble=\usepgflibrary{transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-.25, -.25) grid (2.25, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (0, 0) -- (2, 1);
+\pgfqtransformmirror{\pgfpointxy{2}{1}}
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\switchcolumn
+
+\begin{command}{\pgfqtransformMirror\marg{point A}}
+  Sets up a transformation that mirrors along the line that goes through the origin and \meta{point A}.
+
+\begin{codeexample}[preamble=\usepgflibrary{transformations.mirror}]
+\begin{tikzpicture}
+\draw[help lines] (-.25, -.25) grid (2.25, 1.25);
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+
+\draw[dashed] (0, 0) -- (2, 1);
+\pgfqtransformMirror{\pgfpointxy{2}{1}}
+
+\draw[-latex] (0,0) .. controls (.5,1) .. (1,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\end{paracol}
+\endinput


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-trans.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf	2022-08-22 20:45:08 UTC (rev 64165)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf	2022-08-22 20:49:17 UTC (rev 64166)

Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,33 @@
+% !TeX TS-program = lualatex
+% !TeX spellcheck = en_US
+% !TeX root = tikz-ext-manual.tex
+% arara: lualatex
+% 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.
+%
+
+\documentclass[a4paper,doc2,landscape]{ltxdoc}
+
+\input{tikz-ext-manual-en-main-preamble.tex}
+\usetikzlibrary{external}
+%\newif\iftikzextmanualexternalize
+%\tikzextmanualexternalizetrue
+%\iftikzextmanualexternalize
+  \tikzexternalize[
+    prefix=tikz/,
+%    prefix=../../tikz-extensions-tikz/,
+%    mode=convert with system call,
+    %mode=list and make,
+    %mode=list only,export=true,% simply skips EVERY picture -> good for debugging the text.
+  ]
+  \tikzexternalenable
+  \tikzifexternalizing{%
+    \pgfkeys{/pdflinks/codeexample links=false}%
+  }{}%
+%\fi
+
+\input{tikz-ext-manual-en-main-body.tex}


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,327 @@
+% 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.
+%
+\pgfqkeys{/pgf/calendar}{
+    style/.style={#1},
+    yesterday/.value required,
+    yesterday/.code={%
+      \begingroup
+        \pgfutil at tempcnta=\pgfcalendarifdatejulian\relax
+        \advance\pgfutil at tempcnta by -1\relax
+        \pgfcalendarjuliantodate{\pgfutil at tempcnta}{\pgfcalendarifdateyear}{\pgfcalendarifdatemonth}{\pgfcalendarifdateday}%
+        \edef\pgfcalendarifdatejulian{\the\pgfutil at tempcnta}%
+        \pgfcalendarjuliantoweekday\pgfutil at tempcnta\pgfutil at tempcntb
+        \edef\pgfcalendarifdateweekday{\the\pgfutil at tempcntb}%
+        \pgfcalendarjulianyeartoweek\pgfutil at tempcnta\pgfcalendarifdateyear\pgfutil at tempcntb
+        \edef\pgfcalendarifdateweek{\the\pgfutil at tempcntb}%
+        \pgfcalendar at launch@ifdate{#1}{%
+          \def\pgf at cal@temp{\pgfcalendarmatchestrue}%
+        }{%
+          \let\pgf at cal@temp\pgfutil at empty
+        }%
+        \expandafter
+      \endgroup\pgf at cal@temp
+    },
+    Jan/.code={\ifnum\pgfcalendarifdatemonth=1 \expandafter\pgfcalendarmatchestrue\fi},Jan/.value forbidden,
+    Feb/.code={\ifnum\pgfcalendarifdatemonth=2 \expandafter\pgfcalendarmatchestrue\fi},Feb/.value forbidden,
+    Mar/.code={\ifnum\pgfcalendarifdatemonth=3 \expandafter\pgfcalendarmatchestrue\fi},Mar/.value forbidden,
+    Apr/.code={\ifnum\pgfcalendarifdatemonth=4 \expandafter\pgfcalendarmatchestrue\fi},Apr/.value forbidden,
+    May/.code={\ifnum\pgfcalendarifdatemonth=5 \expandafter\pgfcalendarmatchestrue\fi},May/.value forbidden,
+    Jun/.code={\ifnum\pgfcalendarifdatemonth=6 \expandafter\pgfcalendarmatchestrue\fi},Jun/.value forbidden,
+    Jul/.code={\ifnum\pgfcalendarifdatemonth=7 \expandafter\pgfcalendarmatchestrue\fi},Jul/.value forbidden,
+    Aug/.code={\ifnum\pgfcalendarifdatemonth=8 \expandafter\pgfcalendarmatchestrue\fi},Aug/.value forbidden,
+    Sep/.code={\ifnum\pgfcalendarifdatemonth=9 \expandafter\pgfcalendarmatchestrue\fi},Sep/.value forbidden,
+    Oct/.code={\ifnum\pgfcalendarifdatemonth=10 \expandafter\pgfcalendarmatchestrue\fi},Oct/.value forbidden,
+    Nov/.code={\ifnum\pgfcalendarifdatemonth=11 \expandafter\pgfcalendarmatchestrue\fi},Nov/.value forbidden,
+    Dec/.code={\ifnum\pgfcalendarifdatemonth=12 \expandafter\pgfcalendarmatchestrue\fi},Dec/.value forbidden,
+    %
+    difference between/.code args={#1and#2 #3 #4}{%
+      \pgfcalendardatetojulian{#1}\pgfutil at tempcnta
+      \pgfcalendardatetojulian{#2}\pgfutil at tempcntb
+      \advance\pgfutil at tempcntb by -\pgfutil at tempcnta
+      \ifnum\pgfutil at tempcntb#3#4\relax
+        \pgfcalendarmatchestrue
+      \fi},
+    weekday before or same/.code args={#1and#2}{%
+      \pgfcalendarjuliantoweekday{#1}\pgfutil at tempcnta
+      \pgfcalendarjuliantoweekday{#2}\pgfutil at tempcntb
+      \ifnum\pgfutil at tempcntb<\pgfutil at tempcnta
+        \pgfcalendarmatchestrue
+      \fi
+    },
+    leap year/.code={%
+        \pgfutil at tempcnta=#1\relax
+        \divide\pgfutil at tempcnta4
+        \multiply\pgfutil at tempcnta4
+        \ifnum\pgfutil at tempcnta=#1\relax
+            \divide\pgfutil at tempcnta100
+            \multiply\pgfutil at tempcnta100
+            \ifnum\pgfutil at tempcnta=#1\relax
+                \divide\pgfutil at tempcnta400
+                \multiply\pgfutil at tempcnta400
+                \ifnum\pgfutil at tempcnta=#1\relax
+                    \pgfcalendarmatchestrue
+                \fi
+            \else
+                \pgfcalendarmatchestrue
+            \fi
+        \fi},
+    leap year/.default=\pgfcalendarifdateyear,
+    between days/.code args={#1and#2}{%
+        \pgfutil at tempcnta=#1\relax
+        \ifnum\pgfcalendarifdateday<\pgfutil at tempcnta\else
+            \pgfutil at tempcnta=#2\relax
+            \ifnum\pgfcalendarifdateday>\pgfutil at tempcnta\else
+                \pgfcalendarmatchestrue\fi\fi},
+    week of month/.code={%
+        \pgfutil at tempcnta=#1\relax
+        \multiply\pgfutil at tempcnta7
+        \ifnum\pgfcalendarifdateday>\pgfutil at tempcnta\else
+            \advance\pgfutil at tempcnta-7
+            \ifnum\pgfcalendarifdateday>\pgfutil at tempcnta
+                \pgfcalendarmatchestrue
+            \fi
+        \fi},
+    week of month'/.code={%
+        \pgfcalendar at getlastYMX\pgfcalendarifdateyear\pgfcalendarifdatemonth\pgfutil at tempcnta
+        \advance\pgfutil at tempcnta1
+        \pgfutil at tempcntb=#1\relax
+        \multiply\pgfutil at tempcntb7
+        \advance\pgfutil at tempcnta-\pgfutil at tempcntb
+        \ifnum\pgfcalendarifdateday<\pgfutil at tempcnta\else
+            \advance\pgfutil at tempcnta+7
+            \ifnum\pgfcalendarifdateday<\pgfutil at tempcnta
+                \pgfcalendarmatchestrue
+            \fi
+        \fi},
+    first/.code={\pgfutil at in@:{#1}\ifpgfutil at in@
+        \pgfcalendar at ifdate@first{}#1\pgf at stop\else
+        \pgfcalendar at ifdate@first{}1:#1\pgf at stop\fi},
+    last/.code={\pgfutil at in@:{#1}\ifpgfutil at in@
+        \pgfcalendar at ifdate@first'#1\pgf at stop\else
+        \pgfcalendar at ifdate@first'1:#1\pgf at stop\fi},
+    % logic
+    not/.value required,
+    not/.code=%
+        \begingroup
+            \let\pgf at cal@tempa\pgfutil at empty
+            \pgfcalendar at launch@ifdate{#1}{}{\def\pgf at cal@tempa{\pgfcalendarmatchestrue}}%
+        \expandafter\endgroup\pgf at cal@tempa,
+    and/.value required,
+    and/.code=% and = {<cond 1>, <cond 2>, <cond 3>, …}
+      \begingroup
+        \pgfcalendarmatchestrue
+        \pgfqkeys{/pgf/calendar/and}{#1}%
+        \ifpgfcalendarmatches % is it still true?
+          \expandafter\pgfutil at firstoftwo
+        \else
+          \expandafter\pgfutil at secondoftwo
+        \fi
+        {\def\pgf at cal@temp{\pgfcalendarmatchestrue}}%
+        {\let\pgf at cal@temp\pgfutil at empty}%
+      \expandafter\endgroup\pgf at cal@temp,
+    and/.unknown/.code=% only inside the group of and/.code
+      \ifpgfcalendarmatches
+        \expandafter\pgfutil at firstofone
+      \else
+        \expandafter\pgfutil at gobble
+      \fi
+      {%
+        \begingroup
+          \pgfcalendar at launch@ifdate{\pgfkeyscurrentname={#1}}%
+          {\let\pgf at cal@temp\pgfutil at empty}{\def\pgf at cal@temp{\pgfcalendarmatchesfalse}}
+        \expandafter\endgroup\pgf at cal@temp
+      }%
+}
+
+\def\pgfcalendar at ifdate@first#1#2:#3\pgf at stop{%
+    \pgfqkeys{/pgf/calendar}{and={#3, week of month#1={#2}}}}
+\def\pgfcalendar at getlastYMX#1#2#3{% #1 = year, #2 = month, #3 := last day
+    \begingroup
+        \ifnum#2=2 % stupid February
+            \pgfcalendarmatchesfalse
+            \pgfqkeys{/pgf/calendar}{leap year={#1}}%
+            \ifpgfcalendarmatches
+              #3=29
+            \else
+              #3=28
+            \fi
+        \else
+            #3=\ifcase#2\relax\or
+            31\or\or31\or30\or31\or30\or31\or31\or30\or31\or30\or31\fi
+        \fi
+        \edef\pgf at cal@temp{#3=\the#3\relax}
+      \expandafter
+    \endgroup\pgf at cal@temp}
+
+%
+% weeks
+%
+\def\pgfcalendar at week@setup#1{%
+  \pgfutil at IfUndefined{pgfcalendar at week@#1}{%
+    \begingroup
+      \pgfcalendardatetojulian{#1-01-01}\pgfutil at tempcnta
+      \pgfcalendarjuliantoweekday\pgfutil at tempcnta\pgfutil at tempcntb
+      %
+      % tempcnta holds the julian number for first day of the current year
+      % tempcntb holds the weekday for the first day of the current year
+      %
+      % set tempcnta to the Monday of the week with first day of current year
+      \advance\pgfutil at tempcnta by -\pgfutil at tempcntb
+      %
+      % if the first week starts at Fri, Sat or Sun, next week is the 1st week
+      \ifnum\pgfutil at tempcntb>3\relax
+        \advance\pgfutil at tempcnta by 7\relax
+      \fi
+      % setup macro for year with {Julian number for day of first week}{weekday of -01-01}
+      \edef\pgf at cal@temp{\def\expandafter\noexpand\csname pgfcalendar at week@#1\endcsname
+        {{\the\pgfutil at tempcnta}{\the\pgfutil at tempcntb}}}%
+      \expandafter\endgroup\pgf at cal@temp
+  }{}%
+}
+
+\def\pgfcalendarjulianyeartoweek#1#2#3{\pgfcalendarjulianyeartoweek@{#1}{#2}{#3}{\iftrue}}
+\def\pgfcalendarjulianyeartoweek@#1#2#3#4{%
+  % #1 = julian date (count)
+  % #2 = year
+  % #3 = count that holds the week at the end
+  % #4 = \iftrue or \iffalse: whether week 53 needs to be checked (\iffalse when determing week from next year)
+  \begingroup
+    \pgfcalendar at week@setup{#2}%
+    #3=#1\relax
+    %
+    % calculate difference of days between current date and start of week 1
+    %
+    \advance#3 by -\expandafter\expandafter\expandafter\pgfutil at firstoftwo\csname pgfcalendar at week@#2\endcsname\relax
+    \ifnum#3<0\relax % whoops, we are in the week of the previous year
+      \expandafter\pgfutil at firstoftwo
+    \else
+      \expandafter\pgfutil at secondoftwo
+    \fi
+    {% if first day of the year is Fri, Sat or Sun
+      \ifnum\expandafter\expandafter\expandafter\pgfutil at secondoftwo\csname pgfcalendar at week@#2\endcsname>3\relax
+        \expandafter\pgfutil at firstoftwo
+      \else
+        \expandafter\pgfutil at secondoftwo
+      \fi
+      {% we need to check the week of the previous year
+        #3=#2\relax
+        \advance#3 by -1
+        \edef\pgf at cal@temp{\noexpand\pgfcalendarjulianyeartoweek@#1{\the#3}#3\noexpand\iffalse}%
+        \pgf at cal@temp
+      }{% yeah, it's weird
+        \divide#3 by 7
+        \advance#3 by 1        
+      }
+    }{%
+      \divide#3 by 7
+      \advance#3 by 1
+      #4%
+        \expandafter\pgfutil at firstofone
+      \else
+        \expandafter\pgfutil at gobble
+      \fi
+      {%
+        \ifnum#3=53\relax % whoops, we are possibly in the first week of the next year
+            \expandafter\pgfutil at firstofone
+        \else
+            \expandafter\pgfutil at gobble
+        \fi
+        {%
+          \begingroup
+            % check whether we're already in week 1 of the next year
+            #3=#2\relax
+            \advance#3 by 1
+            \expandafter\pgfcalendar at week@setup\expandafter{\the#3}%
+            \ifnum#1<\expandafter\expandafter\expandafter\pgfutil at firstoftwo\csname pgfcalendar at week@\the#3\endcsname\relax
+              #3=53
+            \else
+              #3=1
+            \fi
+            \expandafter
+          \endgroup\expandafter#3\the#3\relax
+        }%
+      }%
+    }%
+    \expandafter
+  \endgroup\expandafter
+  #3\the#3\relax
+}
+
+%
+% shorthands for weeks (n)
+%
+% n-: shortest
+% n=: shortest but prepends whitespace
+% n0: leading zero
+%
+\expandafter\def\csname pgfcalendar at shorthand@n-\endcsname{%
+  \if0\pgfcalendarcurrentweek\else\pgfcalendarcurrentweek\fi}
+\expandafter\def\csname pgfcalendar at shorthand@n=\endcsname{%
+  {\pgfutil at tempcnta=\pgfcalendarcurrentweek\relax\ifnum\pgfutil at tempcnta<10\relax\setbox0=\hbox{1}\kern\wd0\relax\fi\the\pgfutil at tempcnta}}
+\expandafter\def\csname pgfcalendar at shorthand@n0\endcsname{%
+  \pgfcalendarcurrentweek}
+
+%
+% Overwriting original \pgfcalendar
+%
+\long\def\pgfcalendar#1#2#3#4{%
+  \begingroup%
+    % Setup local \ifdate
+    \let\ifdate=\pgfcalendar at local@ifdate%
+    % Let's start with computing start and end dates...
+    \def\pgfcalendarprefix{#1}%
+    \pgfcalendardatetojulian{#2}{\pgfcalendarcurrentjulian}%
+    \edef\pgfcalendarbeginjulian{\the\pgfcalendarcurrentjulian}%
+    \edef\pgfcalendarbeginiso{#2}%
+    \pgfcalendardatetojulian{#3}{\pgfutil at tempcnta}%
+    \edef\pgfcalendarendjulian{\the\pgfutil at tempcnta}%
+    \advance\pgfutil at tempcnta by1\relax%
+    \edef\pgfcalendarendjulianplus{\the\pgfutil at tempcnta}%
+    \edef\pgfcalendarendiso{#3}%
+    %
+    % Start main loop
+    %
+    \loop%
+    \ifnum\pgfcalendarcurrentjulian<\pgfcalendarendjulianplus\relax%
+      % Setup information about current date
+      \pgfcalendarjuliantodate{\pgfcalendarcurrentjulian}%
+        {\pgfcalendarcurrentyear}{\pgfcalendarcurrentmonth}{\pgfcalendarcurrentday}%
+      \pgfcalendarjuliantoweekday{\pgfcalendarcurrentjulian}{\pgfutil at tempcntb}%
+      \edef\pgfcalendarcurrentweekday{\the\pgfutil at tempcntb}%
+      \pgfcalendarjulianyeartoweek{\pgfcalendarcurrentjulian}{\pgfcalendarcurrentyear}{\pgfutil at tempcntb}%
+      \edef\pgfcalendarcurrentweek{\ifnum\pgfutil at tempcntb<10 0\fi\the\pgfutil at tempcntb}%
+      % Render:
+      #4%
+      % Advance day:
+      \advance\pgfcalendarcurrentjulian by1\relax%
+    \repeat%
+  \endgroup%
+}
+
+%
+% Overwriting original \pgfcalendar at local@ifdate
+%
+\def\pgfcalendar at local@ifdate{%
+  \let\pgfcalendarifdatejulian=\pgfcalendarcurrentjulian
+  \let\pgfcalendarifdateyear=\pgfcalendarcurrentyear
+  \let\pgfcalendarifdatemonth=\pgfcalendarcurrentmonth
+  \let\pgfcalendarifdateday=\pgfcalendarcurrentday
+  \let\pgfcalendarifdateweekday=\pgfcalendarcurrentweekday
+  \let\pgfcalendarifdateweek=\pgfcalendarcurrentweek
+  \pgfcalendar at launch@ifdate%
+}
+
+\pgfqkeys{/pgf/calendar/week}{.value required,.code=\ifnum#1=\pgfcalendarifdateweek\relax\expandafter\pgfcalendarmatchestrue\fi}
+
+% Overwriting shorthands of pgfcalendar
+\expandafter\def\csname pgfcalendar at shorthand@d-\endcsname{%
+  \if0\pgfcalendarcurrentday\else\pgfcalendarcurrentday\fi}
+\expandafter\def\csname pgfcalendar at shorthand@m-\endcsname{%
+  \if0\pgfcalendarcurrentmonth\else\pgfcalendarcurrentmonth\fi}
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.sty	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,11 @@
+% 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.
+%
+
+\RequirePackage{pgfcalendar}
+\input{pgfcalendar-ext.code.tex}
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,13 @@
+% 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.
+%
+
+\input pgfcalendar.text
+\catcode`\@=11
+\input pgfcalendar-ext.code.tex
+\catcode`\@=\pgfcalendaratcode
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.transformations.mirror.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.transformations.mirror.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.transformations.mirror.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,96 @@
+% 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.
+%
+\def\pgftransformxmirror#1{
+  \pgfmathparse{#1}%
+  \ifpgfmathunitsdeclared
+    \pgf at xa\pgfmathresult pt\relax
+    \multiply\pgf at xa2 
+    \pgftransformcm{-1}{0}{0}{1}{\pgfqpoint{\pgf at xa}{0pt}}%
+  \else
+    \pgftransformmirror{\pgfqpointxy{\pgfmathresult}{0}}{\pgfpointadd{\pgfqpointxy{\pgfmathresult}{0}}{\pgfqpointxy{0}{1}}}%
+  \fi
+}
+\def\pgftransformymirror#1{
+  \pgfmathparse{#1}%
+  \ifpgfmathunitsdeclared
+    \pgf at ya\pgfmathresult pt\relax
+    \multiply\pgf at ya2
+    \pgftransformcm{1}{0}{0}{-1}{\pgfqpoint{0pt}{\pgf at ya}}%
+  \else
+    \edef\pgf at marshal{\noexpand\pgftransformmirror{\noexpand\pgfqpointxy{0}{\pgfmathresult}}%
+                                                  {\noexpand\pgfpointadd{\noexpand\pgfqpointxy{0}{\pgfmathresult}}{\noexpand\pgfqpointxy{1}{0}}}}%
+    \pgf at marshal
+  \fi}
+\def\pgftransformmirror#1#2{%
+  \pgfextract at process\pgf at tempa{#1}%
+  \pgfpointnormalised{\pgfpointdiff{\pgf at tempa}{#2}}%
+  \pgf at xa=\pgf at sys@tonumber\pgf at y\pgf at x
+  \pgf at xb=\pgf at sys@tonumber\pgf at x\pgf at x
+  \pgf at yb=\pgf at sys@tonumber\pgf at y\pgf at y
+  \multiply\pgf at xa2
+  \pgf at xc=-\pgf at yb\advance\pgf at xc\pgf at xb
+  \pgf at yc=-\pgf at xb\advance\pgf at yc\pgf at yb
+  \edef\pgf at temp{{\the\pgf at xc}{+\the\pgf at xa}{+\the\pgf at xa}{+\the\pgf at yc}}%
+  \expandafter\pgf at transformcm\pgf at temp{\pgf at tempa}%
+  \pgftransformshift{\pgfpointscale{-1}{\pgf at tempa}}%
+}
+
+\def\pgfqtransformmirror#1{%
+  \pgfpointnormalised{#1}%
+  \pgf at xa=\pgf at sys@tonumber\pgf at y\pgf at x
+  \pgf at xb=\pgf at sys@tonumber\pgf at x\pgf at x
+  \pgf at yb=\pgf at sys@tonumber\pgf at y\pgf at y
+  \multiply\pgf at xa2
+  \pgf at xc=-\pgf at yb\advance\pgf at xc\pgf at xb
+  \pgf at yc=-\pgf at xb\advance\pgf at yc\pgf at yb
+  \edef\pgf at temp{{\the\pgf at xc}{+\the\pgf at xa}{+\the\pgf at xa}{+\the\pgf at yc}}%
+  \expandafter\pgf at transformcm\pgf at temp{\pgfpointorigin}%
+}
+
+% Using existant transformation (shift, rotate, yscale=-1, rotate back, shift back)
+\def\pgftransformxMirror#1{
+  \pgfmathparse{#1}%
+  \ifpgfmathunitsdeclared
+    \pgf at xa\pgfmathresult pt\relax
+    \multiply\pgf at xa2 
+    \pgftransformcm{-1}{0}{0}{1}{\pgfqpoint{\pgf at xa}{0pt}}%
+  \else
+    \pgftransformMirror{\pgfqpointxy{\pgfmathresult}{0}}{\pgfpointadd{\pgfqpointxy{\pgfmathresult}{0}}{\pgfqpointxy{0}{1}}}%
+  \fi
+}
+\def\pgftransformyMirror#1{
+  \pgfmathparse{#1}%
+  \ifpgfmathunitsdeclared
+    \pgf at ya\pgfmathresult pt\relax
+    \multiply\pgf at ya2
+    \pgftransformcm{1}{0}{0}{-1}{\pgfqpoint{0pt}{\pgf at ya}}%
+  \else
+    \edef\pgf at marshal{\noexpand\pgftransformMirror{\noexpand\pgfqpointxy{0}{\pgfmathresult}}%
+                                                  {\noexpand\pgfpointadd{\noexpand\pgfqpointxy{0}{\pgfmathresult}}{\noexpand\pgfqpointxy{1}{0}}}}%
+    \pgf at marshal
+  \fi}
+
+\def\pgftransformMirror#1#2{%
+  \pgfextract at process\pgf at tempa{#1}%
+  \pgfmathanglebetweenpoints{\pgf at tempa}{#2}%
+  \let\pgf at temp\pgfmathresult
+  \pgftransformshift{\pgf at tempa}%
+  \pgftransformrotate{\pgf at temp}%
+  \pgftransformyscale{-1}%
+  \pgftransformrotate{-\pgf at temp}%
+  \pgftransformshift{\pgfqpointscale{-1}{\pgf at tempa}}%
+}
+
+\def\pgfqtransformMirror#1{%
+  \pgfmathanglebetweenpoints{\pgfpointorigin}{#1}%
+  \let\pgf at temp\pgfmathresult
+  \pgftransformrotate{\pgf at temp}%
+  \pgftransformyscale{-1}%
+  \pgftransformrotate{-\pgf at temp}%
+}
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.transformations.mirror.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.calendar-plus.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.calendar-plus.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.calendar-plus.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,93 @@
+% 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.
+%
+
+\usetikzlibrary{calendar}
+\pgfutil at usemodule{pgfcalendar-ext}
+
+% Shift between days
+
+\def\tikz at lib@cal at xshift{\pgfkeysvalueof{/tikz/day xshift}}
+\def\tikz at lib@cal at yshift{\pgfkeysvalueof{/tikz/day yshift}}
+\tikzset{day xshift/.initial=3ex,day yshift/.initial=3.5ex}
+
+% Shift between months
+
+\def\tikz at lib@cal at month@xshift{\pgfkeysvalueof{/tikz/month xshift}}
+\def\tikz at lib@cal at month@yshift{\pgfkeysvalueof{/tikz/month yshift}}
+\tikzset{month xshift/.initial=9ex,month yshift/.initial=9ex}
+
+% Internal option for storing the "width" of a calendar as a number of
+% days
+
+\def\tikz at lib@cal at width{\pgfkeysvalueof{/tikz/tikz at lib@cal at width}}
+\tikzset{tikz at lib@cal at width/.initial=1}
+
+% Weeks
+
+\def\tikzweekcode{\pgfkeysvalueof{/tikz/week code}}
+\def\tikzweektext{\pgfkeysvalueof{/tikz/week text}}
+
+\tikzset{
+  week code/.initial={%
+    \node[every week]{\pgfkeysvalueof{/tikz/week text}};},
+  week text/.initial={\%n=},
+  every week/.style=,
+  week label left/.style={
+    every week/.append style={
+      anchor=base east,
+      xshift=-1.25*\pgfkeysvalueof{/tikz/day xshift}},
+    execute before day scope=%
+      \ifdate{Monday, equals=\pgfcalendarbeginiso}{\tikzweekcode}{}}}
+
+%
+% Overwriting original \tikz at lib@cal at if@else at code
+%
+\def\tikz at lib@cal at if@else at code#1#2#3{%
+  \tikzcalendar at addto\tikz at lib@cal at ifs{\ifdate{#1}{#2}{#3}}%
+  \tikz at lib@cal at scanner%
+}
+
+%
+% Overwriting original \tikz at lib@cal at stop
+%
+\def\tikz at lib@cal at stop{%
+    \pgftransformshift{\tikz at node@at}%
+    \expandafter\pgfcalendar\expandafter{\tikz at fig@name}{\tikz at lib@cal at start}{\tikz at lib@cal at end}%
+    {%
+      \tikz at before@day%
+      \scope%
+        \tikz at atbegin@day%
+        \let\tikzcalendar at addto\pgfutil at secondoftwo
+        \tikz at lib@cal at ifs%
+        \tikzdaycode%
+        \tikz at atend@day%
+      \endscope%
+      \tikz at after@day%
+    }%
+  \endgroup%
+}
+
+\def\tikzcalendar at addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
+
+\pgfmathdeclarefunction{weeksinmonthofyear}{3}{% #1 = first weekday, #2 = month, #3 = year
+  \begingroup
+    \pgfmathlastdayinmonthofyear@{#2}{#3}%
+    \pgfmathadd@{#1}{\pgfmathresult}%
+    \pgfmathdivide@{\pgfmathresult}{7}%
+    \pgfmathceil@{\pgfmathresult}%
+    \pgfmathint@{\pgfmathresult}%
+    \pgfmathsmuggle\pgfmathresult
+  \endgroup
+}
+\pgfmathdeclarefunction{lastdayinmonthofyear}{2}{% #1 = month, #2 = year
+  \begingroup
+    \pgfcalendar at getlastYMX{#2}{#1}{\pgfutil at tempcnta}%
+    \edef\pgfmathresult{\the\pgfutil at tempcnta}%
+    \pgfmathsmuggle\pgfmathresult
+  \endgroup
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.calendar-plus.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,251 @@
+% 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.
+%
+%% full arc
+%% https://tex.stackexchange.com/a/144297/16595
+%% The postfix operator R is added to PGFmath,
+%% it allows the use of angular segments.
+%% full arc = 10 makes it so that
+%%   1R =  36°
+%%   2R =  72°
+%%   …
+%%  10R = 360°
+%% Calling the full arc key with an empty value 
+%% makes 1R = 1°
+\pgfset{full arc/.code=%
+  \def\pgf at temp{#1}%
+  \ifx\pgfutil at empty\pgf at temp
+    \let\pgfmath at fullarc@factor\pgfutil at empty
+  \else
+    \pgfmathsetmacro\pgfmath at fullarc@factor{360/(#1)}%
+  \fi,full arc=}
+\pgfmathdeclareoperator{R}{full arc}{1}{postfix}{950}
+\pgfmathdeclarefunction{full arc}{1}{%
+  \begingroup
+    \pgfmath at x=#1pt\relax
+    \ifx\pgfmath at fullarc@factor\pgfutil at empty\else
+      \pgfmath at x\pgfmath at fullarc@factor\pgfmath at x
+    \fi
+    \pgfmath at returnone\pgfmath at x
+  \endgroup}
+
+%% foreach
+%% http://tex.stackexchange.com/a/126418/16595
+%% instead of \foreach \var in {start, start + delta, ..., end}
+%% this allows to use \foreach[use int={start to end step delta}] without(!) a list in {}
+%% the values start, end and delta are evaluated by PGFmath at the start of the loop.
+%% In addition to use int, there's also use float.
+\newif\ifqrr at pgf@foreach at no@list
+\pgfqkeys{/pgf/foreach}{
+  use int/.code={%
+    \qrr at pgf@foreach at no@list at parse@to\pgfmathtruncatemacro#1\pgffor at stop
+  },
+  use float/.code={%
+    \qrr at pgf@foreach at no@list at parse@to\pgfmathsetmacro#1\pgffor at stop
+  }
+}
+
+\def\qrr at pgf@foreach at no@list at parse@to#1#2to#3\pgffor at stop{%
+  \qrr at pgf@foreach at no@listtrue
+  #1\foreachStart{#2}%
+  \pgfutil at in@{step}{#3}
+  \ifpgfutil at in@
+    \qrr at pgf@foreach at no@list at parse@step{#1}#3\pgffor at stop
+  \else
+    \qrr at pgf@foreach at no@list at parse@step{#1}#3step1\pgffor at stop
+  \fi
+  \edef\qrr at pgf@foreach at no@list at list{\foreachStart,\foreachSecond,...,\foreachEnd}%
+}
+\def\qrr at pgf@foreach at no@list at parse@step#1#2step#3\pgffor at stop{%
+  #1\foreachEnd{#2}%
+  #1\foreachSecond{\foreachStart+#3}%
+}
+\def\pgffor at vars{% manually extended, better etoolbox
+  \pgfutil at ifnextchar i{\pgffor@@vars at end}{%
+    \pgfutil at ifnextchar[{\pgffor@@vars at opt}{%]
+      \pgfutil at ifnextchar/{\pgffor@@vars at slash@gobble}{%
+         \ifqrr at pgf@foreach at no@list\expandafter\pgfutil at firstoftwo\else
+           \expandafter\pgfutil at secondoftwo\fi
+         {\qrr at pgf@foreach at no@listfalse\pgffor at macro@list\qrr at pgf@foreach at no@list at list}
+         {\pgffor@@vars}}}}}%
+
+%% Handlers
+%% .pgfmath evaluates values given to keys in PGFmath before handing them over.
+%% .pgfmath int truncates the result
+%% .pgfmath strcat concatenates the given values
+\pgfkeys{/handlers/.pgfmath/.code=\pgfmathparse{#1}\expandafter\pgfkeys at exp@call\expandafter{\pgfmathresult}}
+\pgfkeys{/handlers/.pgfmath int/.code=\pgfmathint{#1}\expandafter\pgfkeys at exp@call\expandafter{\pgfmathresult}}
+\pgfkeys{/handlers/.pgfmath strcat/.code=\pgfmathstrcat{#1}\expandafter\pgfkeys at exp@call\expandafter{\pgfmathresult}}
+
+%% http://tex.stackexchange.com/a/144187/16595
+%% key/.List={(point-1),(point-2),(point-...),(point-6)} will call
+%% key=(point-1)(point-2)(point-3)(point-4)(point-5),(point-6)
+\pgfkeys{/handlers/.List/.code={%
+    \let\pgfkeys at global@temp\pgfutil at empty
+    \foreach \pgfkeys at temp in{#1}{
+      \ifx\pgfkeys at global@temp\pgfutil at empty
+        \global\let\pgfkeys at global@temp\pgfkeys at temp
+      \else
+        \expandafter\pgfutil at g@addto at macro\expandafter\pgfkeys at global@temp\expandafter
+          {\pgfkeys at temp}%
+      \fi}%
+    \expandafter\pgfkeys at exp@call\expandafter{\pgfkeys at global@temp}}}
+
+%% PGFmath
+%% strrepeat("x", 5) = "xxxxx"
+\pgfmathdeclarefunction{strrepeat}{2}{%
+  \begingroup\pgfmathint{#2}\pgfmath at count\pgfmathresult
+    \let\pgfmathresult\pgfutil at empty
+    \pgfutil at loop\ifnum\pgfmath at count>0\relax
+      \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult#1}%
+      \advance\pgfmath at count-1\relax
+    \pgfutil at repeat\pgfmath at smuggleone\pgfmathresult\endgroup}
+
+%% isInString("foo", "foobar") = true (= 1)
+%% isInString("boo", "foobar") = false (= 0)
+\pgfmathdeclarefunction{isInString}{2}{%
+  \pgfutil at in@{#1}{#2}%
+  \ifpgfutil at in@\def\pgfmathresult{1}\else\def\pgfmathresult{0}\fi}
+
+%% strcat("foo", "bar") = "foobar" (can have more than two parameters)
+\pgfutil at IfUndefined{pgfmathstrcat@}{
+  \pgfmathdeclarefunction{strcat}{...}{%
+    \begingroup
+      \let\pgfmathresult\pgfutil at empty
+      \pgfmathstrcat@@#1\pgfmath at stop}
+  \def\pgfmathstrcat@@#1{%
+    \ifx\pgfmath at stop#1%
+      \def\pgfmath at next{\pgfmath at smuggleone\pgfmathresult\endgroup}
+    \else
+      \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult#1}%
+      \let\pgfmath at next\pgfmathstrcat@@
+    \fi
+    \pgfmath at next}
+}{}
+
+% http://tex.stackexchange.com/questions/244569/bounding-lines-around-tax-nodes/244619#244619
+\pgfmathdeclarefunction{atanXY}{2}{\pgfmathatantwo@{#2}{#1}}
+\pgfmathdeclarefunction{atanYX}{2}{\pgfmathatantwo@{#1}{#2}}
+
+%% http://tex.stackexchange.com/a/132939/16595
+\tikzset{
+  @edges through/.code={{{% three braces to protect \pgfeov
+    \pgfutil at ifnextchar[{\pgfkeysvalueof{/tikz/@@edges through/. at cmd}}
+                        {\pgfkeysvalueof{/tikz/@@edges through/. at cmd}[]}#1\pgfeov}}},
+  @@edges through/.style args={[#1]#2}{/tikz/insert path={edge[#1] (#2) (#2)}},
+  edges through/.style={/tikz/@edges through/.list={#1}}}
+\tikzset{
+  @edges to/.code={{{% three braces to protect \pgfeov
+    \pgfutil at ifnextchar[{\pgfkeysvalueof{/tikz/@@edges to/. at cmd}}
+                        {\pgfkeysvalueof{/tikz/@@edges to/. at cmd}[]}#1\pgfeov}}},
+  @@edges to/.style args={[#1]#2}{/tikz/insert path={edge[#1] (#2)}},
+  edges to/.style={/tikz/@edges to/.list={#1}}}
+\tikzset{
+  @tos to/.code={{{% three braces to protect \pgfeov
+    \pgfutil at ifnextchar[{\pgfkeysvalueof{/tikz/@@tos to/. at cmd}}
+                        {\pgfkeysvalueof{/tikz/@@tos to/. at cmd}[]}#1\pgfeov}}},
+  @@tos to/.style args={[#1]#2}{/tikz/insert path={to[#1] (#2)}},
+  tos to/.style={/tikz/@tos to/.list={#1}}}
+
+
+\pgfmathdeclarefunction{distancebetween}{2}{% only coordinates/nodes
+  \begingroup
+    \pgfpointdiff{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}%
+    \edef\pgfmath at temp{{\pgf at sys@tonumber\pgf at x}{\pgf at sys@tonumber\pgf at y}}%
+    \expandafter\pgfmathveclen@\pgfmath at temp
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup}
+\pgfmathdeclarefunction{qdistancebetween}{1}{% only coordinates/nodes
+  \begingroup
+    \pgfpointdiff{\pgfpointorigin}{\pgfpointanchor{#1}{center}}%
+    \edef\pgfmath at temp{{\pgf at sys@tonumber\pgf at x}{\pgf at sys@tonumber\pgf at y}}%
+    \expandafter\pgfmathveclen@\pgfmath at temp
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup}
+
+\pgfmathdeclarefunction{qanglebetween}{1}{%
+  \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfpointanchor{#1}{center}}}
+
+\pgfmathdeclarefunction{anglebetween}{2}{%
+  \pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}
+
+\pgfmathdeclarefunction{isEmpty}{1}{%
+  \begingroup
+    \edef\pgfmath at temp{#1}%
+    \pgfutil at ifxempty\pgfmath at temp{\def\pgfmathresult{1}}{\def\pgfmathresult{0}}%                           
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup}
+
+\pgfqkeys{/utils}{
+  if/.code n args=3{%
+    \pgfmathparse{#1}%
+    \ifdim\pgfmathresult pt=0pt
+      \expandafter\pgfutil at firstoftwo
+    \else
+      \expandafter\pgfutil at secondoftwo
+    \fi
+    {\pgfkeysalso{#3}}%
+    {\pgfkeysalso{#2}}},
+  IF/.code args={(#1)#2}{%
+    \pgfmathparse{#1}%
+    \pgfutil at in@{else}{#2}%
+    \ifpgfutil at in@
+      \expandafter\pgfutil at firstoftwo
+    \else
+      \expandafter\pgfutil at secondoftwo
+    \fi
+    {\qrr at misc@handle at else#2\pgf at stop}{\qrr at misc@handle at else#2else\pgf at stop}%
+  },
+  TeX/if/.code n args={4}{%
+    \if#1#2\expandafter\pgfutil at firstoftwo\else\expandafter\pgfutil at secondoftwo\fi
+    {\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
+  },
+  TeX/ifnum/.code n args={3}{%
+    \ifnum#1\relax\expandafter\pgfutil at firstoftwo\else\expandafter\pgfutil at secondoftwo\fi
+    {\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+  },
+  TeX/ifdim/.code n args={3}{%
+    \ifdim#1\relax\expandafter\pgfutil at firstoftwo\else\expandafter\pgfutil at secondoftwo\fi
+    {\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+  },
+  TeX/ifx/.code n args={4}{%
+    \ifx#1#2\relax\expandafter\pgfutil at firstoftwo\else\expandafter\pgfutil at secondoftwo\fi
+    {\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
+  },
+  TeX/ifempty/.code n args={3}{%
+    \edef\pgfkeys at temp{#1}%
+    \pgfutil at ifxempty\pgfkeys at temp{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+  },
+  tex/.search also=/utils/TeX,
+}
+\def\qrr at misc@handle at else#1else#2\pgf at stop{%
+  \ifdim\pgfmathresult pt=0pt
+    \expandafter\pgfutil at firstoftwo
+  \else
+    \expandafter\pgfutil at secondoftwo
+  \fi
+  {\pgfkeysalso{#2}}%
+  {\pgfkeysalso{#1}}}
+
+\pgfset{
+  declare constant/.code={%
+    \let\pgfmathdeclareconstant@@@\pgfutil at empty
+    \pgfkeysvalueof{/pgf/declare function/execute at begin function}%
+    \pgfmathdeclareconstant@#1@=@;\pgf at stop
+    \pgfkeysvalueof{/pgf/declare function/execute at end function}%
+    \pgfmathdeclareconstant@@@
+  }}
+\def\pgfmathdeclareconstant@{%
+  \pgfutil at ifnextchar x\pgfmathdeclareconstant@@\pgfmathdeclareconstant@@
+}
+\def\pgfmathdeclareconstant@@#1=#2;#3\pgf at stop{%
+  \edef\pgfmath at local@temp{#1}%
+  \pgfutil at ifx\pgfmath at local@temp\pgfmath at local@at{}{%
+    \pgfutil at g@addto at macro\pgfmathdeclareconstant@@@{\pgfmathdeclarepseudoconstant{#1}{\def\pgfmathresult{#2}}}%
+    \pgfmathdeclareconstant@#3\pgf at stop
+  }%
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,305 @@
+% 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.
+%
+
+\def\tikz at nf@align at left#1{}
+\def\tikz at nf@align at center#1{\kern.5#1}
+\def\tikz at nf@align at right#1{\kern#1}
+
+\pgfqkeys{/tikz/node family}{
+  width/.initial=,
+  height/.initial=,
+  size/.style=\pgfqkeys{/tikz/node family}{width={#1},height={#1}},
+  text depth/.initial=,
+  text height/.initial=,
+  text width align/.is choice,
+  text width align/left/.code=\let\tikz at nf@align at action\tikz at nf@align at left,
+  text width align/center/.code=\let\tikz at nf@align at action\tikz at nf@align at center,
+  text width align/right/.code=\let\tikz at nf@align at action\tikz at nf@align at right,
+  text width align=center,
+  text width/.initial=,
+  text/.code=\pgfqkeys{/tikz/node family}{text depth={#1},text height={#1},text width={#1}},
+  prefix/.initial=\pgfpictureid-,
+}
+\tikzset{node family/.code=\pgfqkeys{/tikz/node family}{#1}}
+
+% #1 = family type + name
+\def\tikz at nf@save#1{%
+  %\errmessage{#1}%
+  \immediate\write\pgfutil at auxout{%
+    \noexpand\expandafter\noexpand\gdef\noexpand\csname tikz at nf@#1 at previous\endcsname
+      {\csname tikz at nf@#1 at next\endcsname}%
+  }%
+  %\expandafter\global\expandafter\let\csname tikz at nf@#1 at next\endcsname\relax
+}
+
+% #1 = value to set
+% #2 = family type
+% #3 = return dimen
+\def\tikz at nf@getandset#1#2#3{%
+    % what's our family's name?
+    #3=0pt\relax
+    \pgfkeysgetvalue{/tikz/node family/#2}\tikz at nf@familyname
+    \pgfutil at ifxempty\tikz at nf@familyname{% no family to deal with
+    }{%
+      \edef\tikz at nf@familyname{\pgfkeysvalueof{/tikz/node family/prefix}\tikz at nf@familyname}%
+      % we need to save the value for the next run
+      \pgfutil at IfUndefined{tikz at nf@#2@\tikz at nf@familyname @next}{%
+        % first time: define first value and install hook at end of picture
+        \expandafter\xdef\csname tikz at nf@#2@\tikz at nf@familyname @next\endcsname{#1}%
+        \edef\tikz at temp{\noexpand\tikz at nf@save{#2@\tikz at nf@familyname}}%
+        %\expandafter\AtVeryEndDocument\expandafter{\tikz at temp}%
+        \expandafter\pgfutil at g@addto at macro\expandafter\tikz at atend@picture\expandafter{\tikz at temp}%
+      }{%
+        \ifdim\csname tikz at nf@#2@\tikz at nf@familyname @next\endcsname<#1\relax
+          \expandafter\xdef\csname tikz at nf@#2@\tikz at nf@familyname @next\endcsname{#1}%
+        \fi
+      }%
+      \pgfutil at IfUndefined{tikz at nf@#2@\tikz at nf@familyname @previous}{% first run, ignore
+      }{% set previous value
+        #3=\csname tikz at nf@#2@\tikz at nf@familyname @previous\endcsname\relax
+      }%
+    }%
+}
+
+\pgfdeclareshape{Rectangle}{%
+  \savedanchor\northeast{%
+    % Calculate x
+    %
+    % First, is width < minimum width?
+    \pgf at x=\the\wd\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at xc{\pgfkeysvalueof{/pgf/inner xsep}}%
+    \advance\pgf at x by 2\pgf at xc%
+    % Qrr: family width
+    \tikz at nf@getandset{\the\pgf at x}{width}{\pgfutil at tempdima}%
+    \ifdim\pgf at x<\pgfutil at tempdima
+      \pgf at x=\pgfutil at tempdima
+    \fi
+    %
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/minimum width}}%
+    \ifdim\pgf at x<\pgf at xb%
+      % yes, too small. Enlarge...
+      \pgf at x=\pgf at xb%
+    \fi%
+    % Now, calculate right border: .5\wd\pgfnodeparttextbox + .5 \pgf at x + outer sep
+    \pgf at x=.5\pgf at x%
+    \advance\pgf at x by.5\wd\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \advance\pgf at x by\pgf at xa%
+    % Calculate y
+    %
+    % First, is height+depth < minimum height?
+    \pgf at y=\ht\pgfnodeparttextbox%
+    \advance\pgf at y by\dp\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at yc{\pgfkeysvalueof{/pgf/inner ysep}}%
+    \advance\pgf at y by 2\pgf at yc%
+    % Qrr: family height
+    \tikz at nf@getandset{\the\pgf at y}{height}{\pgfutil at tempdima}%
+    \ifdim\pgf at y<\pgfutil at tempdima
+      \pgf at y=\pgfutil at tempa
+    \fi
+    %
+    \pgfmathsetlength\pgf at yb{\pgfkeysvalueof{/pgf/minimum height}}%
+    \ifdim\pgf at y<\pgf at yb%
+      % yes, too small. Enlarge...
+      \pgf at y=\pgf at yb%
+    \fi%
+    % Now, calculate upper border: .5\ht-.5\dp + .5 \pgf at y + outer sep
+    \pgf at y=.5\pgf at y%
+    \advance\pgf at y by-.5\dp\pgfnodeparttextbox%
+    \advance\pgf at y by.5\ht\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \advance\pgf at y by\pgf at ya%
+  }%
+
+\savedanchor\southwest{%
+    % Calculate x
+    %
+    % First, is width < minimum width?
+    \pgf at x=\wd\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at xc{\pgfkeysvalueof{/pgf/inner xsep}}%
+    \advance\pgf at x by 2\pgf at xc%
+    % Qrr: family width
+    \tikz at nf@getandset{\the\pgf at x}{width}{\pgfutil at tempdima}%
+    \ifdim\pgf at x<\pgfutil at tempdima
+      \pgf at x=\pgfutil at tempdima
+    \fi
+    %
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/minimum width}}%
+    \ifdim\pgf at x<\pgf at xb%
+    % yes, too small. Enlarge...
+    \pgf at x=\pgf at xb%
+    \fi%
+    % Now, calculate left border: .5\wd\pgfnodeparttextbox - .5 \pgf at x - outer sep
+    \pgf at x=-.5\pgf at x%
+    \advance\pgf at x by.5\wd\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \advance\pgf at x by-\pgf at xa%
+    % Calculate y
+    %
+    % First, is height+depth < minimum height?
+    \pgf at y=\ht\pgfnodeparttextbox%
+    \advance\pgf at y by\dp\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at yc{\pgfkeysvalueof{/pgf/inner ysep}}%
+    \advance\pgf at y by 2\pgf at yc%
+    % Qrr: family height
+    \tikz at nf@getandset{\the\pgf at y}{height}{\pgfutil at tempdima}%
+    \ifdim\pgf at y<\pgfutil at tempdima
+      \pgf at y=\pgfutil at tempdima
+    \fi
+    %
+    \pgfmathsetlength\pgf at yb{\pgfkeysvalueof{/pgf/minimum height}}%
+    \ifdim\pgf at y<\pgf at yb%
+    % yes, too small. Enlarge...
+    \pgf at y=\pgf at yb%
+    \fi%
+    % Now, calculate upper border: .5\ht-.5\dp - .5 \pgf at y - outer sep
+    \pgf at y=-.5\pgf at y%
+    \advance\pgf at y by-.5\dp\pgfnodeparttextbox%
+    \advance\pgf at y by.5\ht\pgfnodeparttextbox%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \advance\pgf at y by-\pgf at ya%
+  }%
+  \inheritbackgroundpath[from=rectangle]
+  \inheritbeforebackgroundpath[from=rectangle]
+  \inheritbehindforegroundpath[from=rectangle]
+  \inheritforegroundpath[from=rectangle]
+  \inheritbeforeforegroundpath[from=rectangle]
+  \inheritanchor[from=rectangle]{center}
+  \inheritanchor[from=rectangle]{mid}
+  \inheritanchor[from=rectangle]{base}
+  \inheritanchor[from=rectangle]{north}
+  \inheritanchor[from=rectangle]{south}
+  \inheritanchor[from=rectangle]{west}
+  \inheritanchor[from=rectangle]{mid west}
+  \inheritanchor[from=rectangle]{base west}
+  \inheritanchor[from=rectangle]{north west}
+  \inheritanchor[from=rectangle]{south west}
+  \inheritanchor[from=rectangle]{east}
+  \inheritanchor[from=rectangle]{mid east}
+  \inheritanchor[from=rectangle]{base east}
+  \inheritanchor[from=rectangle]{north east}
+  \inheritanchor[from=rectangle]{south east}
+  \inheritanchorborder[from=rectangle]
+}
+
+\pgfdeclareshape{Circle}{%
+  \savedanchor\centerpoint{% tex/generic/pgf/modules/pgfmoduleshapes.code.tex
+    \pgf at x=.5\wd\pgfnodeparttextbox
+    \pgf at y=.5\ht\pgfnodeparttextbox
+    \advance\pgf at y by-.5\dp\pgfnodeparttextbox
+  }%
+  \saveddimen\radius{% tex/generic/pgf/modules/pgfmoduleshapes.code.tex
+    % Calculate ``height radius''
+    \pgf at ya=.5\ht\pgfnodeparttextbox
+    \advance\pgf at ya by.5\dp\pgfnodeparttextbox
+    \pgfmathsetlength\pgf at yb{\pgfkeysvalueof{/pgf/inner ysep}}%
+    \advance\pgf at ya by\pgf at yb
+    % Calculate ``width radius''
+    \pgf at xa=.5\wd\pgfnodeparttextbox
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/inner xsep}}%
+    \advance\pgf at xa by\pgf at xb
+    % Calculate length of radius vector:
+    \pgf at process{\pgfpointnormalised{\pgfqpoint{\pgf at xa}{\pgf at ya}}}%
+    \ifdim\pgf at x>\pgf at y
+        \c at pgf@counta=\pgf at x
+        \ifnum\c at pgf@counta=0\relax
+        \else
+          \divide\c at pgf@counta by 255\relax
+          \pgf at xa=16\pgf at xa\relax
+          \divide\pgf at xa by\c at pgf@counta
+          \pgf at xa=16\pgf at xa\relax
+        \fi
+      \else
+        \c at pgf@counta=\pgf at y
+        \ifnum\c at pgf@counta=0\relax
+        \else
+          \divide\c at pgf@counta by 255\relax
+          \pgf at ya=16\pgf at ya\relax
+          \divide\pgf at ya by\c at pgf@counta
+          \pgf at xa=16\pgf at ya\relax
+        \fi
+    \fi
+    \pgf at x=\pgf at xa%
+    % Qrr: check for families
+    \tikz at nf@getandset{\the\dimexpr2\pgf at x\relax}{width}{\pgfutil at tempdima}%
+    \tikz at nf@getandset{\the\dimexpr2\pgf at x\relax}{height}{\pgfutil at tempdimb}%
+    % Qrr: and adjust like minimum width and minimum height
+    \ifdim\pgf at x<.5\pgfutil at tempdima
+      \pgf at x=.5\pgfutil at tempdima
+    \fi
+    \ifdim\pgf at x<.5\pgfutil at tempdimb
+      \pgf at x=.5\pgfutil at tempdimb
+    \fi
+    % If necessary, adjust radius so that the size requirements are met:
+    \pgfmathsetlength{\pgf at xb}{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgfmathsetlength{\pgf at yb}{\pgfkeysvalueof{/pgf/minimum height}}%
+    \ifdim\pgf at x<.5\pgf at xb
+        \pgf at x=.5\pgf at xb
+    \fi
+    \ifdim\pgf at x<.5\pgf at yb
+        \pgf at x=.5\pgf at yb
+    \fi
+    % Now, add larger of outer separations.
+    \pgfmathsetlength{\pgf at xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \pgfmathsetlength{\pgf at yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \ifdim\pgf at xb<\pgf at yb
+      \advance\pgf at x by\pgf at yb
+    \else
+      \advance\pgf at x by\pgf at xb
+    \fi
+  }%
+  \inheritbackgroundpath[from=circle]
+  \inheritbeforebackgroundpath[from=circle]
+  \inheritbehindforegroundpath[from=circle]
+  \inheritforegroundpath[from=circle]
+  \inheritbeforeforegroundpath[from=circle]
+  \inheritanchor[from=circle]{center}
+  \inheritanchor[from=circle]{mid}
+  \inheritanchor[from=circle]{base}
+  \inheritanchor[from=circle]{north}
+  \inheritanchor[from=circle]{south}
+  \inheritanchor[from=circle]{west}
+  \inheritanchor[from=circle]{mid west}
+  \inheritanchor[from=circle]{base west}
+  \inheritanchor[from=circle]{north west}
+  \inheritanchor[from=circle]{south west}
+  \inheritanchor[from=circle]{east}
+  \inheritanchor[from=circle]{mid east}
+  \inheritanchor[from=circle]{base east}
+  \inheritanchor[from=circle]{north east}
+  \inheritanchor[from=circle]{south east}
+  \inheritanchorborder[from=circle]
+}
+
+\def\pgfutil at prefixto@macro#1#2{%
+  \def\pgf at temp{#2}%
+  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter#1%
+  \expandafter\expandafter\expandafter{\expandafter\pgf at temp#1}%
+}
+
+\pgfqkeys{/tikz/node family}{
+  setup shape/.code={%
+    \expandafter\pgfutil at prefixto@macro\csname pgf at sh@s@#1\endcsname{%
+      \tikz at nf@getandset{\the\wd\pgfnodeparttextbox}{text width}{\pgfutil at tempdima}%
+      \ifdim\wd\pgfnodeparttextbox<\pgfutil at tempdima
+        \pgfutil at tempdimb=\pgfutil at tempdima
+        \advance\pgfutil at tempdimb-\wd\pgfnodeparttextbox
+        \setbox\pgfnodeparttextbox=\hbox to \pgfutil at tempdima{\tikz at nf@align at action\pgfutil at tempdimb\box\pgfnodeparttextbox}%
+      \fi
+      \tikz at nf@getandset{\the\dp\pgfnodeparttextbox}{text depth}{\pgfutil at tempdima}%
+      \ifdim\dp\pgfnodeparttextbox<\pgfutil at tempdima
+          \dp\pgfnodeparttextbox=\pgfutil at tempdima
+      \fi
+      \tikz at nf@getandset{\the\ht\pgfnodeparttextbox}{text height}{\pgfutil at tempdima}%
+      \ifdim\ht\pgfnodeparttextbox<\pgfutil at tempdima
+          \ht\pgfnodeparttextbox=\pgfutil at tempdima
+      \fi
+    }%
+  },
+  setup shape/.list={rectangle,circle,Rectangle,Circle}
+}


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,104 @@
+% 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.
+%
+\tikzset{
+  arc to/.code=\pgfqkeys{/tikz/arc to}{#1},
+  arc to={
+    counter clockwise/.code=\pgfkeyssetvalue{/tikz/arc to/ccw flag}{1},
+    clockwise/.code=\pgfkeyssetvalue{/tikz/arc to/ccw flag}{0},
+    x radius/.code=\pgfkeyssetvalue{/tikz/x radius}{#1},
+    y radius/.code=\pgfkeyssetvalue{/tikz/y radius}{#1},
+    radius/.code=\pgfkeyssetvalue{/tikz/x radius}{#1}\pgfkeyssetvalue{/tikz/y radius}{#1},
+    large/.code=\pgfkeyssetvalue{/tikz/arc to/large flag}{1},
+    small/.code=\pgfkeyssetvalue{/tikz/arc to/large flag}{0},
+    % defaults
+    rotate/.initial=0, counter clockwise, small,
+    counter clockwise/.value forbidden,
+    clockwise/.value forbidden,
+    large/.value forbidden,
+    small/.value forbidden}}
+\def\tikz at arcA rc{\pgfutil at ifnextchar t%
+  {\tikz at flush@moveto\expandafter\expandafter\expandafter\tikz at arcB@cont\expandafter\pgfutil at gobble\pgfutil at gobble}
+  {\tikz at flush@moveto\tikz at arc@cont}}
+\def\tikz at arcB@cont{%
+  \pgfutil at ifnextchar[\tikz@@do at arcB{
+    \advance\tikz at expandcount by -10\relax% go down quickly
+    \ifnum\tikz at expandcount<0\relax%
+      \def\@next{\tikz@@do at arcB[]}%
+    \else%
+      \def\@next{\expandafter\tikz at arcB@cont}%
+    \fi%
+    \@next}}%
+\def\tikz@@do at arcB[#1]{%
+  \def\tikz at arcB@options{#1}%
+  \tikz at do@@arcB}
+\def\tikz at do@@arcB{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikz at do@@arcB}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikz at do@@arcB}
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikz at do@@arcB}
+        {\tikz at scan@one at point\tikz at do@arcB}}}}
+
+\def\tikz at do@arcB#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}
+  \tikz at make@last at position{#1}%
+  \edef\tikz at timer@end{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \iftikz at shapeborder
+    \edef\tikz at moveto@waiting{\tikz at shapeborder@name}%
+  \fi
+  \begingroup
+    \tikzset{every arc/.try,every arc to/.try,arc to/.expand once=\tikz at arcB@options}%
+    \pgfmathsetmacro\tikz at arc@x{\pgfkeysvalueof{/tikz/x radius}}%
+    \ifpgfmathunitsdeclared
+      \pgfmathsetmacro\tikz at arc@y{\pgfkeysvalueof{/tikz/y radius}}%
+      \ifpgfmathunitsdeclared
+        \pgfpatharcto{\tikz at arc@x pt}{\tikz at arc@y pt}
+                     {\pgfkeysvalueof{/tikz/arc to/rotate}}{\pgfkeysvalueof{/tikz/arc to/large flag}}
+                     {\pgfkeysvalueof{/tikz/arc to/ccw flag}}{#1}%
+      \else
+        \tikzerror{You cannot mix dimensions and dimension values in an arc}%
+      \fi
+    \else
+      \pgfmathsetmacro\tikz at arc@y{\pgfkeysvalueof{/tikz/y radius}}%
+      \ifpgfmathunitsdeclared
+        \tikzerror{You cannot mix dimensions and dimension values in an arc}%
+      \else
+        \pgf at process{\pgfpointxy{\tikz at arc@x}{0}}%
+        \pgfmathveclen@{\pgf at sys@tonumber\pgf at x}{\pgf at sys@tonumber\pgf at y}%
+        \let\tikz at arc@x\pgfmathresult
+        \pgf at process{\pgfpointxy{0}{\tikz at arc@y}}%
+        \pgfmathveclen@{\pgf at sys@tonumber\pgf at x}{\pgf at sys@tonumber\pgf at y}%
+        \let\tikz at arc@y\pgfmathresult
+        \pgfpatharcto{+\tikz at arc@x pt}{+\tikz at arc@y pt}
+                     {\pgfkeysvalueof{/tikz/arc to/rotate}}{\pgfkeysvalueof{/tikz/arc to/large flag}}
+                     {\pgfkeysvalueof{/tikz/arc to/ccw flag}}{#1}%
+      \fi
+    \fi
+  \endgroup
+  % check whether \pgf at marshall starts with \pgfpathlineto
+  \pgfutil at ifxempty\pgf at marshal{}{%
+    \edef\tikz at temp{\expandafter\expandafter\expandafter\noexpand\expandafter\pgfutil at firstgobblerest\pgf at marshal\relax}%
+    \expandafter\let\expandafter\tikz at temp\tikz at temp
+    \pgfutil at ifx\tikz at temp\pgfpathlineto{}{%
+      % getting rid of \pgfpatharcaxes inside \pgf at marshal
+      \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf at marshal
+      \expandafter\expandafter\expandafter{\expandafter\pgfutil at gobble\pgf at marshal}%
+      % extracting the other four values needed for the timer
+      \edef\tikz at timer@start at angle{\expandafter\pgfutil at firstoffour\pgf at marshal}%
+      \edef\tikz at timer@end at angle{\expandafter\pgfutil at secondoffour\pgf at marshal}%
+      \pgfextract at process\tikz at timer@zero at axis{\expandafter\pgfutil at thirdoffour\pgf at marshal}%
+      \pgfextract at process\tikz at timer@ninety at axis{\expandafter\pgfutil at fourthoffour\pgf at marshal}%
+      %
+      \let\tikz at timer=\tikz at timer@arc
+    }%
+  }%
+  \tikz at scan@next at command
+}
+\def\pgfutil at firstoffour#1#2#3#4{#1}
+\def\pgfutil at secondoffour#1#2#3#4{#2}
+\def\pgfutil at thirdoffour#1#2#3#4{#3}
+\def\pgfutil at fourthoffour#1#2#3#4{#4}
+\def\pgfutil at firstgobblerest#1#2\relax{#1}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,683 @@
+% 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.
+%
+
+%% For the operators r-lr, r-rl, r-ud and r-du we need to check after TikZ found r
+\let\tikz at orig@rect\tikz at rect
+\def\tikz at rect{\pgfutil at ifnextchar e\tikz at orig@rect\qrr at tikz@r}
+\def\qrr at tikz@r -{%
+  \pgfutil at ifnextchar l\qrr at tikz@lr at lineto{%
+    \pgfutil at ifnextchar r\qrr at tikz@rl at lineto{%
+      \pgfutil at ifnextchar u\qrr at tikz@ud at lineto{%
+        \pgfutil at ifnextchar d\qrr at tikz@du at lineto\tikz at expand
+      }%
+    }%
+  }%
+}
+%% For the operator |-| we need to check after TikZ found |-
+\let\tikz at orig@vh at lineto@next\tikz at vh@lineto at next
+\def\tikz at vh@lineto at next{%
+  \pgfutil at ifnextchar|{\expandafter\qrr at tikz@vhv at lineto\pgfutil at gobble}%
+    {\pgfutil at ifnextchar\tikz at activebar{\expandafter\qrr at tikz@vhv at lineto\pgfutil at gobble}%
+      {\tikz at orig@vh at lineto@next}}}
+%% For the operator -|- we need to check after TikZ found -|
+\let\tikz at orig@hv at lineto\tikz at hv@lineto
+\def\tikz at hv@lineto{%
+  \pgfutil at ifnextchar-{\expandafter\qrr at tikz@hvh at lineto\pgfutil at gobble}%
+    {\tikz at orig@hv at lineto}}
+
+%% |-|[<opts>] and -|-[<opts>] are allowed
+\def\qrr at tikz@vhv at lineto{\pgfutil at ifnextchar[{\qrr at tikz@collect at hvvh@options\qrr at tikz@vhv at lineto@next}{\qrr at tikz@collect at hvvh@options\qrr at tikz@vhv at lineto@next[]}}
+\def\qrr at tikz@hvh at lineto{\pgfutil at ifnextchar[{\qrr at tikz@collect at hvvh@options\qrr at tikz@hvh at lineto@next}{\qrr at tikz@collect at hvvh@options\qrr at tikz@hvh at lineto@next[]}}
+
+%% r-rl[<opts>], r-lr[<opts>], etc.
+\def\qrr at tikz@rl at lineto rl{\pgfutil at ifnextchar[{\qrr at tikz@collect at hvvh@options\qrr at tikz@rl at lineto@next}{\qrr at tikz@collect at hvvh@options\qrr at tikz@rl at lineto@next[]}}
+\def\qrr at tikz@lr at lineto lr{\pgfutil at ifnextchar[{\qrr at tikz@collect at hvvh@options\qrr at tikz@lr at lineto@next}{\qrr at tikz@collect at hvvh@options\qrr at tikz@lr at lineto@next[]}}
+\def\qrr at tikz@du at lineto du{\pgfutil at ifnextchar[{\qrr at tikz@collect at hvvh@options\qrr at tikz@du at lineto@next}{\qrr at tikz@collect at hvvh@options\qrr at tikz@du at lineto@next[]}}
+\def\qrr at tikz@ud at lineto ud{\pgfutil at ifnextchar[{\qrr at tikz@collect at hvvh@options\qrr at tikz@ud at lineto@next}{\qrr at tikz@collect at hvvh@options\qrr at tikz@ud at lineto@next[]}}
+
+%% TikZ interjects are done, the rest is independent:
+
+\newlength\qrr at tikz@udlr at distance
+\newlength\qrr at tikz@hvvh at distance
+\newif\ifqrr at tikz@hvvh at middle         % checks whether spacing = 0 was selected
+\newif\ifqrr at tikz@hvvh at fromcenter
+\newif\iftikz at ortho@preflush
+\tikz at ortho@preflushtrue
+\let\tikz at origtotarget\pgfutil at empty
+
+%%% HVVH/UDLR
+\tikzset{%
+  hvvh/.code={\pgfqkeys{/tikz/hvvh}{#1}},%
+  udlr/.code={\pgfqkeys{/tikz/udlr}{#1}},%
+  hvvh/.search also=/tikz,%
+  udlr/.search also=/tikz,%
+  hvvh/middle 0 to 1/.style={hvvh/spacing=0},%
+  hvvh/from center/.is if=qrr at tikz@hvvh at fromcenter,%
+  udlr/from center/.style={/tikz/hvvh/from center={#1}},
+  hvvh/spacing/.code=% spacing = 0 means that the middle part are the pos-itions 0 to 1,
+  %                                           the first part is -1 to 0, the last part is to 2
+    \pgfmathint{#1}\let\qrr at tikz@hvvh at timing@parts\pgfmathresult% in case they are calculations to be done
+    \ifcase\qrr at tikz@hvvh at timing@parts\relax
+      \qrr at tikz@hvvh at middletrue
+      \def\qrr at tikz@hvvh at timing@parts{1}%
+      \def\qrr at tikz@hvvh at timing@first{0}%
+      \def\qrr at tikz@hvvh at timing@last{1}%
+      \def\qrr at tikz@hvvh at timing@subtr{0}%
+      \def\qrr at tikz@hvvh at timing@factor{1}%
+    \else            % in all other cases n > 0 the kinks are at pos = 1/n and (n - 1)/n
+      \qrr at tikz@hvvh at middlefalse
+      \pgfmathreciprocal{#1}\let\qrr at tikz@hvvh at timing@first\pgfmathresult
+      \pgfmathsetmacro\qrr at tikz@hvvh at timing@last{1-\pgfmathresult}%
+      \pgfmathreciprocal{#1-2}%
+      \let\qrr at tikz@hvvh at timing@subtr\pgfmathresult
+      \pgfmathsetmacro\qrr at tikz@hvvh at timing@factor{1+2*\pgfmathresult}%
+    \fi,%
+  hvvh/ratio/.code=\pgfmathsetmacro\qrr at tikz@hvvh at ratio{#1},%
+  % TODO: not possible to do distance in TikZ coordinate system
+  hvvh/distance/.code=\pgfmathsetlength\qrr at tikz@hvvh at distance{#1}\let\qrr at tikz@hvvh at ratio\pgfutil at empty,%
+  udlr/distance/.style={%
+    /tikz/udlr/ud distance={#1},%
+    /tikz/udlr/du distance={#1},%
+    /tikz/udlr/lr distance={#1},%
+    /tikz/udlr/rl distance={#1}},%
+  udlr/ud distance/.initial=+.5cm,%
+  udlr/du distance/.initial=+.5cm,%
+  udlr/lr distance/.initial=+.5cm,%
+  udlr/rl distance/.initial=+.5cm,%
+  hvvh/ratio=.5,% default value
+  hvvh/spacing=4,% default value
+}%
+
+%BEGIN_FOLD Timer
+\def\tikz at timer@hvhline{%
+  \pgf at process{\tikz at timer@start}\pgf at ya\pgf at y
+  \pgf at process{\tikz at timer@end}\pgf at yc\pgf at y
+  \pgf at process{\tikz at timer@middle}\pgf at xb\tikz at time pt%
+  \ifdim\tikz at time pt<\qrr at tikz@hvvh at timing@first pt% first quarter
+    \ifqrr at tikz@hvvh at middle
+      \advance\pgf at xb1pt%
+    \else
+      \pgf at xb\qrr at tikz@hvvh at timing@parts\pgf at xb
+    \fi
+    \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}{\noexpand\tikz at timer@start}{%
+        \noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at ya}}}%
+  \else
+    \ifdim\tikz at time pt>\qrr at tikz@hvvh at timing@last pt% last quarter
+      \ifqrr at tikz@hvvh at middle
+        \advance\pgf at xb-1pt%
+      \else
+        \pgf at xb\qrr at tikz@hvvh at timing@parts\pgf at xb
+      \fi
+      \advance\pgf at xb\dimexpr-\qrr at tikz@hvvh at timing@parts pt+1pt\relax%
+      \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
+        {\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at yc}}{\noexpand\tikz at timer@end}}%
+    \else% middle half
+      \pgf at xb\qrr at tikz@hvvh at timing@factor\pgf at xb%
+      \advance\pgf at xb-\qrr at tikz@hvvh at timing@subtr pt%
+      \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
+        {\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at ya}}{\noexpand\tikz at timer@middle}}%
+    \fi\fi\tikz at marshal}
+\def\tikz at timer@vhvline{%
+  \pgf at process{\tikz at timer@start}\pgf at xa\pgf at x
+  \pgf at process{\tikz at timer@end}\pgf at xc\pgf at x
+  \pgf at process{\tikz at timer@middle}\pgf at xb\tikz at time pt%
+  \ifdim\tikz at time pt<\qrr at tikz@hvvh at timing@first pt% first quarter
+    \ifqrr at tikz@hvvh at middle
+      \advance\pgf at xb1pt%
+    \else
+      \pgf at xb\qrr at tikz@hvvh at timing@parts\pgf at xb
+    \fi
+    \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}{\noexpand\tikz at timer@start}{%
+        \noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at y}}}%
+  \else
+    \ifdim\tikz at time pt>\qrr at tikz@hvvh at timing@last pt% last quarter
+    \ifqrr at tikz@hvvh at middle
+      \advance\pgf at xb-1pt%
+    \else
+      \pgf at xb\qrr at tikz@hvvh at timing@parts\pgf at xb
+    \fi
+      \advance\pgf at xb by\dimexpr-\qrr at tikz@hvvh at timing@parts pt+1pt\relax%
+      \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at y}}{\noexpand\tikz at timer@end}}%
+    \else% middle half
+      \pgf at xb=\qrr at tikz@hvvh at timing@factor\pgf at xb
+      \advance\pgf at xb by-\qrr at tikz@hvvh at timing@subtr pt%
+      \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
+        {\noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at y}}{\noexpand\tikz at timer@middle}}%
+      \fi\fi\tikz at marshal}%
+
+%% collect options and nodes, coordinates and pics onpath
+\let\tikz at hvvh@currentoption\pgfutil at empty
+\def\qrr at tikz@collect at hvvh@options#1[#2]{\edef\tikz at hvvh@currentoption{#2}#1}
+\def\qrr at tikz@hvh at lineto@next{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\qrr at tikz@hvh at lineto@next}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\qrr at tikz@hvh at lineto@next}%
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\qrr at tikz@hvh at lineto@next}{\tikz at scan@one at point\qrr at tikz@@hvh at lineto}}}}%
+\def\qrr at tikz@vhv at lineto@next{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\qrr at tikz@vhv at lineto@next}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\qrr at tikz@vhv at lineto@next}%
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\qrr at tikz@vhv at lineto@next}{\tikz at scan@one at point\qrr at tikz@@vhv at lineto}}}}%
+\def\qrr at tikz@ud at lineto@next{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\qrr at tikz@ud at lineto@next}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\qrr at tikz@ud at lineto@next}
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\qrr at tikz@ud at lineto@next}{\tikz at scan@one at point\qrr at tikz@@ud at lineto}}}}%
+\def\qrr at tikz@du at lineto@next{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\qrr at tikz@du at lineto@next}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\qrr at tikz@du at lineto@next}
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\qrr at tikz@du at lineto@next}{\tikz at scan@one at point\qrr at tikz@@du at lineto}}}}%
+\def\qrr at tikz@lr at lineto@next{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\qrr at tikz@lr at lineto@next}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\qrr at tikz@lr at lineto@next}
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\qrr at tikz@lr at lineto@next}{\tikz at scan@one at point\qrr at tikz@@lr at lineto}}}}%
+\def\qrr at tikz@rl at lineto@next{%
+  \pgfutil at ifnextchar n{\tikz at collect@label at onpath\qrr at tikz@rl at lineto@next}
+    {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\qrr at tikz@rl at lineto@next}
+      {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\qrr at tikz@rl at lineto@next}{\tikz at scan@one at point\qrr at tikz@@rl at lineto}}}}%
+
+\def\tikz at do@hvvh#1#2#3#4#5{%
+% #1 = first kink
+% #2 = second kink
+% #3 = end
+% #4 = timer
+% #5 = tikz at shapeborder@name
+  \pgfpathlineto{#1}%
+  \pgfpathlineto{#2}%
+  \pgfpathlineto{#3}%
+  \def\tikz at timer@middle{#2}%
+  \def\tikz at timer@end{#3}%
+  \let\tikz at timer#4
+  \edef\pgf at temp{#5}%
+  \ifx\pgf at temp\pgfutil at empty
+    \let\tikz at moveto@waiting\relax
+  \else
+    \let\tikz at moveto@waiting\pgf at temp
+  \fi
+  \tikz at scan@next at command}%
+
+%% -|- operator
+\def\qrr at tikz@@hvh at lineto#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \pgf at xb=\tikz at lastx
+  \pgf at xc=\tikz at lastx
+  \pgf at yc=\tikz at lasty
+  \tikz at make@last at position{#1}%
+  \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\pgf at yc}}\pgf at xc\pgf at yc
+  \begingroup
+    \pgfqkeys{/tikz/hvvh}{/tikz/style/.expand once=\tikz at hvvh@currentoption}%
+    \iftikz at shapeborder
+      \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at xb}{\tikz at lasty}}}%
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at xc\pgf at xb
+      \fi
+      \pgfutil at ifxempty\qrr at tikz@hvvh at ratio{%
+        \ifdim\qrr at tikz@hvvh at distance<0pt\relax
+          \ifqrr at tikz@hvvh at fromcenter
+            \pgf at xc\tikz at lastx
+          \else
+            \pgf at xc\pgf at x
+          \fi
+        \fi
+        \ifdim\pgf at xb>\tikz at lastx
+          \qrr at tikz@hvvh at distance-\qrr at tikz@hvvh at distance
+        \fi
+      }{%
+        \ifqrr at tikz@hvvh at fromcenter
+          \qrr at tikz@hvvh at distance\tikz at lastx
+        \else
+          \qrr at tikz@hvvh at distance\pgf at x
+        \fi
+        \advance\qrr at tikz@hvvh at distance-\pgf at xc
+        \qrr at tikz@hvvh at distance\qrr at tikz@hvvh at ratio\qrr at tikz@hvvh at distance
+      }%
+      \advance\pgf at xc\qrr at tikz@hvvh at distance
+      \edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+      \edef\pgf at tempb{\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
+      \edef\pgf at temp{\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+    \else
+      \let\tikz at shapeborder@name\pgfutil at empty
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at xc\pgf at xb
+      \fi
+      \pgfutil at ifxempty\qrr at tikz@hvvh at ratio{%
+        \ifdim\qrr at tikz@hvvh at distance<0pt\relax
+          \pgf at xc\tikz at lastx
+        \fi
+        \ifdim\pgf at xb>\tikz at lastx
+          \qrr at tikz@hvvh at distance-\qrr at tikz@hvvh at distance
+        \fi
+      }{%
+        \qrr at tikz@hvvh at distance\tikz at lastx
+        \advance\qrr at tikz@hvvh at distance-\pgf at xc
+        \qrr at tikz@hvvh at distance\qrr at tikz@hvvh at ratio\qrr at tikz@hvvh at distance
+      }%
+      \advance\pgf at xc\qrr at tikz@hvvh at distance
+      \edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+      \edef\pgf at tempb{\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
+      \edef\pgf at temp{\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+    \fi%
+    \xdef\pgf at marshal{%
+      \noexpand\tikz at do@hvvh
+        {\expandafter\noexpand\pgf at tempa}%
+        {\expandafter\noexpand\pgf at tempb}%
+        {\expandafter\noexpand\pgf at temp}%
+        {\noexpand\tikz at timer@hvhline}{\tikz at shapeborder@name}}%
+  \endgroup
+  \pgf at marshal}%
+
+%% |-| operator
+\def\qrr at tikz@@vhv at lineto#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \pgf at xc=\tikz at lastx
+  \pgf at yb=\tikz at lasty
+  \pgf at yc=\tikz at lasty
+  \tikz at make@last at position{#1}%
+  \tikz at flush@moveto at toward{\pgfqpoint{\pgf at xc}{\tikz at lasty}}\pgf at xc\pgf at yc
+  \begingroup
+    \pgfqkeys{/tikz/hvvh}{/tikz/style/.expand once=\tikz at hvvh@currentoption}%
+    \iftikz at shapeborder
+      \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\tikz at lastx}{\pgf at yb}}}%
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at yc\pgf at yb
+      \fi
+      \ifx\qrr at tikz@hvvh at ratio\pgfutil at empty
+        \ifdim\qrr at tikz@hvvh at distance<0pt\relax
+          \ifqrr at tikz@hvvh at fromcenter
+            \pgf at yc\tikz at lasty
+          \else
+            \pgf at yc\pgf at y
+          \fi
+        \fi
+        \ifdim\pgf at yb>\tikz at lasty
+          \qrr at tikz@hvvh at distance-\qrr at tikz@hvvh at distance
+        \fi
+      \else
+        \ifqrr at tikz@hvvh at fromcenter
+          \qrr at tikz@hvvh at distance\tikz at lasty
+        \else
+          \qrr at tikz@hvvh at distance\pgf at y
+        \fi
+        \advance\qrr at tikz@hvvh at distance-\pgf at yc
+        \qrr at tikz@hvvh at distance\qrr at tikz@hvvh at ratio\qrr at tikz@hvvh at distance
+      \fi
+      \advance\pgf at yc\qrr at tikz@hvvh at distance
+      \edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+      \edef\pgf at tempb{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
+      \edef\pgf at temp{\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+    \else
+      \let\tikz at shapeborder@name\pgfutil at empty
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at yc\pgf at yb
+      \fi
+      \ifx\qrr at tikz@hvvh at ratio\pgfutil at empty
+        \ifdim\qrr at tikz@hvvh at distance<0pt\relax
+          \pgf at yc\tikz at lasty
+        \fi
+        \ifdim\pgf at yb>\tikz at lasty
+          \qrr at tikz@hvvh at distance-\qrr at tikz@hvvh at distance
+        \fi
+      \else
+        \qrr at tikz@hvvh at distance\tikz at lasty
+        \advance\qrr at tikz@hvvh at distance-\pgf at yc
+        \qrr at tikz@hvvh at distance\qrr at tikz@hvvh at ratio\qrr at tikz@hvvh at distance
+      \fi
+      \advance\pgf at yc\qrr at tikz@hvvh at distance
+      \edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+      \edef\pgf at tempb{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
+      \edef\pgf at temp{\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+    \fi%
+    \xdef\pgf at marshal{%
+      \noexpand\tikz at do@hvvh
+        {\expandafter\noexpand\pgf at tempa}%
+        {\expandafter\noexpand\pgf at tempb}%
+        {\expandafter\noexpand\pgf at temp}%
+        {\noexpand\tikz at timer@vhvline}{\tikz at shapeborder@name}}%
+  \endgroup
+  \pgf at marshal}%
+
+%% r-ud operator
+\def\qrr at tikz@@ud at lineto#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \pgf at xc\tikz at lastx
+  \pgf at yb\tikz at lasty
+  \advance\tikz at lasty1pt%
+  \let\pgf at temp\tikz at moveto@waiting
+  \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
+  \tikz at make@last at position{#1}%
+  \begingroup
+    \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz at hvvh@currentoption}%
+    \pgfmathsetlength\qrr at tikz@udlr at distance{\pgfkeysvalueof{/tikz/udlr/ud distance}}%
+    \iftikz at shapeborder
+      \advance\pgf at y1pt%
+      \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at yc\pgf at yb
+      \else\ifx\pgf at temp\relax
+          \pgf at yc\pgf at yb
+        \fi
+      \fi
+      \ifdim\pgf at yc<\pgf at y
+        \ifqrr at tikz@hvvh at fromcenter
+          \pgf at yc=\tikz at lasty
+        \else
+          \pgf at yc=\pgf at y
+        \fi
+      \fi
+      \advance\pgf at yc\qrr at tikz@udlr at distance
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+    \else
+      \let\tikz at shapeborder@name\pgfutil at empty
+      \ifx\pgf at temp\relax\else
+        \ifqrr at tikz@hvvh at fromcenter\else
+          \pgf at yb\pgf at yc
+        \fi
+      \fi
+      \ifdim\pgf at yb<\tikz at lasty\pgf at yb\tikz at lasty\fi
+      \advance\pgf at yb\qrr at tikz@udlr at distance
+      \pgf at yc\pgf at yb
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+    \fi
+    \xdef\pgf at marshal{%
+      \noexpand\tikz at do@hvvh
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+        {\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
+        {\expandafter\noexpand\pgf at temp}%
+        {\noexpand\tikz at timer@vhvline}{\tikz at shapeborder@name}}%
+  \endgroup
+  \pgf at marshal}%
+
+%% r-du operator
+\def\qrr at tikz@@du at lineto#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \pgf at xc\tikz at lastx
+  \pgf at yb\tikz at lasty
+  \advance\tikz at lasty-1pt%
+  \let\pgf at temp\tikz at moveto@waiting
+  \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
+  \tikz at make@last at position{#1}%
+  \begingroup
+    \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz at hvvh@currentoption}%
+    \pgfmathsetlength\qrr at tikz@udlr at distance{\pgfkeysvalueof{/tikz/udlr/du distance}}%
+    \iftikz at shapeborder
+      \advance\pgf at y-1pt%
+      \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at yc\pgf at yb
+      \else\ifx\pgf at temp\relax
+          \pgf at yc\pgf at yb
+        \fi
+      \fi
+      \ifdim\pgf at yc>\pgf at y
+        \ifqrr at tikz@hvvh at fromcenter
+          \pgf at yc=\tikz at lasty
+        \else
+          \pgf at yc=\pgf at y
+        \fi
+      \fi
+      \advance\pgf at yc-\qrr at tikz@udlr at distance
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+    \else
+      \let\tikz at shapeborder@name\pgfutil at empty
+      \ifx\pgf at temp\relax\else
+        \ifqrr at tikz@hvvh at fromcenter\else
+          \pgf at yb\pgf at yc
+        \fi
+      \fi
+      \ifdim\pgf at yb>\tikz at lasty\pgf at yb\tikz at lasty\fi
+      \advance\pgf at yb-\qrr at tikz@udlr at distance
+      \pgf at yc\pgf at yb
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+    \fi
+    \xdef\pgf at marshal{%
+      \noexpand\tikz at do@hvvh
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+        {\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
+        {\expandafter\noexpand\pgf at temp}%
+        {\noexpand\tikz at timer@vhvline}{\tikz at shapeborder@name}}%
+  \endgroup
+  \pgf at marshal}%
+
+%% r-lr operator
+\def\qrr at tikz@@lr at lineto#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \pgf at xb\tikz at lastx
+  \pgf at yc\tikz at lasty
+  \advance\tikz at lastx-1pt%
+  \let\pgf at temp\tikz at moveto@waiting
+  \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
+  \tikz at make@last at position{#1}%
+  \begingroup
+    \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz at hvvh@currentoption}%
+    \pgfmathsetlength\qrr at tikz@udlr at distance{\pgfkeysvalueof{/tikz/udlr/lr distance}}%
+    \iftikz at shapeborder
+      \advance\pgf at x-1pt%
+      \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at xc\pgf at xb
+      \else\ifx\pgf at temp\relax
+          \pgf at xc\pgf at xb
+        \fi
+      \fi
+      \ifdim\pgf at xc>\pgf at x
+        \ifqrr at tikz@hvvh at fromcenter
+          \pgf at xc=\tikz at lastx
+        \else
+          \pgf at xc=\pgf at x
+        \fi
+      \fi
+      \advance\pgf at xc-\qrr at tikz@udlr at distance
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+    \else
+      \let\tikz at shapeborder@name\pgfutil at empty
+      \ifx\pgf at temp\relax\else
+        \ifqrr at tikz@hvvh at fromcenter\else
+          \pgf at xb\pgf at xc
+        \fi
+      \fi
+      \ifdim\pgf at xb>\tikz at lastx\pgf at xb\tikz at lastx\fi
+      \advance\pgf at xb-\qrr at tikz@udlr at distance
+      \pgf at xc\pgf at xb
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+    \fi
+    \xdef\pgf at marshal{%
+      \noexpand\tikz at do@hvvh
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
+        {\expandafter\noexpand\pgf at temp}%
+        {\noexpand\tikz at timer@hvhline}{\tikz at shapeborder@name}}%
+  \endgroup
+  \pgf at marshal}%
+
+%% r-rl operator
+\def\qrr at tikz@@rl at lineto#1{%
+  \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \pgf at xb\tikz at lastx
+  \pgf at yc\tikz at lasty
+  \advance\tikz at lastx1pt%
+  \let\pgf at temp\tikz at moveto@waiting
+  \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
+  \tikz at make@last at position{#1}%
+  \begingroup
+    \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz at hvvh@currentoption}%
+    \pgfmathsetlength\qrr at tikz@udlr at distance{\pgfkeysvalueof{/tikz/udlr/rl distance}}%
+    \iftikz at shapeborder%
+      \advance\pgf at x1pt%
+      \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
+      \ifqrr at tikz@hvvh at fromcenter
+        \pgf at xc\pgf at xb
+      \else\ifx\pgf at temp\relax
+          \pgf at xc\pgf at xb
+        \fi
+      \fi
+      \ifdim\pgf at xc<\pgf at x
+        \ifqrr at tikz@hvvh at fromcenter
+          \pgf at xc=\tikz at lastx
+        \else
+          \pgf at xc=\pgf at x
+        \fi
+      \fi
+      \advance\pgf at xc\qrr at tikz@udlr at distance
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+    \else
+      \let\tikz at shapeborder@name\pgfutil at empty%
+      \ifx\pgf at temp\relax\else
+        \ifqrr at tikz@hvvh at fromcenter\else
+          \pgf at xb\pgf at xc
+        \fi
+      \fi
+      \ifdim\pgf at xb<\tikz at lastx\pgf at xb\tikz at lastx\fi
+      \advance\pgf at xb\qrr at tikz@udlr at distance
+      \pgf at xc\pgf at xb
+      \edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+    \fi
+    \xdef\pgf at marshal{%
+      \noexpand\tikz at do@hvvh
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+        {\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
+        {\expandafter\noexpand\pgf at temp}%
+        {\noexpand\tikz at timer@hvhline}{\tikz at shapeborder@name}}%
+  \endgroup
+  \pgf at marshal}%
+
+%% a few nice to haves, use with to or edge operator
+\let\tikz at origtotarget\pgfutil at empty
+\tikzset{
+  node as new start/.is if=tikz at ortho@preflush,
+  node as new start,
+  horizontal vertical/.style={to path={-| (\tikztotarget) \tikztonodes}},
+  vertical horizontal/.style={to path={|- (\tikztotarget) \tikztonodes}},
+  horizontal vertical horizontal/.style={to path={-|- (\tikztotarget) \tikztonodes}},
+  vertical horizontal vertical/.style={to path={|-| (\tikztotarget) \tikztonodes}},
+  only vertical second/.style={to path={
+    \pgfextra
+      \let\tikz at ortho@anchor\pgfutil at empty
+      \let\tikz at origtotarget\pgfutil at empty
+      \tikz at scan@one at point\pgfutil at firstofone(\tikztostart)\relax
+      \iftikz at shapeborder
+        \tikz at scan@one at point\pgfutil at firstofone(\tikztotarget)\relax
+        \ifdim\pgf at y>\tikz at lasty\relax
+          \edef\tikztostart{\tikztostart.north}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.south}\fi
+        \else
+          \edef\tikztostart{\tikztostart.south}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.north}\fi
+        \fi
+      \fi
+      \def\tikz at tempa{#1}%
+      \ifx\tikz at tempa\pgfutil at empty\else
+        \let\tikz at origtotarget\tikztotarget
+        \edef\tikztotarget{[xshift={#1}]\tikztotarget\tikz at ortho@anchor}%
+      \fi
+    \endpgfextra
+    [insert path/.expanded={
+      (perpendicular cs: horizontal line through={(\tikztostart)},
+                         vertical line through={(\tikztotarget)}) -- (\tikztotarget)}] \tikztonodes
+      \pgfextra
+        \ifx\tikz at origtotarget\pgfutil at empty\else
+          \iftikz at ortho@preflush(\tikz at origtotarget)\fi\fi\endpgfextra}},
+  only vertical second/.default=,
+  only horizontal second/.style={to path={
+    \pgfextra
+      \let\tikz at ortho@anchor\pgfutil at empty
+      \let\tikz at origtotarget\pgfutil at empty
+      \tikz at scan@one at point\pgfutil at firstofone(\tikztostart)\relax
+      \iftikz at shapeborder
+        \tikz at scan@one at point\pgfutil at firstofone(\tikztotarget)\relax
+        \ifdim\pgf at x>\tikz at lastx\relax
+          \edef\tikztostart{\tikztostart.east}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.west}\fi
+        \else
+          \edef\tikztostart{\tikztostart.west}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.east}\fi
+        \fi
+      \fi
+      \def\tikz at tempa{#1}%
+      \ifx\tikz at tempa\pgfutil at empty\else
+        \let\tikz at origtotarget\tikztotarget
+        \edef\tikztotarget{[yshift={#1}]\tikztotarget\tikz at ortho@anchor}%
+      \fi
+    \endpgfextra
+    [insert path/.expanded={
+      (perpendicular cs: vertical line through={(\tikztostart)},
+                         horizontal line through={(\tikztotarget)}) -- (\tikztotarget)}] \tikztonodes
+    \pgfextra
+      \ifx\tikz at origtotarget\pgfutil at empty\else
+        \iftikz at ortho@preflush(\tikz at origtotarget)\fi\fi\endpgfextra}},
+  only horizontal second/.default=,
+  only vertical first/.style={to path={
+    \pgfextra
+      \let\tikz at ortho@anchor\pgfutil at empty
+      \let\tikz at origtotarget\pgfutil at empty
+      \tikz at scan@one at point\pgfutil at firstofone(\tikztotarget)\relax
+      \iftikz at shapeborder
+        \let\tikz at origtotarget\tikztotarget
+        \tikz at scan@one at point\pgfutil at firstofone(\tikztostart)\relax
+        \ifdim\pgf at y>\tikz at lasty\relax
+          \edef\tikztotarget{\tikztotarget.south}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.north}\fi
+        \else
+          \edef\tikztotarget{\tikztotarget.north}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.south}\fi
+        \fi
+      \fi
+      \def\tikz at tempa{#1}%
+      \ifx\tikz at tempa\pgfutil at empty\else
+        \edef\tikztostart{[xshift={#1}]\tikztostart\tikz at ortho@anchor}%
+      \fi
+    \endpgfextra
+    [insert path/.expanded={(\tikztostart)}] 
+    -- (perpendicular cs: vertical line through/.expanded={(\tikztostart)},
+                        horizontal line through={(\tikztotarget)})
+    \tikztonodes
+    \pgfextra
+      \ifx\tikz at origtotarget\pgfutil at empty\else
+        \iftikz at ortho@preflush(\tikz at origtotarget)\fi\fi\endpgfextra}},
+  only vertical first/.default=,
+  only horizontal first/.style={to path={
+    \pgfextra
+      \let\tikz at ortho@anchor\pgfutil at empty
+      \let\tikz at origtotarget\pgfutil at empty
+      \tikz at scan@one at point\pgfutil at firstofone(\tikztotarget)\relax
+      \iftikz at shapeborder
+        \let\tikz at origtotarget\tikztotarget
+        \tikz at scan@one at point\pgfutil at firstofone(\tikztostart)\relax
+        \ifdim\pgf at x>\tikz at lastx\relax
+          \edef\tikztotarget{\tikztotarget.west}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.east}\fi
+        \else
+          \edef\tikztotarget{\tikztotarget.east}%
+          \iftikz at shapeborder\def\tikz at ortho@anchor{.west}\fi
+        \fi
+      \fi
+      \def\tikz at tempa{#1}%
+      \ifx\tikz at tempa\pgfutil at empty\else
+        \edef\tikztostart{[yshift={#1}]\tikztostart\tikz at ortho@anchor}%
+      \fi
+    \endpgfextra
+    [insert path/.expanded={(\tikztostart)}]
+      -- (perpendicular cs: horizontal line through/.expanded={(\tikztostart)},
+                              vertical line through={(\tikztotarget)})
+    \tikztonodes \pgfextra
+      \ifx\tikz at origtotarget\pgfutil at empty\else
+        \iftikz at ortho@preflush(\tikz at origtotarget)\fi\fi\endpgfextra}},
+  only horizontal first/.default=,
+  only vertical first to center/.style={to path={
+      \pgfextra
+        \let\tikz at origtotarget\tikztotarget
+      \endpgfextra
+    (\tikztostart) -- (perpendicular cs: vertical line through={(\tikztostart)},
+                                         horizontal line through={(\tikztotarget)})
+    \tikztonodes \ifx\tikz at origtotarget\pgfutil at empty\else\iftikz at ortho@preflush(\tikz at origtotarget)\fi\fi}},
+  only horizontal first to center/.style={to path={
+      \pgfextra
+        \let\tikz at origtotarget\tikztotarget
+      \endpgfextra
+    (\tikztostart) -- (perpendicular cs: horizontal line through={(\tikztostart)},
+                                         vertical line through={(\tikztotarget)})
+    \tikztonodes \ifx\tikz at origtotarget\pgfutil at empty\else\iftikz at ortho@preflush(\tikz at origtotarget)\fi\fi}}%
+}
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.timer.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.timer.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.timer.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,188 @@
+% 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.
+%
+\def\tikz at rectB#1{% originally from tikz.code.tex
+  \tikz at make@last at position{#1}%
+  \edef\tikz at timer@end{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+  \let\tikz at timer\tikz at timer@rectangle% %% Timer: new timer
+  \tikz@@movetosave{\pgfqpoint{\pgf at xa}{\pgf at ya}}%
+  \tikz at path@lineto{\pgfqpoint{\pgf at xa}{\tikz at lasty}}%
+  \tikz at path@lineto{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}%
+  \tikz at path@lineto{\pgfqpoint{\tikz at lastx}{\pgf at ya}}%
+  \iftikz at snaked
+    \tikz at path@lineto{\pgfqpoint{\pgf at xa}{\pgf at ya}}%
+  \fi
+  \pgfpathclose
+          \tikz@@movetosave{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}%
+  \def\pgfstrokehook{}%
+  \let\tikz at tangent\relax
+  \tikz at scan@next at command
+}%
+
+\def\tikz@@sine#1{% originally from tikz.code.tex
+  \let\tikz at tangent\tikz at tangent@lookup
+  \tikz at flush@moveto
+  \edef\tikz at timer@start{\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}% %% Timer: save start position
+  \pgf at process{#1}%
+  \edef\tikz at timer@end{\pgfqpoint{\the\pgf at x}{\the\pgf at y}}% %% Timer: saver target position
+  \pgf at xc=\pgf at x
+  \pgf at yc=\pgf at y
+  \advance\pgf at xc by-\tikz at lastx
+  \advance\pgf at yc by-\tikz at lasty
+  \advance\tikz at lastx by\pgf at xc
+  \advance\tikz at lasty by\pgf at yc
+  \tikz at lastxsaved=\tikz at lastx
+  \tikz at lastysaved=\tikz at lasty
+  \tikz at updatecurrenttrue
+  \let\tikz at timer=\tikz at timer@sine% %% Timer: new timer
+  \pgfpathsine{\pgfqpoint{\pgf at xc}{\pgf at yc}}%
+  \tikz at scan@next at command
+}
+
+\def\tikz@@cosine#1{% originally from tikz.code.tex
+  \let\tikz at tangent\tikz at tangent@lookup
+  \tikz at flush@moveto
+  \edef\tikz at timer@start{\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}% %% Timer: save start position
+  \pgf at process{#1}%
+  \edef\tikz at timer@end{\pgfqpoint{\the\pgf at x}{\the\pgf at y}}% %% Timer: save target position
+  \pgf at xc=\pgf at x
+  \pgf at yc=\pgf at y
+  \advance\pgf at xc by-\tikz at lastx
+  \advance\pgf at yc by-\tikz at lasty
+  \advance\tikz at lastx by\pgf at xc
+  \advance\tikz at lasty by\pgf at yc
+  \tikz at lastxsaved=\tikz at lastx
+  \tikz at lastysaved=\tikz at lasty
+  \tikz at updatecurrenttrue
+  \let\tikz at timer=\tikz at timer@cosine% %% Timer: new timer
+  \pgfpathcosine{\pgfqpoint{\pgf at xc}{\pgf at yc}}%
+  \tikz at scan@next at command
+}
+
+\def\tikz at timer@rectangle{%
+  \pgfutil at tempdima\tikz at time pt
+  \ifdim\pgfutil at tempdima<.5pt\else % if we're at the return pos-ition we switch start and end
+    \advance\pgfutil at tempdima-.5pt
+    \let\pgf at tempa\tikz at timer@start
+    \let\tikz at timer@start\tikz at timer@end
+    \let\tikz at timer@end\pgf at tempa
+  \fi
+  \multiply\pgfutil at tempdima2
+  \edef\tikz at time{\strip at pt\pgfutil at tempdima}%
+  \tikz at timer@hvline}%
+
+\def\tikz at parabola@semifinal#1{%
+    \tikz at flush@moveto
+    % Save original start:
+    \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}% %% Timer: save start position
+    \pgf at xb=\tikz at lastx
+    \pgf at yb=\tikz at lasty
+    \tikz at make@last at position{#1}%
+    \edef\tikz at timer@end{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}% %% Timer: save target position
+    \pgf at xc=\tikz at lastx
+    \pgf at yc=\tikz at lasty
+    \begingroup% now calculate bend:
+        \let\tikz at after@path\pgfutil at empty
+        \expandafter\tikzset\expandafter{\tikz at parabola@option}%
+        \tikz at lastxsaved=\tikz at parabola@bend at factor\tikz at lastx
+        \tikz at lastysaved=\tikz at parabola@bend at factor\tikz at lasty
+        \advance\tikz at lastxsaved by\pgf at xb
+        \advance\tikz at lastysaved by\pgf at yb
+        \advance\tikz at lastxsaved by-\tikz at parabola@bend at factor\pgf at xb
+        \advance\tikz at lastysaved by-\tikz at parabola@bend at factor\pgf at yb
+        \expandafter\tikz at make@last at position\expandafter{\tikz at parabola@bend}%
+        \edef\tikz at timer@middle{{\the\tikz at lastx}{\the\tikz at lasty}}% %% Timer: save bend postion
+        % Calculate delta from bend
+        \advance\pgf at xc by-\tikz at lastx
+        \advance\pgf at yc by-\tikz at lasty
+        % Ok, now calculate delta to bend
+        \advance\tikz at lastx by-\pgf at xb
+        \advance\tikz at lasty by-\pgf at yb
+        \edef\tikz at marshall{%
+          \noexpand\let\noexpand\tikz at timer\noexpand\tikz at timer@parabola
+          \noexpand\edef\noexpand\tikz at timer@middle{\noexpand\pgfqpoint\tikz at timer@middle}%
+          \noexpand\pgfpathparabola{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+        }%
+    \expandafter\endgroup%
+    \tikz at marshall
+    \expandafter\tikz at scan@next at command\tikz at after@path%
+}%
+
+\def\tikz at timer@parabola{% following calculations, see \def of \pgfpathparabola in pgfcorepathconstruct.code.tex (l. 1261)
+  \ifdim\tikz at time pt<.5pt\relax % first part
+    \pgf at process{\tikz at timer@middle}%
+    \pgf at xc\pgf at x\pgf at yc\pgf at y
+    \pgf at xb\pgf at x\pgf at yb\pgf at y
+    \pgf at process{\tikz at timer@start}%
+    \advance\pgf at xc-\pgf at x\pgf at xc.1125\pgf at xc
+    \advance\pgf at xc\pgf at x                 % = start_x + .1125 (middle_x - start_x)
+    \advance\pgf at yc-\pgf at y\pgf at yc.225\pgf at yc
+    \advance\pgf at yc\pgf at y                 % = start_y + .225 (middle_y - start_y)
+    \advance\pgf at xb\pgf at x\pgf at xb.5\pgf at xb % = .5 (middle_x + start_x) = start_x + .5 (middle_x - start_x)
+    \pgf at xa=\tikz at time pt%
+    \pgf at xa=2\pgf at xa                      % = 2 * \tikz at time
+    \edef\tikz at marshall{\noexpand\pgftransformcurveattime{\strip at pt\pgf at xa}{\noexpand\tikz at timer@start}%
+      {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+      {\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
+      {\noexpand\tikz at timer@middle}}%
+  \else % second part
+    \pgf at process{\tikz at timer@end}%
+    \pgf at xc\pgf at x
+    \pgf at xb\pgf at x
+    \pgf at yb\pgf at y
+    \pgf at process{\tikz at timer@middle}%
+    \advance\pgf at xc\pgf at x\pgf at xc.5\pgf at xc % = .5 (end_x + middle_x) = middle_x + .5 (end_x - middle_x)
+    \advance\pgf at xb-\pgf at x\pgf at xb.8875\pgf at xb
+    \advance\pgf at xb\pgf at x                 % = middle_x + .8875 (end_x - middle_x)
+    \advance\pgf at yb-\pgf at y\pgf at yb.775\pgf at yb
+    \advance\pgf at yb\pgf at y                 % = middle_y + .775 (end_y - middle_y)
+    \pgf at xa=\tikz at time pt%
+    \advance\pgf at xa-.5pt%
+    \pgf at xa=2\pgf at xa                      % = 2 (\tikz at zime - .5)
+    \edef\tikz at marshall{\noexpand\pgftransformcurveattime{\strip at pt\pgf at xa}{\noexpand\tikz at timer@middle}%
+      {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at y}}%
+      {\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
+      {\noexpand\tikz at timer@end}}%
+  \fi
+  \tikz at marshall
+}
+
+\def\tikz at timer@sine{% following calculations, see \def of \pgfpathsine in pgfcorepathconstruct.code.tex (l. 1315)
+  \pgf at process{\tikz at timer@end}%
+  \pgf at xc\pgf at x\pgf at yc\pgf at y
+  \pgf at xb\pgf at x\pgf at yb\pgf at y
+  \pgf at process{\tikz at timer@start}%
+  \advance\pgf at xc-\pgf at x\pgf at xc.3260\pgf at xc
+  \advance\pgf at xc\pgf at x                     % = start_x + .3260 (end_x - start_x)
+  \advance\pgf at yc-\pgf at y\pgf at yc.5120\pgf at yc
+  \advance\pgf at yc\pgf at y                     % = start_y + .5120 (end_y - start_y)
+  \advance\pgf at xb-\pgf at x\pgf at xb.6380\pgf at xb % = start_x + .6380 (end_x - start_x)
+  \advance\pgf at xb\pgf at x
+  \edef\tikz at marshall{\noexpand\pgftransformcurveattime{\tikz at time}{\noexpand\tikz at timer@start}%
+    {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
+    {\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
+    {\noexpand\tikz at timer@end}}%
+  \tikz at marshall
+}
+\def\tikz at timer@cosine{% following calculations, see \def of \pgfpathcosine in pgfcorepathconstruct.code.tex (l. 1345)
+  \pgf at process{\tikz at timer@end}%
+  \pgf at xc\pgf at x\pgf at yc\pgf at y
+  \pgf at xb\pgf at x\pgf at yb\pgf at y
+  \pgf at process{\tikz at timer@start}%
+  \advance\pgf at xb-\pgf at x\pgf at xb.6740\pgf at xb
+  \advance\pgf at xb\pgf at x                     % = start_x + .6740 (end_x - start_x)
+  \advance\pgf at yb-\pgf at y\pgf at yb.4880\pgf at yb
+  \advance\pgf at yb\pgf at y                     % = start_y + .4880 (end_y - start_y)
+  \advance\pgf at xc-\pgf at x\pgf at xc.3620\pgf at xc % = start_x + .3620 (end_x - start_x)
+  \advance\pgf at xc\pgf at x
+  \edef\tikz at marshall{\noexpand\pgftransformcurveattime{\tikz at time}{\noexpand\tikz at timer@start}%
+    {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at y}}%
+    {\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
+    {\noexpand\tikz at timer@end}}%
+  \tikz at marshall
+}
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.timer.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.patterns.images.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.patterns.images.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.patterns.images.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,53 @@
+% This is the TikZ library patterns.images
+% Load with \usetikzlibrary{patterns.images}
+%
+% Macro:
+%  - \pgfSetupImageAsPattern[<opt arguments for \pgfdeclareimage>]{<name>}{<path/file>}
+%
+% Keys are:
+%  - use image as pattern=<name>
+%  - image as pattern=<opt arguments for \pgftext>
+
+\def\pgfsetupimageaspattern{\pgfutil at ifnextchar[\qrr at pgfsetupimageaspattern{\qrr at pgfsetupimageaspattern[]}}
+\def\qrr at pgfsetupimageaspattern[#1]#2#3{% #1 = options
+                                        % #2 = image name
+                                        % #3 = file name
+  \pgfdeclareimage[#1]{qrr at pgf@iap@#2}{#3}%
+  \sbox\pgfutil at tempboxa{\pgfuseimage{qrr at pgf@iap@#2}}%
+  \expandafter\edef\csname qrr at pgf@iap@#2@\endcsname{{\the\wd\pgfutil at tempboxa}{\the\ht\pgfutil at tempboxa}}%
+}
+\tikzset{
+  image as pattern/name/.initial=,
+  image as pattern/option/.style=,
+  image as pattern/options/.style={/tikz/image as pattern/option/.append style={#1}},
+  image as pattern/.default=,
+  image as pattern/.code={
+    \tikzset{image as pattern/.cd,#1}
+    \pgfkeysgetvalue{/tikz/image as pattern/name}\tikz at temp
+    \pgfutil at ifxempty\tikz at temp{%
+      \tikzerror{You need to specify a name for the ``image-pattern'' to be used.}%
+    }{%
+      \edef\tikz at tempa{\expandafter\expandafter\expandafter\pgfutil at firstoftwo\csname qrr at pgf@iap@\tikz at temp @\endcsname}%
+      \edef\tikz at tempb{\expandafter\expandafter\expandafter\pgfutil at secondoftwo\csname qrr at pgf@iap@\tikz at temp @\endcsname}%
+      \pgfkeysalso{/tikz/path picture={%
+        \pgf at process{\pgfpointanchor{path picture bounding box}{north east}}%
+        \pgf at xa\pgf at x\pgf at ya\pgf at y
+        \pgf at process{\pgfpointanchor{path picture bounding box}{south west}}%
+        \pgf at xb\pgf at x\pgf at yb\pgf at y\pgf at yc\pgf at yb
+        \pgfutil at loop
+          {%
+          \pgfutil at loop
+            \expandafter\pgftext\expandafter[/tikz/image as pattern/option,at=\pgfqpoint{\pgf at xb}{\pgf at yb}]{\pgfuseimage{qrr at pgf@iap@\tikz at temp}}%
+            \ifdim\pgf at yb<\pgf at ya
+            \advance\pgf at yb\tikz at tempb
+          \pgfutil at repeat
+          }%
+          \ifdim\pgf at xb<\pgf at xa
+          \advance\pgf at xb\tikz at tempa
+          \pgf at yb\pgf at yc
+        \pgfutil at repeat
+      }}%
+    }
+  }
+}
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.patterns.images.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.positioning-plus.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.positioning-plus.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.positioning-plus.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,262 @@
+% This is the TikZ library positioning-plus
+% Load with \usetikzlibrary{positioning-plus}
+%
+% This small library extends TikZ options like 'above', 'left' or 'below right'
+% so that they can be used with an optional prefixed factor seperated by ':' (colon)
+%
+% The option 'left=.5:of somenode' will place
+% a new node .5cm (default 'node distance' is '1cm and 1cm') left to (somenode).
+% The option 'above right=.2 and .7:of someothernode' will place
+% a new node .2cm above and .7cm right of (someothernode).
+%
+% Additional the options 'xshift*' and 'yshift*' add an additional shift
+% as a factor of 'node distance'
+% Inspired by http://tex.stackexchange.com/a/117610/16595
+
+\usetikzlibrary{positioning}
+\usetikzlibrary{fit}
+
+\pgfdeclaregenericanchor{corner south east}{%
+  \pgf at sh@reanchor{#1}{south}%
+  \pgf at ya\pgf at y
+  \pgf at process{\pgf at sh@reanchor{#1}{east}}%
+  \pgf at y\pgf at ya
+}
+\pgfdeclaregenericanchor{corner north east}{%
+  \pgf at sh@reanchor{#1}{north}%
+  \pgf at ya\pgf at y
+  \pgf at process{\pgf at sh@reanchor{#1}{east}}%
+  \pgf at y\pgf at ya
+}
+\pgfdeclaregenericanchor{corner south west}{%
+  \pgf at sh@reanchor{#1}{south}%
+  \pgf at ya\pgf at y
+  \pgf at process{\pgf at sh@reanchor{#1}{west}}%
+  \pgf at y\pgf at ya
+}
+\pgfdeclaregenericanchor{corner north west}{%
+  \pgf at sh@reanchor{#1}{north}%
+  \pgf at ya\pgf at y
+  \pgf at process{\pgf at sh@reanchor{#1}{west}}%
+  \pgf at y\pgf at ya
+}
+
+\tikzset{corner above left/.code=\tikz at lib@place at handle@{#1}{corner south east}{-1}{1}{corner north west}{0.707106781}}
+\tikzset{corner above right/.code=\tikz at lib@place at handle@{#1}{corner south west}{1}{1}{corner north east}{0.707106781}}
+\tikzset{corner below left/.code=\tikz at lib@place at handle@{#1}{corner north east}{-1}{-1}{corner south west}{0.707106781}}
+\tikzset{corner below right/.code=\tikz at lib@place at handle@{#1}{corner north west}{1}{-1}{corner south east}{0.707106781}}
+
+\tikzset{corner north left/.code =\tikz at lib@place at handle@{#1}{corner north east}{-1}{0}{corner north west}{1}}
+\tikzset{corner north right/.code=\tikz at lib@place at handle@{#1}{corner north west}{1}{0}{corner north east}{1}}
+\tikzset{corner south left/.code =\tikz at lib@place at handle@{#1}{corner south east}{-1}{0}{corner south west}{1}}
+\tikzset{corner south right/.code=\tikz at lib@place at handle@{#1}{corner south west}{1}{0}{corner south east}{1}}
+
+\tikzset{corner west above/.code =\tikz at lib@place at handle@{#1}{corner south west}{0}{1}{corner north west}{1}}
+\tikzset{corner west below/.code=\tikz at lib@place at handle@{#1}{corner north west}{0}{-1}{corner south west}{1}}
+\tikzset{corner east above/.code =\tikz at lib@place at handle@{#1}{corner south east}{0}{1}{corner north east}{1}}
+\tikzset{corner east below/.code=\tikz at lib@place at handle@{#1}{corner north east}{0}{-1}{corner south east}{1}}
+
+\tikzset{north left/.code =\tikz at lib@place at handle@{#1}{north east}{-1}{0}{north west}{1}}
+\tikzset{north right/.code=\tikz at lib@place at handle@{#1}{north west}{1}{0}{north east}{1}}
+\tikzset{south left/.code =\tikz at lib@place at handle@{#1}{south east}{-1}{0}{south west}{1}}
+\tikzset{south right/.code=\tikz at lib@place at handle@{#1}{south west}{1}{0}{south east}{1}}
+
+\tikzset{west above/.code =\tikz at lib@place at handle@{#1}{south west}{0}{1}{north west}{1}}
+\tikzset{west below/.code=\tikz at lib@place at handle@{#1}{north west}{0}{-1}{south west}{1}}
+\tikzset{east above/.code =\tikz at lib@place at handle@{#1}{south east}{0}{1}{north east}{1}}
+\tikzset{east below/.code=\tikz at lib@place at handle@{#1}{north east}{0}{-1}{south east}{1}}
+
+\newif\ifqrr at tikz@lib at place@postransform
+\tikzset{node distance transformation/.is if=qrr at tikz@lib at place@postransform}
+\def\tikz at lib@place at handle@@#1#2#3#4{%
+  \pgfutil at in@{of }{#1}%
+  \ifpgfutil at in@
+    \tikz at lib@place at of#1\tikz at stop{#4}%
+  \else
+    \edef\tikz at lib@place at nums{#1}%
+  \fi
+  \ifx\tikz at lib@place at nums\pgfutil at empty
+    % Ok, nothing to do, we have set the anchor and we are happy...
+  \else
+    \expandafter\tikz at lib@place at parse@nums\expandafter{\tikz at lib@place at nums}%
+    \pgf at x=#2\pgf at x
+    \pgf at y=#3\pgf at y
+    \ifqrr at tikz@lib at place@postransform
+      \pgf at pos@transform{\pgf at x}{\pgf at y}% change from original
+    \fi
+    \edef\tikz at lib@pos at call{\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}}%
+  \fi
+}
+
+\def\tikz at lib@place at handle@#1#2#3#4#5#6{%
+  \pgfutil at in@{:}{#1}%
+  \ifpgfutil at in@
+    \tikz at lib@place at handle@qrr@#1\tikz at stop
+    \ifx\pgf at temp\pgfutil at empty
+      \let\pgf at temp\tikz at node@distance
+    \fi
+    \pgfmathsetmacro\pgf at tempa{(\pgf at tempa)*#4}%
+    \pgfmathsetmacro\pgf at tempb{(\pgf at tempb)*#3}%
+    \edef\pgf at marshal{\noexpand\tikz at lib@place at handle@{\pgf at temp}{#2}{\pgf at tempb}{\pgf at tempa}{#5}{#6}}%
+    \pgf at marshal
+  \else
+    \def\tikz at anchor{#2}%
+    \let\tikz at do@auto at anchor=\relax
+    \edef\tikz at temp{#1}%
+    \def\tikz at lib@place at single@factor{#6}%
+    \expandafter\tikz at lib@place at handle@@\expandafter{\tikz at temp}{#3}{#4}{#5}%
+  \fi
+}
+\def\tikz at lib@place at handle@qrr@#1:#2\tikz at stop{%
+  \pgfutil at in@{and}{#1}%
+  \ifpgfutil at in@
+    \tikz at lib@place at handle@qrr@@#1\tikz at stop
+  \else
+    \tikz at lib@place at handle@qrr@@#1and#1\tikz at stop
+  \fi
+  \def\pgf at temp{#2}%
+}
+\def\tikz at lib@place at handle@qrr@@#1and#2\tikz at stop{%
+  \def\pgf at tempa{#1}%
+  \def\pgf at tempb{#2}%
+}
+\def\qrr at xyshift@starred#1#2#3{%
+  \edef\tikz at marshal{\noexpand\pgfutil at in@{and}{\tikz at node@distance}}%
+  \tikz at marshal
+  \ifpgfutil at in@
+    \expandafter\tikz at lib@place at handle@qrr@@\tikz at node@distance\tikz at stop
+  \else
+    \let#3\tikz at node@distance
+  \fi
+  \pgfmathparse{(#1)*#3}%
+  \ifpgfmathunitsdeclared
+    \if#2x%
+      \pgftransformshift{\pgfqpoint{\pgfmathresult pt}{0pt}}%
+    \else
+      \pgftransformshift{\pgfqpoint{0pt}{\pgfmathresult pt}}%
+    \fi
+  \else
+    \ifx#2x%
+      \pgf at process{\pgfqpointxy{\pgfmathresult}{0}}%
+    \else
+      \pgf at process{\pgfqpointxy{0}{\pgfmathresult}}%
+    \fi
+    \pgftransformshift{\pgfqpoint{\pgf at x}{\pgf at y}}%
+  \fi}
+\tikzset{
+  xshift*/.code=\qrr at xyshift@starred{#1}x\pgf at tempb,
+  yshift*/.code=\qrr at xyshift@starred{#1}y\pgf at tempa
+}
+
+\def\pgfutil at firstofmany#1#2\pgf at stop{#1}
+\def\pgfutil at secondofmany#1#2\pgf at stop{#2}
+\def\tikz at lib@place at of@#1#2#3{%
+  \def\pgf at tempa{fit bounding box}%
+  \edef\pgf at temp{\expandafter\pgfutil at firstofmany#2\pgf at stop}
+  \if\pgf at temp(%
+    \tikz at lib@place at fit@scan{#2}{0}%
+  \else\if\pgf at temp|%
+      \expandafter\tikz at lib@place at fit@scan\expandafter{\pgfutil at secondofmany#2\pgf at stop}{1}%
+    \else\ifx\pgf at temp\tikz at activebar
+        \expandafter\tikz at lib@place at fit@scan\expandafter{\pgfutil at secondofmany#2\pgf at stop}{1}%
+      \else\if\pgf at temp-%
+          \expandafter\tikz at lib@place at fit@scan\expandafter{\pgfutil at secondofmany#2\pgf at stop}{2}%
+        \else\if\pgf at temp+%
+            \expandafter\tikz at lib@place at fit@scan\expandafter{\pgfutil at secondofmany#2\pgf at stop}{3}%
+          \else
+            \def\pgf at tempa{#2}%
+          \fi
+        \fi
+      \fi
+    \fi
+  \fi
+  \expandafter\tikz at scan@one at point\expandafter\tikz at lib@place at remember\expandafter(\pgf at tempa)%
+  \iftikz at shapeborder%
+    % Ok, this is relative to a border.
+    \iftikz at lib@ignore at size%
+      \edef\tikz at node@at{\noexpand\pgfpointanchor{\tikz at shapeborder@name}{center}}%
+      \def\tikz at anchor{center}%
+    \else%
+      \edef\tikz at node@at{\noexpand\pgfpointanchor{\tikz at shapeborder@name}{#3}}%
+    \fi%
+  \fi%
+  \edef\tikz at lib@place at nums{#1}%
+}
+\def\tikz at lib@place at fit@scan#1#2{%
+  \pgf at xb=-16000pt\relax%
+  \pgf at xa=16000pt\relax%
+  \pgf at yb=-16000pt\relax%
+  \pgf at ya=16000pt\relax%
+  \if\pgfutil at firstofmany#1\pgf at stop(%
+    \tikz at lib@fit at scan#1\pgf at stop%
+  \else
+    \tikz at lib@fit at scan(#1)\pgf at stop
+  \fi
+  \ifdim\pgf at xa>\pgf at xa
+    % shouldn't happen
+  \else
+     \expandafter\def\csname pgf at sh@ns at fit bounding box\endcsname{rectangle}%
+     \expandafter\edef\csname pgf at sh@np at fit bounding box\endcsname{%
+       \def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at ya}}%
+       \def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
+     }%
+     \expandafter\def\csname pgf at sh@nt at fit bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
+     \expandafter\def\csname pgf at sh@pi at fit bounding box\expandafter\endcsname\expandafter{\pgfpictureid}%
+     \ifcase#2\relax
+     \or % 1 = vertical
+       \pgf at y=\pgf at yb%
+       \advance\pgf at y by-\pgf at ya%
+       \edef\pgf at marshal{\noexpand\pgfset{minimum height={\the\pgf at y-2*(\noexpand\pgfkeysvalueof{/pgf/outer ysep})}}}%
+       \pgf at marshal
+     \or % 2 = horizontal
+       \pgf at x=\pgf at xb%
+       \advance\pgf at x by-\pgf at xa%
+       \edef\pgf at marshal{\noexpand\pgfset{minimum width={\the\pgf at x-2*(\noexpand\pgfkeysvalueof{/pgf/outer xsep})}}}%
+       \pgf at marshal
+     \or % 3 = both directions
+       \pgf at y=\pgf at yb%
+       \advance\pgf at y by-\pgf at ya%
+       \pgf at x=\pgf at xb%
+       \advance\pgf at x by-\pgf at xa%
+       \edef\pgf at marshal{\noexpand\pgfset{minimum height={\the\pgf at y-2*(\noexpand\pgfkeysvalueof{/pgf/outer ysep})},minimum width={\the\pgf at x-2*(\noexpand\pgfkeysvalueof{/pgf/outer xsep})}}}%
+       \pgf at marshal
+     \fi
+  \fi
+}
+\tikzset{
+  fit bounding box/.code={\tikz at lib@place at fit@scan{#1}{0}},
+  span vertical/.code={\tikz at lib@place at fit@scan{#1}{1}},
+  span horizontal/.code={\tikz at lib@place at fit@scan{#1}{2}},
+  span/.code={\tikz at lib@place at fit@scan{#1}{3}}}
+
+\pgfmathdeclarefunction{x_node_dist}{0}{%
+  \begingroup
+    \edef\pgfmath at temp{\noexpand\pgfutil at in@{and}{\tikz at node@distance}}%
+    \pgfmath at temp\ifpgfutil at in@
+      \expandafter\tikz at lib@place at handle@qrr@@\tikz at node@distance\tikz at stop
+    \else
+      \let\pgf at tempb\tikz at node@distance
+    \fi
+    \pgfmathparse{\pgf at tempb}%
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup
+}
+\pgfmathdeclarefunction{y_node_dist}{0}{%
+  \begingroup
+    \edef\pgfmath at temp{\noexpand\pgfutil at in@{and}{\tikz at node@distance}}%
+    \pgfmath at temp\ifpgfutil at in@
+      \expandafter\tikz at lib@place at handle@qrr@@\tikz at node@distance\tikz at stop
+    \else
+      \let\pgf at tempa\tikz at node@distance
+    \fi
+    \pgfmathparse{\pgf at tempa}%
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup
+}
+%\tikzdeclarecoordinatesystem{node distance}{%
+%  \tikz at cs@nd#1\tikz at stop}
+%\def\tikz at cs@nd#1,#2\tikz at stop{%
+%  \def\qrr at xyshift@starred at action##1{\pgftransformshift{##1}}%
+%  \qrr at xyshift@starred{#1}x\pgf at tempb
+%  \qrr at xyshift@starred{#2}y\pgf at tempa}
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.positioning-plus.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.topaths.arcthrough.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.topaths.arcthrough.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.topaths.arcthrough.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,50 @@
+% 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.
+%
+
+\pgfqkeys{/tikz/arc through}{
+  .unknown/.code=\pgfkeyssetevalue{/tikz/arc through/through}{\pgfkeyscurrentname},
+  through/.initial={(0,0)},
+  center suffix/.initial=,
+  clockwise/.code=%
+    \def\tikz at arcthrough@clockwise{%
+      \pgfmathsubtract@{\pgfkeysvalueof{/tikz/end angle}}{360}%
+      \pgfkeyssetevalue{/tikz/end angle}{+\pgfmathresult}},
+  counter clockwise/.code=\let\tikz at arcthrough@clockwise\relax,
+  clockwise/.value forbidden, counter clockwise/.value forbidden, counter clockwise}
+\tikzset{
+  arc through/.code={%
+    \tikzset{every arc through/.try}%
+    \pgfqkeys{/tikz/arc through}{#1}%
+    \pgfkeysgetvalue{/tikz/arc through/through}\tikz at temp
+    \pgfextract at process\pgf at tostart{\tikz at scan@one at point\pgfutil at firstofone(\tikztostart)\relax}%
+    \expandafter\pgfextract at process\expandafter\pgf at tothrough\expandafter
+      {\expandafter\tikz at scan@one at point\expandafter\pgfutil at firstofone\tikz at temp\relax}%
+    \pgfextract at process\pgf at totarget{\tikz at scan@one at point\pgfutil at firstofone(\tikztotarget)\relax}%
+    \pgfextract at process\pgf at topointMidA{\pgfpointlineattime{.5}{\pgf at tostart}{\pgf at tothrough}}%
+    \pgfextract at process\pgf at topointMidB{\pgfpointlineattime{.5}{\pgf at totarget}{\pgf at tothrough}}%
+    \pgfextract at process\pgf at tocenter{%
+      \pgfpointintersectionoflines
+        {\pgf at topointMidA}{\pgfmathrotatepointaround{\pgf at tothrough}{\pgf at topointMidA}{90}}%
+        {\pgf at topointMidB}{\pgfmathrotatepointaround{\pgf at tothrough}{\pgf at topointMidB}{90}}}%
+    \pgfcoordinate{arc through center\pgfkeysvalueof{/tikz/arc through/center suffix}}{\pgf at tocenter}%
+    \pgfpointdiff{\pgf at tocenter}{\pgf at tostart}%
+    \pgfmathveclen@{\pgfmath at tonumber\pgf at x}{\pgfmath at tonumber\pgf at y}%
+    \pgfkeyssetevalue{/tikz/x radius}{+\pgfmathresult pt}%
+    \pgfkeyssetevalue{/tikz/y radius}{+\pgfmathresult pt}%
+    \pgfmathanglebetweenpoints{\pgf at tocenter}{\pgf at totarget}%
+    \pgfkeyssetevalue{/tikz/end angle}{+\pgfmathresult}%
+    \pgfmathanglebetweenpoints{\pgf at tocenter}{\pgf at tostart}%
+    \ifdim\pgfmathresult pt>\pgfkeysvalueof{/tikz/end angle}pt\relax
+      \pgfmathsubtract@{\pgfmathresult}{360}%
+    \fi
+    \pgfkeyssetevalue{/tikz/start angle}{+\pgfmathresult}%
+    \tikz at arcthrough@clockwise
+    \pgfkeyslet{/tikz/delta angle}\pgfutil at empty
+    \def\tikz at to@path{arc[]\tikztonodes}%
+  }%
+}


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.topaths.arcthrough.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.transformations.mirror.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.transformations.mirror.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.transformations.mirror.code.tex	2022-08-22 20:49:17 UTC (rev 64166)
@@ -0,0 +1,70 @@
+% 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.
+%
+\usepgflibrary{ext.transformations.mirror}
+\tikzset{
+  mirror/.code={%
+    \pgfutil at in@{--}{#1}%
+    \ifpgfutil at in@
+      \tikz at trans@mirror#1\@nil
+    \else
+      \tikz at scan@one at point\pgfqtransformmirror#1\relax
+    \fi},
+  ymirror/.code={\pgfutil at ifnextchar(\tikz at trans@ymirror at coordinate\tikz at trans@ymirror at simple#1\@nil},
+  xmirror/.code={\pgfutil at ifnextchar(\tikz at trans@xmirror at coordinate\tikz at trans@xmirror at simple#1\@nil},
+  mirror x/.code={%
+    \pgfextract at process\tikz at temp{\tikz at scan@one at point\pgfutil at firstofone#1\relax}%
+    \pgftransformmirror{\tikz at temp}{\pgfpointadd{\tikz at temp}{\pgfqpointxy{0}{1}}}},
+  mirror y/.code={%
+    \pgfextract at process\tikz at temp{\tikz at scan@one at point\pgfutil at firstofone#1\relax}%
+    \pgftransformmirror{\tikz at temp}{\pgfpointadd{\tikz at temp}{\pgfqpointxy{1}{0}}}},
+  mirror/.value required,
+  ymirror/.value required,
+  xmirror/.value required,
+  mirror x/.value required,
+  mirror y/.value required}
+\def\tikz at trans@mirror#1--#2\@nil{%
+  \pgftransformmirror{\tikz at scan@one at point\pgfutil at firstofone#1\relax}
+                     {\tikz at scan@one at point\pgfutil at firstofone#2\relax}}
+\def\tikz at trans@xmirror at simple#1\@nil{\pgftransformxmirror{#1}}
+\def\tikz at trans@ymirror at simple#1\@nil{\pgftransformymirror{#1}}
+\def\tikz at trans@xmirror at coordinate#1\@nil{%
+  \tikz at scan@one at point\pgfutil at firstofone#1\pgftransformxmirror{+\the\pgf at x}}
+\def\tikz at trans@ymirror at coordinate#1\@nil{%
+  \tikz at scan@one at point\pgfutil at firstofone#1\pgftransformymirror{+\the\pgf at y}}
+
+\tikzset{
+  Mirror/.code={%
+    \pgfutil at in@{--}{#1}%
+    \ifpgfutil at in@
+      \tikz at trans@Mirror#1\@nil
+    \else
+      \tikz at scan@one at point\pgfqtransformMirror#1\relax
+    \fi},
+  yMirror/.code={\pgfutil at ifnextchar(\tikz at trans@yMirror at coordinate\tikz at trans@yMirror at simple#1\@nil},
+  xMirror/.code={\pgfutil at ifnextchar(\tikz at trans@xMirror at coordinate\tikz at trans@xMirror at simple#1\@nil},
+  Mirror x/.code={%
+    \pgfextract at process\tikz at temp{\tikz at scan@one at point\pgfutil at firstofone#1\relax}%
+    \pgftransformMirror{\tikz at temp}{\pgfpointadd{\tikz at temp}{\pgfqpointxy{0}{1}}}},
+  Mirror y/.code={%
+    \pgfextract at process\tikz at temp{\tikz at scan@one at point\pgfutil at firstofone#1\relax}%
+    \pgftransformMirror{\tikz at temp}{\pgfpointadd{\tikz at temp}{\pgfqpointxy{1}{0}}}},
+  Mirror/.value required,
+  yMirror/.value required,
+  xMirror/.value required,
+  Mirror x/.value required,
+  Mirror y/.value required}
+\def\tikz at trans@Mirror#1--#2\@nil{%
+  \pgftransformMirror{\tikz at scan@one at point\pgfutil at firstofone#1\relax}
+                     {\tikz at scan@one at point\pgfutil at firstofone#2\relax}}
+\def\tikz at trans@xMirror at simple#1\@nil{\pgftransformxMirror{#1}}
+\def\tikz at trans@yMirror at simple#1\@nil{\pgftransformyMirror{#1}}
+\def\tikz at trans@xMirror at coordinate#1\@nil{%
+  \tikz at scan@one at point\pgfutil at firstofone#1\pgftransformxMirror{+\the\pgf at x}}
+\def\tikz at trans@yMirror at coordinate#1\@nil{%
+  \tikz at scan@one at point\pgfutil at firstofone#1\pgftransformyMirror{+\the\pgf at y}}
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.transformations.mirror.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2022-08-22 20:45:08 UTC (rev 64165)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2022-08-22 20:49:17 UTC (rev 64166)
@@ -792,7 +792,7 @@
     thuaslogos thubeamer thucoursework thumb thumbpdf thumbs thumby thuthesis
     ticket ticollege
     tikz-3dplot tikz-among-us tikz-bagua tikz-bayesnet tikz-bbox
-    tikz-cd tikz-dependency tikz-dimline
+    tikz-cd tikz-dependency tikz-dimline tikz-ext
     tikz-feynhand tikz-feynman tikz-imagelabels tikz-inet
     tikz-kalender tikz-karnaugh tikz-ladder tikz-lake-fig tikz-layers
     tikz-nef tikz-network tikz-opm tikz-optics

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2022-08-22 20:45:08 UTC (rev 64165)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2022-08-22 20:49:17 UTC (rev 64166)
@@ -1371,6 +1371,7 @@
  'ticket',      "&MAKEflatten",
  'ticollege',   "&MAKEflatten",
  'tikz-among-us',"&MAKEflatten",
+ 'tikz-ext',	" &MAKEflatten",
  'tikz-kalender',"&MAKEflatten",
  'tikz-karnaugh',"&MAKEflatten",
  'tikz-ladder',	"&MAKEflatten",
@@ -2345,7 +2346,7 @@
  'thubeamer',	'thulogo.pdf|' . $standardtex,
  'ticket',      '\.tdf|' . $standardtex,
  'tikz-cd',     'tikz-cd.sty|tikzlibrarycd.code.tex',   # not pgfmanual.sty
- 'tikz-karnaugh',	'\.code\.tex$',
+ 'tikz-ext',	'pgfcalendar-ext\.tex$|' . $standardtex,
  'tikz-qtree',  '(pgf|tikz-)(subpic|q?tree(-compat)?)\.(tex|sty)',
  'tikz-sfc',		'\.code\.tex$',
  'tikz-trackschematic',	'\.code\.tex$|tic\.sty$', # not *documentation.sty

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2022-08-22 20:45:08 UTC (rev 64165)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2022-08-22 20:49:17 UTC (rev 64166)
@@ -168,6 +168,7 @@
 depend tikz-cd
 depend tikz-dependency
 depend tikz-dimline
+depend tikz-ext
 depend tikz-feynhand
 depend tikz-feynman
 depend tikz-imagelabels

Added: trunk/Master/tlpkg/tlpsrc/tikz-ext.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.