texlive[66623] Master/texmf-dist: tikz-ext (16mar23)

commits+karl at tug.org commits+karl at tug.org
Tue Mar 21 17:49:53 CET 2023


Revision: 66623
          http://tug.org/svn/texlive?view=revision&revision=66623
Author:   karl
Date:     2023-03-21 17:49:52 +0100 (Tue, 21 Mar 2023)
Log Message:
-----------
tikz-ext (16mar23)

Modified Paths:
--------------
    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-misc.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-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-shapes-uncentered.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib
    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/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.calendar-plus.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.node-families.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.timer.code.tex

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-layers.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-nodes.tex
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-pgffor.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/pgffor-ext.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.layers.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.shapes.uncenteredrectangle.code.tex
    trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty
    trunk/Master/texmf-dist/tex/plain/tikz-ext/pgffor-ext.tex

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md	2023-03-21 16:49:52 UTC (rev 66623)
@@ -10,21 +10,24 @@
 
 ## Introduction
 
-This is not a LaTeX package but a collection of libraries for PGF and TikZ.
+This is not a LaTeX package but a collection of libraries for PGF and TikZ;
 
-These are
-
- * `ext.calendar-plus`
- * `ext.node-families`
+ * `ext.calendar-plus` extends the `calendar` library with more tests, week numbers and a few goodies.
+ * `ext.layers` allows to put nodes etc on a separate layer without having to use `pgfonlayer`.
+ * `ext.nodes` extends the functionalities around nodes.
+ * `ext.node-families` uses the AUX file to sync the sizes of nodes.
     * `ext.node-families.shapes.geometric`
- * `ext.paths.arcto`
- * `ext.paths.ortho`
- * `ext.paths.timer`
- * `ext.patterns.images`
- * `ext.positioning-plus`
- * `ext.topaths.arcthrough`
- * `ext.transformations.mirror`
- * `ext.misc`
+ * `ext.paths.arcto` uses `\pgfpatharcto` to construct an arc *to* a point.
+ * `ext.paths.ortho` provides orthogonal path operations `-|-`, `|-|`, `r-rl`, `r-lr`, `r-du` and `r-ud`.
+ * `ext.paths.timer` adds timers to `rectangle`, `parabola`, `sin` and `cos`.
+ * `ext.patterns.images` allows images to be used as a path‘s pattern.
+ * `ext.positioning-plus` adds more ways to position nodes in reference to each other.
+ * `ext.scalepicture` scales a TikZ picture to the desired dimensions.
+ * `ext.topaths.arcthrough` installs a `to path` that expects a third point that defines an arc.
+ * `ext.transformations.mirror` adds transformations that reflect on arbitrary lines.
+ * `ext.misc` which includes
+   * the PGFKeys library `ext.pgfkeys-plus` and
+   * the PGFFor extension `pgffor-ext`.
  * Shapes:
    * `ext.shapes.circlearrow`
    * `ext.shapes.circlecrosssplit`
@@ -31,6 +34,6 @@
    * `ext.shapes.heatmark`
    * `ext.shapes.rectangleroundedcorners`
    * `ext.shapes.superellipse`
+   * `ext.shapes.uncenteredrectangle`
 
- 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
+ These were developed in response to questions on tex.stackexchange.com or texwelt.de.
\ No newline at end of file

Modified: 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	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -10,11 +10,11 @@
 
 \section{Calendar: Weeknumbers and more conditionals}
 \label{sec:calendar}
-\begin{package}{calendar-ext}
+\begin{texpackage}{calendar-ext}
   This package adds week numbers and more conditionals to the \pgfname\space package |pgfcalendar|.
-  (Despite the code example above, this package is not set up to work with Con\TeX t.)
+%  (Despite the code example above, this package is not set up to work with Con\TeX t.)
   \inspiration{WeekNum-Q,CalCond-Q,CalFullWeek-Q}{WeekNum-A,CalCond-A,CalFullWeek-A}
-\end{package}
+\end{texpackage}
 
 %This package extends the |pgfcalendar| package.
 
@@ -79,9 +79,9 @@
 
 \subsection{Week numbering (ISO~8601)}
 \label{calendar:weeknumbering}
-\begin{command}{\pgfcalendarjulianyeartoweek\marg{Julian day}\marg{year}\marg{week counter}}
+\begin{command}{\pgfcalendarjulianyeartoweek\marg{Julian day}\marg{year}\marg{week count}}
   This command calculates the week for the \meta{Julian day} of \meta{year}.
-  The \meta{week counter} must be a \TeX\space counter.
+  The \meta{week counter} must be a \TeX\space count.
 
   The calculation follows the rule of ISO~8601 where the first week has that
   year's first Thursday in it.

Modified: 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	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-intro.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -12,8 +12,8 @@
 \section{Usage}
 This package is called |tikz-ext|, however,
 one can't load it via |\usepackage|.%
-\footnote{Except for \texttt{calendar-ext} of section~\ref{sec:calendar}.}
-Instead, this package consists of multiple
+\footnote{Except for \texttt{calendar-ext} and \texttt{pgffor-ext}.}
+Instead, this package consists mostly of
 \pgfname\space and \tikzname\space libraries
 which are loaded by either |\usepgflibrary| or |\usetikzlibrary|.
 
@@ -27,5 +27,10 @@
 the solutions of my answers in this package.
 
 \section{Having problems?}
+Note however, that most of these extensions haven't been
+stress-tested properly and might be considered
+experimental.
+
 Don't hesitate to open an issue on GitHub.
+You probably found a bug.
 \end{multicols}
\ No newline at end of file

Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-layers.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-layers.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-layers.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,68 @@
+% !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{Layers}
+\begin{tikzlibrary}{ext.layers}
+This library extends \tikzname's functionalities to put nodes, edges, matrices and pics
+on a separate layer without having to use the \referenceEnvironmentandIndexO{pgfonlayer} environment.
+
+\textbf{Consider this library experimental.}
+If you can, avoid it and use the |pgfonlayer| environment
+or change the drawing order.
+\end{tikzlibrary}
+
+\begin{multicols}{2}
+\subsection{Internal keys}
+\begin{key}{/tikz-ext/patch=\meta{specification}}
+Since this library is experimental, its functionality needs to be activated explicitly.
+The \meta{specification} is one of
+\begin{itemize}
+\item |node|,
+\item |matrix|,
+\item |pic|%
+  \footnote{Only the normal \referenceKeyandIndexO[/tikz/pics/]{code}
+            can be placed on different layers.
+            Both \referenceKeyandIndexO[/tikz/pics/]{background code}
+            and \referenceKeyandIndexO[/tikz/pics/]{foreground code}
+            will not be affected.},
+\item |edge| or
+\item |all| which applies all the patches at once.
+\end{itemize}
+\end{key}
+
+These keys only work when a patch is applied but don't need to be used
+since the patching activated specific
+\begin{key}{/tikz-ext/layers/in box=\meta{box}}
+\end{key}
+
+\begin{key}{/tikz-ext/layers/on layer=\meta{layer}}
+\end{key}
+
+\subsection{User-level keys}
+\begin{key}{/tikz/node on layer=\meta{layer}}
+\end{key}
+\begin{key}{/tikz/node in box=\meta{box}}
+\end{key}
+
+\begin{key}{/tikz/matrix on layer=\meta{layer}}
+\end{key}
+\begin{key}{/tikz/matrix in box=\meta{box}}
+\end{key}
+
+\begin{key}{/tikz/edge on layer=\meta{layer}}
+\end{key}
+\begin{key}{/tikz/edge in box=\meta{box}}
+\end{key}
+
+\begin{key}{/tikz/pic on layer=\meta{layer}}
+\end{key}
+\begin{key}{/tikz/pic in box=\meta{box}}
+\end{key}
+\end{multicols}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-layers.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: 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	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -11,12 +11,12 @@
 \section{And a little bit more}
 \begin{tikzlibrary}{ext.misc}
   This library adds miscellaneous utilities to \pgfname math, \pgfname\space or \tikzname.
-  \inspiration{FullArc-Q,ForeachUse-Q}{FullArc-A,ForeachUse-A}
+  \inspiration{FullArc-Q}{FullArc-A}
 \end{tikzlibrary}
 
 \subsection{\pgfname math}
 
-\begin{multicols}{2}
+\begin{multicols}{2}\
 \pgfkeys{/codeexample/every codeexample/.append style={width=3cm}}
 \subsubsection{Postfix operator \texttt{R}}
 
@@ -23,7 +23,7 @@
 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 |{}|)}
+\begin{key}{/pgf/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$.
   
@@ -139,18 +139,21 @@
 
 \subsection{\pgfname for}
 
-Instead of |\foreach \var in {start, start + delta, ..., end}| one can use
-|\foreach \var[use int=start to end step delta]|.
+This library loads also most of the functions of the
+\referencePackageandIndex{pgffor-ext} of section~\ref{pkg:pgffor-ext}
+on page~\pageref{pkg:pgffor-ext}.
+%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 \pgfname math 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}
 
-\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 \pgfname math 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
 %\pagebreak
 
@@ -286,4 +289,44 @@
 \end{tikzpicture}
 \end{codeexample}
 
+\pagebreak
+\subsection{\tikzname}
+\begin{multicols}{2}
+\begin{key}{/tikz/reverse clip=\meta{direction} (default counter clockwise)}
+This key installs a very big rectangle which is either constructed
+|counter clockwise| (like the \referencePathOperationandIndexO{circle}
+path operation) or |clockwise|.
+\end{key}
+\begin{key}{/tikz/clip rule=\meta{direction} (default even odd)}
+This key switches directly\footnote{%
+  Meaning, it directly executes
+  \referenceCommandandIndexO{\pgfseteorule}/%
+  \referenceCommandandIndexO{\pgfsetnonzerorule}
+  and doesn't accumulates where \tikzname\space
+  throws an error.}
+to the specified rule which is
+either |even odd| or |nonzero|.
+This corresponds to the \referenceKeyandIndexO{even odd rule} and
+\referenceKeyandIndexO{nonzero rule} keys.
+\end{key}
+\end{multicols}
+\begin{codeexample}[preamble=\usetikzlibrary{ext.misc},width=6cm]
+\newcommand*\myDiagram[1]{
+  \fill[left color=blue, right color=green] (0, 0) rectangle (2, 1);
+  \clip (1, .5) #1 [reverse clip];
+  \fill[left color=green, right color=blue] (0, 0) rectangle (2, 1);
+}
+\begin{tikzpicture}[radius=.4, row sep=5mm, column sep=5mm]
+\matrix[
+  row 2/.append style={clip rule=even odd},
+  column 1/.append style={reverse clip/.default=clockwise}
+]{
+  \myDiagram{circle[]} &
+  \myDiagram{+(0:.4) arc[start angle=0, delta angle=-360] -- cycle}
+\\
+  \myDiagram{circle[]} &
+  \myDiagram{+(0:.4) arc[start angle=0, delta angle=-360] -- cycle}
+\\};
+\end{tikzpicture}
+\end{codeexample}
 \endinput
\ No newline at end of file

Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-nodes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-nodes.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-nodes.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,126 @@
+% !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{Nodes}
+\begin{tikzlibrary}{ext.nodes}
+This library extends \tikzname's functionalities when it comes to nodes.
+\inspiration{NodesOnLine-Q, NodesOnCurve-Q}{NodesOnLine-A, NodesOnCurve-A}
+\end{tikzlibrary}
+
+\begin{multicols}{2}
+
+\subsection{Pic as a node}
+\begin{key}{/tikz/pic=\opt{\meta{boolean}} (default true, initially false)}
+This key allows one to use a pic where usually only nodes are accepted,
+for example as a label.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.nodes, ext.misc}]
+\begin{tikzpicture}[
+  slsl/.pic={\draw (-2pt, 1.5pt) -- (2pt, .5pt)
+                   (2pt, -1.5pt) -- (-2pt, -.5pt);}]
+\node[draw, minimum width=3cm, minimum height=1cm,
+     label={[pic           ]  east:slsl},
+     label={[pic, rotate=90] north:slsl},
+     label={[pic            ] west:slsl},
+     label={[pic, rotate=-90]south:slsl}]{};
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\subsection{Nodes on paths}
+When nodes are placed along paths they don't interrupt
+the path at that place.
+The decoration \referenceLibraryandIndexO{markings}
+and its \referenceKeyandIndexO[/pgf/decoration/]{mark connection node}
+key can help but only works for straight paths and
+doesn't play nicely with arrow tips.
+
+This library provides alternatives.
+These are separated into straight paths, i.\,e. \referencePathOperationandIndexO{--},
+and everything else (including any |to path|).
+
+\subsubsection{Nodes on Lines}
+
+\begin{stylekey}{/tikz/node on line=\opt{\meta{anchor specification}} (default |\{\}|)}
+This installs a \referenceKeyandIndexO{to path} that places \emph{one}
+node along a straight line but connect the line with it.
+
+This allows a node to be placed \emph{on} a straight line without having to
+use |fill = white| or similar tricks to make the line disappear 
+beneath the node.
+
+The optional \meta{anchor specification} allows to specify the
+anchors to which the line should connect.
+It allows one or two anchors divided by | and | to be specified.
+\end{stylekey}
+
+\begin{stylekey}{/tikz/nodes on line}
+This is similar to the previous key but allows
+multiple nodes to be placed on a straight line
+\emph{if} they are in the correct order (from start to target),
+don't overlap with each other, the start or the target.
+
+It allows \emph{no} anchor specification.
+\end{stylekey}
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.nodes, quotes}]
+\tikz[inner sep=.15em, circle, nodes=draw, sloped]
+  \draw[ultra thick, ->, node on line] (0,0) to["0"] (1,1)
+                                             to["1"] (2,0)
+    to[nodes on line, "2.1" near start, "2.2", "2.3" near end] (5,1);
+\end{codeexample}
+\begin{codeexample}[preamble=\usetikzlibrary{ext.nodes, quotes}]
+\tikz[inner sep=.15em, nodes=draw]
+  \draw[thick, ->, node on line=west and east]
+     (0,0) to["0"] (1,1)
+           to["1"] (2,0)
+           to["2"] (4,1);
+\end{codeexample}
+
+\subsubsection{Nodes on Curves}
+The following keys need the \referenceLibraryandIndexO{intersections}
+and the \referenceLibraryandIndexExt{spath3} \cite{spath3}
+library to be loaded. They will not be automatically
+loaded by this library.
+
+Any \referenceKeyandIndexO[/pgf/]{outer sep} will be ignored.
+
+If you can, use \texttt{fill=\meta{bg color}}
+instead of these keys, it will be much faster and easier.
+
+\begin{stylekey}{/tikz/nodes on curve=\meta{to path} (default line to)}
+Similar to \referenceKeyandIndex{nodes on line}, this key allows
+to have nodes on arbitrary paths.
+
+This is not suitable for paths connecting nodes.
+\end{stylekey}
+
+\begin{stylekey}{/tikz/nodes on curve'=\meta{to path} (default line to)}
+As above but suitable for connecting nodes.
+\end{stylekey}
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.nodes, intersections, quotes, spath3}]
+\begin{tikzpicture}[ultra thick]
+  \node (A) at (0, 0) {A} ;
+  \node (B) at (3, 0) {B} ;
+  \draw [red, ->, nodes on curve'=bend left]
+    (A) to node[blue,draw]{label} (B)
+        to ["X" {sloped, near start},
+            "Z" {sloped, near end},
+            "Y"] (A);
+\end{tikzpicture}
+\end{codeexample}
+\begin{codeexample}[preamble=\usetikzlibrary{ext.nodes, intersections, quotes, spath3}]
+\tikz[inner sep=.15em, circle, nodes={draw, green}, sloped, ultra thick]
+  \draw[->, nodes on curve=bend left] (0,0) to["0"] (1,1)
+                                            to["1"] (2,0)
+              to["2" near start, "3", "4" near end] (4,1)
+                                            -- ++(down:1);
+\end{codeexample}
+\end{multicols}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-nodes.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: 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	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -31,6 +31,10 @@
 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{key}{/tikz/rectangle timer=|line| or |rectangle| (default |rectangle|)}
+By default, the library activates the new (correct) timer for |rectangle|.
+With |rectangle timer = line| the original line timer can be reinstated.
+\end{key}
 \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);

Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-pgffor.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-pgffor.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-pgffor.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,93 @@
+% !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{Repeating Things and Other Things}
+\label{pkg:pgffor-ext}
+\begin{texpackage}{pgffor-ext}
+  This package adds small niceties to the \referencePackageandIndexO{pgffor} package.
+  Most of these additions are also available
+  with the \referenceLibraryandIndex{ext.misc} library.
+
+  \textbf{Warning:} Consider this package experimental.
+  At the very least, it will break the |...| notation and possibly gobbles spaces after the body.
+  
+  \inspiration{ForeachUse-Q, ForeachNoSep-Q, ForeachXparse-Q}{ForeachUse-A, ForeachNoSep-A, ForeachXparse-A}
+\end{texpackage}
+
+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 \pgfname math 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}
+
+\begin{key}{/pgf/foreach/no separator}
+This key disables any separator between elements of the list.
+Every token is its own element. This also means that Unicode characters
+need to be grouped between |{| and |}| if Lua\TeX\space isn't used.
+Spaces will be ignored.
+
+\begin{codeexample}[preamble=\usetikzlibrary{ext.misc}]
+\newcommand*{\board}[3][]{%
+  \begin{tikzpicture}[#1]
+    \foreach[
+      count=\i from 0,
+      no separator,
+      evaluate=\i as \colX using {mod(\i,#2)},
+      evaluate=\i as \rowY using {int(\i/#2)}
+    ] \elem in {#3} {
+        \draw[black, board/\elem/.try, rectangle timer/.try=line]
+          (\colX,\rowY) rectangle node {\elem} ++(1, 1);}
+  \end{tikzpicture}}
+\board[
+  board/W/.style={fill=red},
+  board/X/.style={fill=blue!50},
+  board/B/.style={fill=green},
+  board/-/.style={fill=gray},
+]{3}{WXX---BXX}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/pgf/foreach/normal list}
+This key simply disables all other special parsers and returns to the original list parser.
+\end{key}
+
+The following keys only work with \LaTeX\ and cannot be used when only the \referenceLibraryandIndex{ext.misc}
+library or the plain\TeX\space |pgffor-ext.tex| are loaded.
+For this, you will need to use |\usepackage{pgffor-ext}|.
+\begin{key}{/pgf/foreach/xparser=\marg{argument specification}\marg{foreach value}}
+This key can be used to specify a \referencePackageandIndeXExt{xparse}
+specification for each element in the list.
+
+For this to work somewhat seamless, the following needs to observed:
+\begin{itemize}
+  \item Every \marg{argument specification} get appended |u,|.
+        This means there's always one additional mandatory argument at the end of every element.
+  \item The \marg{foreach value} needs to correspond to the
+        \referenceKeyandIndexO[/pgf/foreach/]{var}
+        value.
+\end{itemize}
+\end{key}
+
+\begin{key}{/pgf/foreach/xparser Om}
+Sets up a list whose elements may contain an optional argment inside |[]| which correspond to
+two |\foreach| variables, say |\Options/\Text|.
+\end{key}
+
+\begin{handler}{{.list xparse}|=|\marg{argument specification}\marg{comma-separated list of values}}
+  This handler causes the key to be used repeatedly, namely
+  once for every element of the list of values.
+  The \meta{comma-separated list of values} is processed using |\foreach|
+  and the given |xparse| \meta{argument specification} with the aforementioned |xparser| key.
+\end{handler}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-pgffor.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: 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	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -8,7 +8,11 @@
 % 2. under the GNU Free Documentation License.
 %
 \newcommand*\tikzextname{Ti\textit kZ-Extensions}
-\newcommand*\tikzextversion{0.4.2}
+\newcommand*\tikzextversion{0.5}
+%\includeonly{
+%  tikz-ext-manual-en-library-misc,
+%  tikz-ext-manual-en-library-nodes,
+%}
 \begin{document}
 {\colorlet{blue}{black}% links shall be black
 \title{\bfseries The \tikzextname\space Package\\
@@ -64,7 +68,9 @@
 \end{center}
 
 \tikzsetfigurename{calendar-plus}   \include{tikz-ext-manual-en-library-calendar-plus}
+\tikzsetfigurename{layers}          \include{tikz-ext-manual-en-library-layers}
 \tikzsetfigurename{node-families}   \include{tikz-ext-manual-en-library-node-families}
+\tikzsetfigurename{nodes}           \include{tikz-ext-manual-en-library-nodes}
 \tikzsetfigurename{paths.arcto}     \include{tikz-ext-manual-en-library-paths.arcto}
 \tikzsetfigurename{paths.ortho}     \include{tikz-ext-manual-en-library-paths.ortho}
 \tikzsetfigurename{paths.timer}     \include{tikz-ext-manual-en-library-paths.timer}
@@ -161,9 +167,11 @@
 \vfill
 
 \tikzsetfigurename{misc.calendar}\include{tikz-ext-manual-en-calendar}
+\tikzsetfigurename{misc.pgffor}\include{tikz-ext-manual-en-library-pgffor}
 \tikzsetfigurename{misc.misc}\include{tikz-ext-manual-en-library-misc}
 
 %%% END
+\newcommand*{\addPackage}[1]{Added package \texttt{#1-ext}.}
 \newcommand*{\addTikz}[1]{Added \tikzname\space library \texttt{ext.#1}.}
 \newcommand*{\addPGF}[1]{Added \pgfname\space library \texttt{ext.#1}.}
 \newcommand*{\addPGFkeys}[1]{Added \pgfname keys library \texttt{ext.#1}.}
@@ -172,6 +180,14 @@
 \section*{Changelog}\addcontentsline{toc}{section}{Changelog}
 \begin{multicols}{2}\raggedright
 \noindent
+Version 0.5
+\begin{itemize}
+\item \addPackage{pgffor}
+\item \addTikz{nodes}
+\item \addTikz{layers}
+\item Bugfixes to |ext.calendar-plus|.
+\item Allow the original |rectangle| timer with |ext.paths.timer|.
+\end{itemize}
 Version 0.4.2
 \begin{itemize}
 \item \addTikz{scalepicture}

Modified: 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	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -1,4 +1,4 @@
-% !TeX spellcheck = en_US
+% !TeX spellcheck = <none>
 % !TeX root = tikz-ext-manual.tex
 % Copyright 2022 by Qrrbrbirlbel
 %
@@ -110,6 +110,7 @@
   ext.misc,
   ext.node-families,
   ext.node-families.shapes.geometric,
+  ext.nodes,
   ext.paths.arcto,
   ext.paths.ortho,
   ext.paths.timer,
@@ -128,12 +129,14 @@
   calc,
   cd,
   fit,
+  intersections,
   matrix,
   shapes.geometric,
+  spath3,
   through,
   trees,
 }
-
+\usepackage{pgffor-ext}
 %% needs Lua!
 \usetikzlibrary{graphs,graphdrawing}
 \usegdlibrary{force}
@@ -306,6 +309,15 @@
   \index{Path operations!#1@\protect\texttt{#1}}%
 }
 
+\newcommand*{\indexPackage}[1]{%
+  \index{#1@\protect\texttt{#1} package}%
+  \index{Packages and files!#1@\protect\texttt{#1}}%
+}
+\newcommand*{\indexPackageO}[1]{%
+  \index{#1@\originalprefix\protect\texttt{\original{#1}} package\originalsuffix}%
+  \index{Packages and files!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
+}
+
 %% references to original
 \newcommand*{\indexLibraryO}[1]{%
   \index{#1@\originalprefix\protect\texttt{\original{#1}} library\originalsuffix}%
@@ -374,26 +386,67 @@
   \index{Path operations!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
 }
 
+\newcommand*{\indexCommand}[1]{%
+  \removeats{#1}%
+  \index{\strippedat @\protect\texttt{\protect\string\protect#1}}%
+}
 \newcommand*{\indexCommandO}[1]{%
   \removeats{#1}%
   \index{\strippedat @\originalprefix\protect\texttt{\original{\protect\string\protect#1}}\originalsuffix}%
 }
 
+\newcommand*{\indexDecorationO}[1]{%
+  \index{#1@\originalprefix\protect\texttt{\original{#1}} decoration\originalsuffix}%
+  \index{Decorations!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
+}
+
+\newcommand*{\indexEnvironment}[1]{%
+  \index{#1@\protect\texttt{#1} environment}%
+  \index{Environments!#1@\protect\texttt{#1}}%
+}
+\newcommand*{\indexEnvironmentO}[1]{%
+  \index{#1@\originalprefix\protect\texttt{\original{#1}} environment\originalsuffix}%
+  \index{Environments!#1@\originalprefix\protect\texttt{\original{#1}}\originalsuffix}%
+}
+\newcommand*{\referenceEnvironmentandIndexO}[1]{\texttt{#1}\indexEnvironmentO{#1}}
+\newcommand*{\referenceDecorationandIndexO}[1]{\texttt{#1}\indexDecorationO{#1}}
 \newcommand*{\referenceKeyandIndexO}[2][/tikz/]{\texttt{#1#2}\indexKeyO[#1]{#2}}
 \newcommand*{\referenceKeyandIndex}[2][/tikz/]{\texttt{#1#2}\indexKey[#1]{#2}}
 \newcommand*{\referenceShapeandIndex}[1]{\texttt{#1}\indexShape{#1}}
 \newcommand*{\referenceShapeandIndexO}[1]{\texttt{#1}\indexShapeO{#1}}
 \newcommand*{\referenceLibraryandIndexO}[1]{\texttt{#1}\indexLibraryO{#1}}
-
+\newcommand*{\referenceLibraryandIndexExt}[1]{\texttt{#1}\indexLibraryExt{#1}}
+\newcommand*{\referenceLibraryandIndex}[1]{\texttt{#1}\indexLibrary{#1}}
+\newcommand*{\referencePackageandIndex}[1]{\texttt{#1}\indexPackage{#1}}
+\newcommand*{\referencePackageandIndexO}[1]{\texttt{#1}\indexPackageO{#1}}
+\newcommand*{\referencePackageandIndeXExt}[1]{\texttt{#1}\indexPackageExt{#1}}
+\newcommand*{\referencePathOperationandIndex}[1]{\texttt{#1}\indexPathOperation{#1}}
+\newcommand*{\referencePathOperationandIndexO}[1]{\texttt{#1}\indexPathOperationO{#1}}
+\newcommand*{\referenceCommandandIndex}[1]{\texttt{\string#1}\indexCommand{#1}}
+\newcommand*{\referenceCommandandIndexO}[1]{\texttt{\string#1}\indexCommandO{#1}}
 \colorlet{originalindex}{gray}
-\newcommand*{\original}[1]{\textcolor{originalindex}{#1}}
+\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*{\indexPackageExt}[1]{%
+  \begingroup
+%    \originalExternals
+    \index{#1@\originalExternals{\originalprefix\protect\texttt{\original{#1}} package\originalsuffix}}%
+    \index{Packages and files!#1@\originalExternals{\originalprefix\protect\texttt{\original{#1}}\originalsuffix}}%
+  \endgroup
+}
+\newcommand*{\indexLibraryExt}[1]{%
+  \index{#1@\originalExternals{\originalprefix\protect\texttt{\original{#1}} library\originalsuffix}}%
+  \index{Libraries!#1@\originalExternals{\originalprefix\protect\texttt{\original{#1}}\originalsuffix}}%
+}
+\DeclareRobustCommand*{\originalExternals}[1]{%
+  \begingroup
+    \colorlet{originalindex}{blue!50!gray}%
+%    \renewcommand*{\original}[1]{\textcolor{originalindex}{##1}}%
+    #1%
+  \endgroup
+}
 
 \newcommand*{\filetype}[1]{\textsc{#1}}
 
@@ -400,7 +453,8 @@
 \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 \pgfname/\tikzname.
+  original functionalities of \pgfname/\tikzname\space
+  and \originalExternals{\originalprefix\original{references}\originalsuffix} to functionalities outside of \pgfname/\tikzname.
   \bigskip
 }
 \makeatother
@@ -417,4 +471,33 @@
 \newcommand*{\inspiration}[2]{%
   \par\textbf{Q\,\&\,A:} \cite{#1} \& \cite{#2}\par
 }
-\newcommand*\inspirationQ[1]{\par\textbf{Q:} \cite{#1}}
\ No newline at end of file
+\newcommand*\inspirationQ[1]{\par\textbf{Q:} \cite{#1}}
+
+\newenvironment{texpackage}[1]{% no context
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{%
+      \pgfmanualpdflabel{#1}{}%
+      {\ttfamily\char`\\usepackage\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX}}
+    \index{#1@\protect\texttt{#1} package}%
+    \index{Packages and files!#1@\protect\texttt{#1}}%
+    \pgfmanualentryheadline{{\ttfamily\char`\\input \declare{#1}.tex\space\space\space \char`\%\space\space  plain \TeX}}
+%    \pgfmanualentryheadline{{\ttfamily\char`\\usemodule[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+\newenvironment{latexpackage}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{%
+      \pgfmanualpdflabel{#1}{}%
+      {\ttfamily\char`\\usepackage\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX}}
+    \index{#1@\protect\texttt{#1} package}%
+    \index{Packages and files!#1@\protect\texttt{#1}}%
+%    \pgfmanualentryheadline{{\ttfamily\char`\\input \declare{#1}.tex\space\space\space \char`\%\space\space  plain \TeX}}
+%    \pgfmanualentryheadline{{\ttfamily\char`\\usemodule[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-shapes-uncentered.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-shapes-uncentered.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-shapes-uncentered.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -9,10 +9,10 @@
 %
 
 \section{Shape: Uncentered Rectangle}
-\begin{pgflibrary}{ext.shapes.uncenteredrectangle}
+\begin{purepgflibrary}{ext.shapes.uncenteredrectangle}
   A rectangle that has a variable horizontal center with three node parts.
   \inspiration{UncRectCD-Q,UncRectForest-Q}{UncRectCD-A,UncRectForest-A}
-\end{pgflibrary}
+\end{purepgflibrary}
 \begin{shape}{uncentered rectangle}
 
 For some alignment problems, this shape could be useful.
@@ -31,54 +31,21 @@
   In the picture below, this are marked red.
 \end{key}
 
+\begin{key}{/pgf/uncentered rectangle use saved center=\meta{true}\textrm{ or }\meta{false} (default true)}
+When this is set to true, the border anchors will use the horizontal center that was used when
+the node was created.
+\end{key}
+
 For support of the \referenceLibraryandIndexO{cd} library of the |tikz-cd| package,
 this shape also supports a dynamic $y$ value for its anchors |center|, |west| and |east|.
 \begin{key}{/pgf/uncentered rectangle center yshift=\meta{dimension} (initially \{\})}
   This determines the distance between the baseline and the |center| anchors.
   
-  If \meta{dimension} is empty, the real center will be used which is the default.
+  If \meta{dimension} is empty, the real vertical center will be used.
   
   For use with |cd|, set this to |axis_height|.
-  Due to a bug with \referenceKeyandIndexO{execute at end node}
-  this needs a lot of fixing to be able to use in a commutative diagram, though.
-
-\tikzexternaldisable
-\catcode`\|=12
-\begin{codeexample}[leave comments, preamble=\usetikzlibrary{cd, ext.shapes.uncenteredrectangle}]
-\makeatletter
-\tikzcdset{
-  every diagram/.append style={
-    /pgf/uncentered rectangle center=text,
-    /tikz/math align/.style={
-      shape=uncentered rectangle,
-      /pgf/uncentered rectangle center yshift=axis_height,
-      commutative diagrams/math mode=false},
-    /tikz/math align left/.style={
-      math align,
-      /utils/exec={\def\mathalign####1=####2;{$####2$\nodepart{left}$####1={}$}}},
-    /tikz/math align right/.style={
-      math align,
-      /utils/exec={\def\mathalign####1=####2;{$####1$\nodepart{right}${}=####2$}}},
-    /tikz/matrix of math nodes/.style={
-      matrix of nodes,
-      nodes={
-        execute at begin node=\iftikzcd at mathmode$\fi,
-        execute at end node  =\iftikzcd at mathmode$\fi}}}}
-\makeatother
-\tikzcdset{install C shortcut/.code=\newcommand*\C[1]{C_{\%_{##1}}}}
-\begin{tikzcd}[
-  install C shortcut,
-  sep=tiny,
-  arrows={-, gray},
-  cells={font=\strut, inner xsep=.2ex, inner ysep=.1ex}
-]
-\C{1} \drar &         & |[math align right]| \mathalign m_{r_1} = \C{2}-C_\%; \dlar\\
-            & C_\% \\
-\C{2} \urar &         & |[math align right]| \mathalign m_{r_2} = \C{1}-C_\%; \ular
-\end{tikzcd}
-\end{codeexample}
 \end{key}
-\pagebreak
+%\pagebreak
 \begin{codeexample}[preamble=\usepgflibrary{ext.shapes.uncenteredrectangle}]
 \begin{tikzpicture}[style north/.style=red, style south/.style=red, style center/.style=red, style base/.style=red, style mid/.style=red]
 \Huge
@@ -96,4 +63,69 @@
 \end{tikzpicture}
 \end{codeexample}
 \end{shape}
+
+\begin{tikzlibrary}{ext.shapes.uncenteredrectangle}
+This library extends the \referenceLibraryandIndexO{cd} library (from the |tikz-cd| package)
+so that it can be used with the |uncentered rectangle| shape.
+
+\inspirationQ{UncRectCD2-Q}
+\end{tikzlibrary}
+
+This library provides only one key.
+\begin{stylekey}{/tikz-ext/tikz-cd fix}
+This key installs various \enquote{fixes} to the \referenceKeyandIndexO[/tikz/commutative diagrams/]{every diagram} style:
+
+\begin{itemize}
+\item Firstly, is defines a \referenceKeyandIndexO{matrix of math nodes} key (only for the \referenceEnvironmentandIndexO{tikzcd} environment)
+      which allows to toggle the \referenceKeyandIndexO[/tikz/commutative diagrams/]{math mode} for each node.%
+      \footnote{Due to a bug with \referenceKeyandIndexO{execute at end node}, the \enquote{automatic} math mode in matrices can't be used
+        with multipart nodes.}
+\item The helpful macro |\uncrec| will be installed.
+\begin{command}{\uncrec\marg{left}\marg{center}\marg{right}}
+  When used as the content of |uncentered rectangle|,
+  the node parts will be setup so that \meta{left} is in the left part of the node part etc.
+\end{command}
+\item Since math mode will be disabled with the |uncentered rectangle|, it is automatically enabled for each node part with |\uncrec| but it can be disabled with the following key.
+\begin{key}{/tikz/uncrec math mode=\meta{true}\textrm{ or }\meta{false} (default true)}
+When enabled the contents of |\uncrec| will be set in math mode.
+\end{key}
+\item For easy access to the |uncentered rectangle| shape, the following keys are available inside a Commutative Diagram.
+\begin{stylekey}{/tikz/uncrec=\meta{left}\textrm{ or }\meta{text}\textrm{ or }\meta{right}\textrm{ or }\meta{real} (initially text)}
+This key sets the shape to |uncentered rectangle| and \referenceKeyandIndex[/pgf/]{uncentered rectangle center} to its argument.
+\end{stylekey}
+\begin{stylekey}{/tikz/commutative diagrams/install uncentered rectangle in columns=\meta{column}}
+All nodes in column \meta{column} will be set to the |uncentered rectangle| shape.
+\end{stylekey}
+\end{itemize}
+\end{stylekey}
+
+\begingroup
+\tikzexternaldisable
+%\catcode`\|=12
+\begin{codeexample}[leave comments, width=8cm, preamble=\usetikzlibrary{cd, ext.shapes.uncenteredrectangle}]
+\tikzcdset{/tikz-ext/tikz-cd fix}
+\newcommand*\C[1]{C_{\%_{#1}}}
+\begin{tikzcd}[
+  sep=tiny,
+  arrows={-, gray},
+  cells={font=\strut, inner xsep=.2ex, inner ysep=.1ex},
+  install uncentered rectangle in column=3
+]
+\C{1} \drar &         & \uncrec{}{m_{r_1}}{{} = \C{2}-C_\%} \dlar\\
+            & C_\% \\
+\C{2} \urar &         & \uncrec{}{m_{r_2}}{{} = \C{1}-C_\%} \ular
+\end{tikzcd}
+\end{codeexample}
+\begin{codeexample}[leave comments, width=8cm, preamble=\usetikzlibrary{cd, ext.shapes.uncenteredrectangle}]
+\tikzset{/tikz-ext/tikz-cd fix}
+\begin{tikzcd}[install uncentered rectangle in column/.list={1,2}]
+  \uncrec{S \supset {}}{U_\tau}{}                                      \arrow[r, "\varphi_0"]
+                                                                       \arrow[d, "\tau", "\sim"']
+& \uncrec{}{U_\pi}{{} \subset T}                                       \arrow[d, "\pi",  "\sim"']
+\\
+  \uncrec{\operatorname{Bl}_{(0,0)}(\mathbb{A}^2) \supset{}}{V_\tau}{} \arrow[r, "\epsilon"]
+& \uncrec{}{V_\pi}{{} \subset \mathbb{A}^2}
+\end{tikzcd}
+\end{codeexample}
+\endgroup
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib	2023-03-21 16:49:52 UTC (rev 66623)
@@ -378,4 +378,120 @@
   year       = {2022},
 }
 
+'
+ at Online{ForeachNoSep-Q,
+  author     = {daan},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/666263/string-conditional-tikz/666265#666265:text/html},
+  month      = nov,
+  title      = {String conditional tikz},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/q/666263/16595},
+  urldate    = {2022-12-03},
+  year       = {2022},
+}
+
+ at Online{ForeachNoSep-A,
+  author     = {Qrrbrbirlbel},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/666263/string-conditional-tikz/666265#666265:text/html},
+  month      = nov,
+  title      = {Answer to \enquote{String conditional tikz}},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/a/666265/16595},
+  urldate    = {2022-12-03},
+  year       = {2022},
+}
+
+'
+ at Online{ForeachXparse-Q,
+  author     = {uulinux},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/618047/is-there-a-package-to-implement-this-style-of-register-diagrams-with-field-desc/667155#667155:text/html},
+  month      = oct,
+  title      = {Is there a package to implement this style of "Register diagrams with field descriptions"},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/q/618047/16595},
+  urldate    = {2022-12-03},
+  year       = {2021},
+}
+
+ at Online{ForeachXparse-A,
+  author     = {Qrrbrbirlbel},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/618047/is-there-a-package-to-implement-this-style-of-register-diagrams-with-field-desc/667155#667155:text/html},
+  month      = dec,
+  title      = {Answer to \enquote{Is there a package to implement this style of "Register diagrams with field descriptions"}},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/a/667155/16595},
+  urldate    = {2022-12-03},
+  year       = {2022},
+}
+
+'
+ at Software{spath3,
+  abstract = {{TikZ}/{PGF} package for manipulating soft paths, includes the knots and calligraphy {TikZ} libraries.},
+  author   = {Stacey, Andrew},
+  month    = dec,
+  note     = {original-date: 2014-05-26T12:08:12Z},
+  title    = {spath3 {TikZ} library},
+  url      = {https://github.com/loopspace/spath3},
+  urldate  = {2022-12-10},
+  year     = {2022},
+}
+
+'
+ at Online{NodesOnLine-Q,
+  author     = {Dimitris},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/667338/draw-two-concentric-circles-and-a-shaded-area-with-associated-text/667341#667341:text/html},
+  month      = dec,
+  title      = {Draw two concentric circles and a shaded area with associated text},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/q/667338/16595},
+  urldate    = {2022-12-12},
+  year       = {2022},
+}
+
+ at Online{NodesOnLine-A,
+  author     = {Qrrbrbirlbel},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/667338/draw-two-concentric-circles-and-a-shaded-area-with-associated-text/667341#667341:text/html},
+  month      = dec,
+  title      = {Answer to \enquote{Draw two concentric circles and a shaded area with associated text}},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/a/667341/16595},
+  urldate    = {2022-12-12},
+  year       = {2022},
+}
+
+'
+ at Online{NodesOnCurve-Q,
+  author     = {Liblit, Ben},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/99945/path-with-both-mark-connection-node-and-arrow-tip/667487#667487:text/html},
+  month      = feb,
+  title      = {path with both mark connection node and arrow tip},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/q/99945/16595},
+  urldate    = {2022-12-12},
+  year       = {2013},
+}
+
+ at Online{NodesOnCurve-A,
+  author     = {Qrrbrbirlbel},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/99945/path-with-both-mark-connection-node-and-arrow-tip/667487#667487:text/html},
+  month      = dec,
+  title      = {Answer to \enquote{path with both mark connection node and arrow tip}},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/a/667487/16595},
+  urldate    = {2022-12-12},
+  year       = {2022},
+}
+
+'
+ at Online{UncRectCD2-Q,
+  author     = {sro5h},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/652540/achieve-desired-alignment-of-arrows-in-tikz-cd-diagram:text/html},
+  month      = jul,
+  title      = {Achieve desired alignment of arrows in tikz-cd diagram},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/q/652540/16595},
+  urldate    = {2023-02-19},
+  year       = {2022},
+}
+
 @Comment{jabref-meta: databaseType:bibtex;}

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -11,8 +11,12 @@
 %
 
 \documentclass[a4paper,doc2,landscape]{ltxdoc}
+
 \input{tikz-ext-manual-en-main-preamble.tex}
 \usetikzlibrary{external}
+%\newif\iftikzextmanualexternalize
+%\tikzextmanualexternalizetrue
+%\iftikzextmanualexternalize
   \tikzexternalize[
     prefix=tikz/,
 %    mode=convert with system call,
@@ -19,10 +23,10 @@
     %mode=list and make,
     %mode=list only,export=true,% simply skips EVERY picture -> good for debugging the text.
   ]
-%  \tikzexternalenable
-  \tikzexternaldisable
-  \tikzifexternalizing{
-    \pgfkeys{/pdflinks/codeexample links=false}
-  }{}
+  \tikzexternalenable
+  \tikzifexternalizing{%
+    \pgfkeys{/pdflinks/codeexample links=false}%
+  }{}%
+%\fi
 
 \input{tikz-ext-manual-en-main-body.tex}

Added: trunk/Master/texmf-dist/tex/generic/tikz-ext/pgffor-ext.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/pgffor-ext.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/pgffor-ext.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,73 @@
+% 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.
+%
+
+%% 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\iftikzext at pgf@foreach at no@list
+\pgfqkeys{/pgf/foreach}{
+  normal list/.code={%
+    \tikzext at pgf@foreach at no@listfalse
+    \def\pgffor at scan{\pgfutil at ifnextchar({\pgffor at scanround}{\pgffor at scanone}}%
+  },
+  no separator/.code={% token for token
+    \def\pgffor at scan@custom##1{%
+      \def\pgffor at value{##1}%
+      \pgffor at scanned
+    }%
+    \def\pgffor at scan@custom at comma,{%
+      \pgfutil at ifnextchar\pgffor at stop
+        \pgffor at scanone
+        {\pgffor at scan@custom,}%
+    }%
+    \def\pgffor at scan{%
+      \pgfutil at ifnextchar,%
+        \pgffor at scan@custom at comma
+        {%
+          \pgfutil at ifnextchar\pgffor at stop
+            \pgffor at scanone
+            \pgffor at scan@custom
+        }%
+    }%
+  },
+  use int/.code={%
+    \tikzext at pgf@foreach at no@list at parse@to\pgfmathtruncatemacro#1\pgffor at stop
+  },
+  use float/.code={%
+    \tikzext at pgf@foreach at no@list at parse@to\pgfmathsetmacro#1\pgffor at stop
+  }
+}
+
+\def\tikzext at pgf@foreach at no@list at parse@to#1#2to#3\pgffor at stop{%
+  \tikzext at pgf@foreach at no@listtrue
+  #1\foreachStart{#2}%
+  \pgfutil at in@{step}{#3}
+  \ifpgfutil at in@
+    \tikzext at pgf@foreach at no@list at parse@step{#1}#3\pgffor at stop
+  \else
+    \tikzext at pgf@foreach at no@list at parse@step{#1}#3step1\pgffor at stop
+  \fi
+  \edef\tikzext at pgf@foreach at no@list at list{\foreachStart,\foreachSecond,...,\foreachEnd}%
+}
+\def\tikzext 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{%
+  \pgfutil at ifnextchar i{\pgffor@@vars at end}{%
+    \pgfutil at ifnextchar[{\pgffor@@vars at opt}{%]
+      \pgfutil at ifnextchar/{\pgffor@@vars at slash@gobble}{%
+         \iftikzext at pgf@foreach at no@list\expandafter\pgfutil at firstoftwo\else
+           \expandafter\pgfutil at secondoftwo\fi
+         {\tikzext at pgf@foreach at no@listfalse\pgffor at macro@list\tikzext at pgf@foreach at no@list at list}
+         {\pgffor@@vars}}}}}%
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/generic/tikz-ext/pgffor-ext.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -88,13 +88,22 @@
   },
   %% 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)
+  %% key=(point-1)(point-2)(point-3)(point-4)(point-5)(point-6)
   .List/.code=%
     \let\pgfkeys at global@temp\pgfutil at empty
     \foreach\pgfkeys at temp in{#1}{%
         \expandafter\pgfutil at g@addto at macro\expandafter\pgfkeys at global@temp\expandafter{\pgfkeys at temp}%
     }%
-    \expandafter\pgfkeys at exp@call\expandafter{\pgfkeys at global@temp}%
+    \expandafter\pgfkeys at exp@call\expandafter{\pgfkeys at global@temp},
+  .--/.code=% decrements a value (only TeX integers!)
+    \pgfkeyssetevalue{\pgfkeyscurrentpath}
+      {\the\numexpr\pgfkeysvalueof{\pgfkeyscurrentpath}-1\relax},
+  .++/.code=% increments a value (only TeX integers!)
+    \pgfkeyssetevalue{\pgfkeyscurrentpath}
+      {\the\numexpr\pgfkeysvalueof{\pgfkeyscurrentpath}+1\relax},
+  .value/.code=% copies the value of one key to another w/o expanding it
+    \pgfkeysgetvalue{#1}\pgfkeys at temp
+    \expandafter\pgfkeys at exp@call\expandafter{\pgfkeys at temp}}
 }
 
 \pgfqkeys{/utils}{
@@ -134,6 +143,7 @@
     \pgfutil at ifempty{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
   },
   tex/.search also=/utils/TeX,
+  loops/do until/.code 2 args={\pgfutil at loop\pgfkeysalso{#1}#2\relax\pgfutil at repeat}%
 }
 
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -12,7 +12,11 @@
   \let\pgfnodepartleftbox\pgfnodeparttwobox
   \let\pgfnodepartrightbox\pgfnodepartthreebox
 }
+
+\newif\iftikzext at uncenteredrectangle@usesavedcenter
+
 \pgfset{
+  uncentered rectangle use saved center/.is if=tikzext at uncenteredrectangle@usesavedcenter,
   uncentered rectangle center yshift/.initial=,
   uncentered rectangle center/@center/.initial=2,
   uncentered rectangle center/.is choice,
@@ -176,8 +180,16 @@
     \advance\pgf at y by \pgf at ya
   }%
   %
+  \savedmacro\center{%
+    \pgfkeysgetvalue{/pgf/uncentered rectangle center/@center}\center
+  }
   \anchor{center}{%
-    \ifcase\pgfkeysvalueof{/pgf/uncentered rectangle center/@center}\relax
+    \ifcase
+      \iftikzext at uncenteredrectangle@usesavedcenter
+        \center
+      \else
+        \pgfkeysvalueof{/pgf/uncentered rectangle center/@center}%
+      \fi\relax
       \realCenter\or
       \leftCenter\or
       \middleCenter\or
@@ -203,7 +215,8 @@
     \pgfmathsetlength\pgf at y{.5ex}}%
   \anchor{base}{%
     \csname pgf at anchor@uncentered rectangle at center\endcsname
-    \pgf at y=0pt }%
+    \pgf at y=0pt
+  }%
   \anchor{left mid}   {\leftCenter  \pgfmathsetlength\pgf at y{+.5ex}}
   \anchor{text mid}   {\middleCenter\pgfmathsetlength\pgf at y{+.5ex}}
   \anchor{right mid}  {\rightCenter \pgfmathsetlength\pgf at y{+.5ex}}
@@ -273,30 +286,51 @@
     \pgf at xa=\pgf at x
     \pgf at ya=\pgf at y
     % xc/yc is "center"
-    \pgf at sh@reanchor{uncentered rectangle}{center}%
+    \pgf at process{\csname pgf at anchor@uncentered rectangle at center\endcsname}%
     \pgf at xc=\pgf at x
     \pgf at yc=\pgf at y
     \ifdim\pgf at xa<0pt
       % left side
       \southwest
-      \advance\pgf at x by -\pgf at xc
-      \advance\pgf at y by -\pgf at yc
-      \pgf at x=-\pgf at x
-      \pgf at y=-\pgf at y
+      \pgf at xb=\pgf at x
+      \pgf at yb=\pgf at y
+      \advance\pgf at xb by -\pgf at xc
+      \ifdim\pgf at ya<0pt
+        % south west side
+        \advance\pgf at yb by -\pgf at yc
+        \pgf at yb=-\pgf at yb
+      \else
+        % north west side
+        \northeast
+        \pgf at yb=\pgf at y
+        \advance\pgf at yb by -\pgf at yc
+      \fi
+      \pgf at xb=-\pgf at xb
       \edef\pgf at marshal{%
         \noexpand\pgfpointborderrectangle
           {\noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at ya}}
-          {\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+          {\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
       }%
     \else
       % right side
       \northeast
-      \advance\pgf at x by -\pgf at xc
-      \advance\pgf at y by -\pgf at yc
+      \pgf at xb=\pgf at x
+      \pgf at yb=\pgf at y
+      \advance\pgf at xb by -\pgf at xc
+      \ifdim\pgf at ya>0pt
+        % north east side
+        \advance\pgf at yb by -\pgf at yc
+      \else
+        % south east side
+        \southwest
+        \pgf at yb=\pgf at y
+        \advance\pgf at yb by -\pgf at yc
+        \pgf at yb=-\pgf at yb
+      \fi
       \edef\pgf at marshal{%
         \noexpand\pgfpointborderrectangle
           {\noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at ya}}
-          {\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+          {\noexpand\pgfqpoint{\the\pgf at xb}{\the\pgf at yb}}%
       }%
     \fi
     \pgf at process{\pgf at marshal}%

Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.calendar-plus.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.calendar-plus.code.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.calendar-plus.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -13,6 +13,12 @@
 
 \def\tikz at lib@cal at xshift{\pgfkeysvalueof{/tikz/day xshift}}
 \def\tikz at lib@cal at yshift{\pgfkeysvalueof{/tikz/day yshift}}
+\pgfkeyslet{/tikz/day xshift/. at cmd}\@undefined
+\pgfkeyslet{/tikz/day xshift/. at body}\@undefined
+\pgfkeyslet{/tikz/day xshift/. at def}\@undefined
+\pgfkeyslet{/tikz/day yshift/. at cmd}\@undefined
+\pgfkeyslet{/tikz/day yshift/. at body}\@undefined
+\pgfkeyslet{/tikz/day yshift/. at def}\@undefined
 \tikzset{day xshift/.initial=3ex,day yshift/.initial=3.5ex}
 
 % Shift between months
@@ -19,6 +25,12 @@
 
 \def\tikz at lib@cal at month@xshift{\pgfkeysvalueof{/tikz/month xshift}}
 \def\tikz at lib@cal at month@yshift{\pgfkeysvalueof{/tikz/month yshift}}
+\pgfkeyslet{/tikz/month xshift/. at cmd}\@undefined
+\pgfkeyslet{/tikz/month xshift/. at body}\@undefined
+\pgfkeyslet{/tikz/month xshift/. at def}\@undefined
+\pgfkeyslet{/tikz/month yshift/. at cmd}\@undefined
+\pgfkeyslet{/tikz/month yshift/. at body}\@undefined
+\pgfkeyslet{/tikz/month xshift/. at def}\@undefined
 \tikzset{month xshift/.initial=9ex,month yshift/.initial=9ex}
 
 % Internal option for storing the "width" of a calendar as a number of
@@ -25,6 +37,9 @@
 % days
 
 \def\tikz at lib@cal at width{\pgfkeysvalueof{/tikz/tikz at lib@cal at width}}
+\pgfkeyslet{/tikz/tikz at lib@cal at width/. at cmd}\@undefined
+\pgfkeyslet{/tikz/tikz at lib@cal at width/. at body}\@undefined
+\pgfkeyslet{/tikz/tikz at lib@cal at width/. at def}\@undefined
 \tikzset{tikz at lib@cal at width/.initial=1}
 
 % Weeks

Added: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.layers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.layers.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.layers.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,235 @@
+% 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.
+%
+
+\pgfdeclarelayer{discard}
+
+\def\tikzext at layers@swapfirstsetbox#1\setbox#2\tikzext at stop{%
+  #1\tikzext at layers@setbox at which#2%
+}
+\let\tikzext at layers@setbox at which\setbox
+
+\def\tikzshowdiscardlayeranyway{\box\pgf at layerbox@discard}
+\tikzset{
+  discard layer/.code=\expandafter\let\csname pgf at layerbox@#1\endcsname\pgfutil at voidb@x,
+  discard layer global/.code=\expandafter\global\expandafter\let\csname pgf at layerbox@#1\endcsname\pgfutil at voidb@x,
+}
+\def\tikzext at layers@whichbox{\tikz at figbox}%
+\pgfqkeys{/tikz-ext/layers}{
+  in box/.code={%
+    \expandafter\ifx\tikzext at layers@whichbox#1%
+      \pgfutil at packagewarning{tikz-ext}{Layer is already set. Setting will be skipped.}%
+    \else
+      \def\tikzext at layers@whichbox{#1}%
+      \def\tikz at whichbox{#1}%
+      \def\tikzext at layers@setbox at which{\global\setbox}%
+    \fi
+  },
+  on layer/.style={
+    /tikz-ext/layers/in box/.expand once=\csname pgf at layerbox@#1\endcsname
+  },
+  discard/.style={
+    /tikz-ext/layers/on layer=discard
+  },
+  @common patch/.style={
+    /tikz/behind path/.append code      =\let\tikzext at layers@setbox at which\setbox,
+    /tikz/in front of path/.append code =\let\tikzext at layers@setbox at which\setbox,
+    /tikz-ext/layers/@common patch/.code=%
+  },
+  patch/.is choice,
+  patch/all/.style={
+    /tikz-ext/layers/@common patch,
+    /tikz-ext/layers/patch/node,
+    /tikz-ext/layers/patch/matrix,
+    /tikz-ext/layers/patch/pic,
+    /tikz-ext/layers/patch/edge,
+  },
+  patch/node/.style={%
+    /utils/exec=%
+      \expandafter\expandafter\expandafter\def
+      \expandafter\expandafter\expandafter\tikz at fig@continue
+      \expandafter\expandafter\expandafter{\expandafter\tikzext at layers@swapfirstsetbox\tikz at fig@continue\tikzext at stop},%
+    /tikz-ext/layers/@common patch,
+    /tikz-ext/layers/patch/node/.code=\pgfutil at packagewarning{tikz-ext}{You can't apply the layers patch twice.},
+    /tikz/discard node/.style ={/tikz-ext/layers/discard},
+    /tikz/node on layer/.style={/tikz-ext/layers/on layer={##1}},
+    /tikz/node in box/.style  ={/tikz-ext/layers/in box={##1}},
+  },
+  patch/matrix/.style={%
+    /utils/exec=%
+      \expandafter\expandafter\expandafter\def
+      \expandafter\expandafter\expandafter\tikz at do@matrix
+      \expandafter\expandafter\expandafter{\expandafter\tikzext at layers@swapfirstsetbox\tikz at do@matrix\tikzext at stop},%
+    /tikz-ext/layers/@common patch,
+    /tikz-ext/layers/patch/matrix/.code=\pgfutil at packagewarning{tikz-ext}{You can't apply the layers patch twice.},
+    /tikz/execute at begin matrix={% in case patched node/edge/pic is used inside matrix
+      \let\tikzext at layers@setbox at which\setbox
+      \def\tikz at whichbox{\tikz at figbox}%
+      \pgfkeys{/tikz-ext/layers/in box/.code=\pgfutil at packageerror{tikz-ext}{Layers inside a matrix can't be used.}}%
+    },
+    /tikz/discard matrix/.style ={/tikz-ext/layers/discard},
+    /tikz/matrix on layer/.style={/tikz-ext/layers/on layer={##1}},
+    /tikz/matrix in box/.style  ={/tikz-ext/layers/in box={##1}},
+  },
+  patch/edge/.style={%
+    /utils/exec=\let\tikz at do@edge\tikzext at layers@tikz at do@edge,
+    /tikz-ext/layers/@common patch,
+    /tikz-ext/layers/patch/edge/.code=\pgfutil at packagewarning{tikz-ext}{You can't apply the layers patch twice.},
+    /tikz/discard edge/.style={/tikz-ext/layers/discard},
+    /tikz/edge on layer/.style={
+      /tikz-ext/layers/on layer={##1}
+    },
+    /tikz/edge in box/.style={/tikz-ext/layers/in box={##1}},
+  },
+  patch/pic/.style={%
+    /utils/exec=\let\tikz at subpicture@handle@\tikzext at layers@tikz at subpicture@handle@,
+    /tikz-ext/layers/@common patch,
+    /tikz-ext/layers/patch/pic/.code=\pgfutil at packagewarning{tikz-ext}{You can't apply the layers patch twice.},
+    /tikz/discard pic/.style={/tikz-ext/layers/discard},
+    /tikz/pic on layer/.style={/tikz-ext/layers/on layer={##1}},
+    /tikz/pic in box/.style={/tikz-ext/layers/in box={##1}},
+  }
+}
+\def\tikzext at layers@tikz at do@edge{%
+  \ifx\tikz at edge@macro\pgfutil at empty%
+    \tikzext at layers@setbox at which\tikz at whichbox=\hbox\bgroup%
+      \unhbox\tikz at whichbox%
+      \hbox\bgroup
+        \bgroup%
+          \pgfinterruptpath%
+            \pgfscope%
+              \let\tikz at transform=\pgfutil at empty%
+              \let\tikz at options=\pgfutil at empty%
+              \tikz at clear@rdf at options%
+              \let\tikz at tonodes=\tikz at collected@onpath%
+              \def\tikztonodes{{\pgfextra{\tikz at node@is at a@labeltrue}\tikz at tonodes}}%
+              \let\tikz at collected@onpath=\pgfutil at empty%
+              \tikz at options%
+              \tikz at do@rdf at pre@options%
+              \pgfidscope%
+              \tikz at do@rdf at post@options%
+              \tikz at transform%
+              \let\tikz at transform=\relax%
+              % Typeset node:
+              \let\tikz at after@path\pgfutil at empty%
+              \tikz at atbegin@to%
+                \tikz at enable@edge at quotes%
+                % in case patched nodes/edges/pics/matrices are used
+                \let\tikzext at layers@setbox at which\setbox
+                \def\tikz at whichbox{\tikz at figbox}%
+                \path[style=every edge]\expandafter[\tikz@@to at local@options](\tikztostart)\tikz at to@path
+                \pgfextra{\global\let\tikz at after@path at smuggle=\tikz at after@path};%
+              \tikz at atend@to%
+              \endpgfidscope%
+            \endpgfscope%
+          \endpgfinterruptpath%
+        \egroup
+      \egroup%
+    \egroup%
+    \ifx\tikzext at layers@setbox at which\setbox
+      \global\setbox\tikz at tempbox=\box\tikz at whichbox%
+      \expandafter\endgroup%
+      \expandafter\setbox\tikz at whichbox=\box\tikz at tempbox%
+    \else
+      \endgroup
+    \fi
+  \else%
+      \expandafter\expandafter\expandafter\tikz at edge@macro%
+      \expandafter\expandafter\expandafter{\expandafter\tikz@@to at local@options\expandafter}\expandafter{\tikz at collected@onpath}%
+    \endgroup%
+    \let\tikz at after@path at smuggle=\pgfutil at empty%
+  \fi%
+  \expandafter\tikz at scan@next at command\tikz at after@path at smuggle%
+}%
+\def\tikzext at layers@tikz at subpicture@handle@#1{
+  \pgfkeys{/tikz/pics/.cd,#1}%
+  \tikz at node@transformations%
+  \let\tikz at transform=\relax%
+  \let\tikz at picmode\tikz at mode%
+  \tikzset{name prefix ../.style/.expanded={/tikz/name prefix=\pgfkeysvalueof{/tikz/name prefix}}}%
+  \ifx\tikz at fig@name\pgfutil at empty\else%
+    \tikzset{name prefix/.expanded=\tikz at fig@name}%
+  \fi%
+  \pgfkeysvalueof{/tikz/pics/setup code}%
+  \pgfkeysgetvalue{/tikz/pics/code}{\tikz at pic@code}
+  \ifx\tikz at pic@code\pgfutil at empty\else% Qrr: next line
+  \tikzext at layers@setbox at which\tikz at whichbox=\hbox\bgroup%
+    \unhbox\tikz at whichbox%
+      \hbox\bgroup
+        \bgroup%
+          \pgfinterruptpath%
+            \pgfscope%
+              \tikz at options%
+              % Qrr: in case patched node/matrix/edge/pic is used inside the pic
+              \let\tikzext at layers@setbox at which\setbox
+              \def\tikz at whichbox{\tikz at figbox}%
+              \setbox\tikz at figbox=\box\pgfutil at voidb@x%
+              \setbox\tikz at figbox@bg=\box\pgfutil at voidb@x%
+              \tikz at atbegin@scope%
+              \scope[every pic/.try]%
+                \tikz at pic@code%
+              \endscope%
+              \tikz at atend@scope%
+            \endpgfscope%
+          \endpgfinterruptpath%
+        \egroup
+      \egroup%
+    \egroup%
+  \fi%
+  \pgfkeysgetvalue{/tikz/pics/foreground code}{\tikz at pic@code}
+  \ifx\tikz at pic@code\pgfutil at empty\else%
+  \unless\ifx\tikzext at layers@setbox at which\setbox
+    \pgfutil at packagewarning{tikz-ext}{Only the main pic code can be placed on selective layers.}
+  \fi
+  \setbox\tikz at figbox=\hbox\bgroup%
+    \unhbox\tikz at figbox%
+      \hbox\bgroup
+        \bgroup%
+          \pgfinterruptpath%
+            \pgfscope%
+              \tikz at options%
+              \setbox\tikz at figbox=\box\pgfutil at voidb@x%
+              \setbox\tikz at figbox@bg=\box\pgfutil at voidb@x%
+              \tikz at atbegin@scope%
+              \scope[every front pic/.try]%
+                \tikz at pic@code%
+              \endscope%
+              \tikz at atend@scope%
+            \endpgfscope%
+          \endpgfinterruptpath%
+        \egroup
+      \egroup%
+    \egroup%
+  \fi%
+  \pgfkeysgetvalue{/tikz/pics/background code}{\tikz at pic@code}
+  \ifx\tikz at pic@code\pgfutil at empty\else%
+  \unless\ifx\tikzext at layers@setbox at which\setbox
+    \pgfutil at packagewarning{tikz-ext}{Only the main pic code can be placed on selective layers.}
+  \fi
+  \setbox\tikz at figbox@bg=\hbox\bgroup%
+    \unhbox\tikz at figbox@bg%
+      \hbox\bgroup
+        \bgroup%
+          \pgfinterruptpath%
+            \pgfscope%
+              \tikz at options%
+              \setbox\tikz at figbox=\box\pgfutil at voidb@x%
+              \setbox\tikz at figbox@bg=\box\pgfutil at voidb@x%
+              \tikz at atbegin@scope%
+              \scope[every behind pic/.try]%
+                \tikz at pic@code%
+              \endscope%
+              \tikz at atend@scope%
+            \endpgfscope%
+          \endpgfinterruptpath%
+        \egroup
+      \egroup%
+    \egroup%
+  \fi%
+  \tikz at node@finish%
+}%
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.layers.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -35,46 +35,10 @@
     \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\iftikzext at pgf@foreach at no@list
-\pgfqkeys{/pgf/foreach}{
-  use int/.code={%
-    \tikzext at pgf@foreach at no@list at parse@to\pgfmathtruncatemacro#1\pgffor at stop
-  },
-  use float/.code={%
-    \tikzext at pgf@foreach at no@list at parse@to\pgfmathsetmacro#1\pgffor at stop
-  }
-}
+\pgfutil at IfUndefined{tikzext at pgf@foreach at no@list at parse@to}{% stupid test
+  \input pgffor-ext.code.tex
+}{}
 
-\def\tikzext at pgf@foreach at no@list at parse@to#1#2to#3\pgffor at stop{%
-  \tikzext at pgf@foreach at no@listtrue
-  #1\foreachStart{#2}%
-  \pgfutil at in@{step}{#3}
-  \ifpgfutil at in@
-    \tikzext at pgf@foreach at no@list at parse@step{#1}#3\pgffor at stop
-  \else
-    \tikzext at pgf@foreach at no@list at parse@step{#1}#3step1\pgffor at stop
-  \fi
-  \edef\tikzext at pgf@foreach at no@list at list{\foreachStart,\foreachSecond,...,\foreachEnd}%
-}
-\def\tikzext 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}{%
-         \iftikzext at pgf@foreach at no@list\expandafter\pgfutil at firstoftwo\else
-           \expandafter\pgfutil at secondoftwo\fi
-         {\tikzext at pgf@foreach at no@listfalse\pgffor at macro@list\tikzext at pgf@foreach at no@list at list}
-         {\pgffor@@vars}}}}}%
-
 %% PGFmath
 %% strrepeat("x", 5) = "xxxxx"
 \pgfmathdeclarefunction{strrepeat}{2}{%
@@ -134,6 +98,7 @@
 
 \pgfmathdeclarefunction{distancebetween}{2}{% only coordinates/nodes
   \begingroup
+    \nullfont
     \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
@@ -141,6 +106,7 @@
   \endgroup}
 \pgfmathdeclarefunction{qdistancebetween}{1}{% only coordinates/nodes
   \begingroup
+    \nullfont
     \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
@@ -148,10 +114,20 @@
   \endgroup}
 
 \pgfmathdeclarefunction{qanglebetween}{1}{%
-  \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfpointanchor{#1}{center}}}
+  \begingroup
+    \nullfont
+    \pgfmathanglebetweenpoints{\pgfpointorigin}{\pgfpointanchor{#1}{center}}%
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup
+}
 
 \pgfmathdeclarefunction{anglebetween}{2}{%
-  \pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}
+  \begingroup
+    \nullfont  
+    \pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}%
+    \pgfmath at smuggleone\pgfmathresult
+  \endgroup
+}
 
 \pgfmathdeclarefunction{isEmpty}{1}{%
   \begingroup
@@ -177,4 +153,57 @@
     \pgfutil at g@addto at macro\pgfmathdeclareconstant@@@{\pgfmathdeclarepseudoconstant{#1}{\def\pgfmathresult{#2}}}%
     \pgfmathdeclareconstant@#3\pgf at stop
   }%
-}
\ No newline at end of file
+}
+
+%%% Some shape
+
+\tikzset{% quick versions of reverse clips
+  reverse clip/.is choice,
+  reverse clip/clockwise/.code={%
+    \begingroup
+      \pgfsetcornersarced{\pgfpointorigin}%
+      \pgfpathqmoveto{16000pt}{16000pt}%
+      \pgfpathqlineto{16000pt}{-16000pt}%
+      \pgfpathqlineto{-16000pt}{-16000pt}%
+      \pgfpathqlineto{-16000pt}{16000pt}%
+      \pgfpathclose
+    \endgroup
+  },
+  reverse clip/counter clockwise/.code={%
+    \begingroup
+      \pgfsetcornersarced{\pgfpointorigin}%
+      \pgfpathqmoveto{16000pt}{16000pt}%
+      \pgfpathqlineto{-16000pt}{16000pt}%
+      \pgfpathqlineto{-16000pt}{-16000pt}%
+      \pgfpathqlineto{16000pt}{-16000pt}%
+      \pgfpathclose
+    \endgroup
+  },
+  clip rule/.is choice,
+  clip rule/even odd/.code=\pgfseteorule,
+  clip rule/nonzero/.code=\pgfsetnonzerorule,
+  reverse clip/.default=counter clockwise,
+  remember path/.code={%
+    \tikz at addmode{%
+      \expandafter\pgfsyssoftpath at getcurrentpath\csname tikz at intersect@path at name@remember path-#1\endcsname
+      \immediate\write\pgfutil at auxout{%
+        \noexpand\expandafter\gdef\noexpand\csname tikz at intersect@path at name@remember path-#1\endcsname{%
+          \expandafter\expandafter\expandafter\unexpanded
+          \expandafter\expandafter\expandafter{%
+            \csname tikz at intersect@path at name@remember path-#1\endcsname
+          }%
+        }%
+      }%
+    }%
+  },
+  remembered path/.code={%
+    \pgfutil at IfUndefined{tikz at intersect@path at name@remember path-#1}{}{%
+      \tikz at addmode{%
+        \expandafter\pgfsyssoftpath at setcurrentpath
+        \expandafter{%
+          \csname tikz at intersect@path at name@remember path-#1\endcsname
+        }%
+      }%
+    }%
+  },%
+}       
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.node-families.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.node-families.code.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.node-families.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -67,6 +67,19 @@
     }%
 }
 
+% #1 = family type
+% #2 = family
+\def\tikzext at nf@get#1#2{%
+  \pgfutil at IfUndefined{tikzext at nf@#1@\pgfkeysvalueof{/tikz/node family/prefix}#2 at previous}
+                      {0pt}
+                      {\csname tikzext at nf@#1@\pgfkeysvalueof{/tikz/node family/prefix}#2 at previous\endcsname}%
+}
+\def\tikzextnodefamiliesgetwidth{\tikzext at nf@get{width}}
+\def\tikzextnodefamiliesgetheight{\tikzext at nf@get{height}}
+\def\tikzextnodefamiliesgettextwidth{\tikzext at nf@get{text width}}
+\def\tikzextnodefamiliesgettextdepth{\tikzext at nf@get{text depth}}
+\def\tikzextnodefamiliesgettextheight{\tikzext at nf@get{text height}}
+
 \pgfdeclareshape{Rectangle}{%
   \savedanchor\northeast{%
     % Calculate x

Added: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,140 @@
+% 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.
+%
+
+\newcount\tikzext at nodesonpath
+\tikzset{
+  pic/.is if=tikz at node@is at pic,
+  /tikz-ext/nodes/node on line/.style 2 args={
+    /tikz/to path={
+      \pgfextra{%
+        \edef\tikz at temp{% rescuing nodes and target for edge
+          edge[
+            line to,%   --
+            path only,% no draw, no fill, …
+            every edge quotes/.append style={auto=false},% node *on* the line
+            nodes={alias=tikzext-node on line}]
+          coordinate(tikzext-node on line)% fallback coordinate
+          \unexpanded\expandafter{\tikz at tonodes}(\tikztotarget)
+        }\expandafter
+      }\tikz at temp
+      -- (tikzext-node on line#1)
+         (tikzext-node on line#2)
+      -- (\tikztotarget)
+    }
+  },
+  /tikz-ext/nodes/@node on line/.style args={#1 and #2}{
+    /tikz-ext/nodes/node on line={.#1}{.#2}
+  },
+  node on line/.default=,
+  node on line/.code={%
+    \pgfutil at ifempty{#1}{%
+      \pgfkeys{/tikz-ext/nodes/node on line={}{}}%
+    }{%
+      \pgfutil at in@{ and }{#1}%
+      \ifpgfutil at in@
+        \pgfkeys{/tikz-ext/nodes/@node on line={#1}}%
+      \else
+        \pgfkeys{/tikz-ext/nodes/@node on line={#1 and #1}}%
+      \fi
+    }%
+  },
+  nodes on line/.style={
+    /tikz/to path={
+      \pgfextra{%
+        \tikzext at nodesonpath=0
+        \edef\tikz at temp{% rescuing nodes and target for edge
+          edge[
+            line to,%   --
+            path only,% no draw, no fill, …
+            every edge quotes/.append style={auto=false},% node *on* the line
+            nodes={
+              /utils/exec=\global\noexpand\advance\tikzext at nodesonpath by 1,
+              alias=tikzext-node on line-\noexpand\the\tikzext at nodesonpath
+            }]
+          \pgfutil at unexpanded\expandafter{\tikz at tonodes}(\tikztotarget)
+        }\expandafter
+      }\tikz at temp
+      \ifnum\tikzext at nodesonpath=0
+        -- (\tikztotarget)
+      \else
+        -- (tikzext-node on line-1)
+        \unless\ifnum\tikzext at nodesonpath=1
+          foreach[expand list] \tikzext at counter in {2, ..., \the\tikzext at nodesonpath} {
+               (tikzext-node on line-\pgfinteval{\tikzext at counter-1})
+            -- (tikzext-node on line-\tikzext at counter)
+          }
+        \fi
+        (tikzext-node on line-\the\tikzext at nodesonpath) -- (\tikztotarget)
+      \fi
+    }
+  },
+  %%% nodes on curve, needs spath3
+  /tikz-ext/spath/split multiple at intersections/.style n args={3}{
+    /utils/temp/.style={
+      /tikz/spath/split at intersections with={#1}{#2##1}
+    },
+    /utils/temp/.list={#3}
+  },
+  nodes on curve/.default=line to,
+  nodes on curve'/.default=line to,
+  nodes on curve/.style={% normal path
+    /tikz-ext/nodes/nodes on curve={#1}{/tikz/spath/append}{}
+  },
+  nodes on curve'/.style={% for edges and tos
+    /tikz-ext/nodes/nodes on curve={#1}{/tikz/spath/use}{%
+      \ifx\tikz at to@or at edge@function\tikz at do@to(\tikztotarget)\fi
+    }
+  },
+  % spath/prefix/tikzext-nodes/.style={
+  %   set prefix=tikzext-node on curve
+  % },
+  % spath/suffix/tikzext-nodes/.style={
+  %   set suffix=
+  % },
+  /tikz-ext/nodes/nodes on curve/.code n args={3}{%
+    \pgfutil at IfUndefined{tikz at library@spath3 at loaded}{%
+      \pgfutil at packagerror{tikz-ext}{%
+        You need to say \string\usetikzlibrary{spath3} to use nodes on curve.}{}%
+    }{%
+      \tikzset{to path={%
+      % \def\tikz at to@path{% to path = 
+        \pgfextra{%
+          \tikzext at nodesonpath=0
+          \edef\tikz at temp{% rescuing nodes and target for edge
+            edge[%
+              #1, path only,% path only = no draw, no fill, …
+              every edge quotes/.append style={auto=false},% node *on* the line
+              nodes={
+                /utils/exec=\global\noexpand\advance\tikzext at nodesonpath by 1,
+                % spath/set name=tikzext-nodes,
+                spath/save global=tikzext-node on curve-\noexpand\the\tikzext at nodesonpath,
+              },
+              % spath/set name=tikzext-nodes,
+              spath/save global=tikzext-node on curve-curve
+            ]
+            \pgfutil at unexpanded\expandafter{\tikz at tonodes}(\tikztotarget)
+          }\expandafter
+        }\tikz at temp
+        [%
+          /tikz-ext/spath/split multiple at intersections/.expanded=%
+            {tikzext-node on curve-curve}%
+            {tikzext-node on curve-}%
+            {1\ifnum\tikzext at nodesonpath>1 ,...,\the\tikzext at nodesonpath\fi},
+          spath/remove components/.expanded={tikzext-node on curve-curve}{%
+            2%
+            \ifnum\tikzext at nodesonpath>1
+              ,4,...,\pgfinteval{2*\the\tikzext at nodesonpath}%
+            \fi
+          },
+          #2=tikzext-node on curve-curve%
+        ]%
+        #3%
+      }}%
+    }
+  }
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.timer.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.timer.code.tex	2023-03-21 16:49:09 UTC (rev 66622)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.timer.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -5,6 +5,7 @@
 % 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}}%
@@ -63,7 +64,7 @@
   \tikz at scan@next at command
 }
 
-\def\tikz at timer@rectangle{%
+\def\tikzext 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
@@ -185,4 +186,11 @@
     {\noexpand\tikz at timer@end}}%
   \tikz at marshall
 }
+
+\tikzset{
+  rectangle timer/.is choice,
+  rectangle timer/line/.code=\let\tikz at timer@rectangle\tikz at timer@line,
+  rectangle timer/rectangle/.code=\let\tikz at timer@rectangle\tikzext at timer@rectangle,
+  rectangle timer=rectangle
+}
 \endinput
\ No newline at end of file

Added: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.shapes.uncenteredrectangle.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.shapes.uncenteredrectangle.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.shapes.uncenteredrectangle.code.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,46 @@
+% Copyright 2023 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.shapes.uncenteredrectangle}
+\newif\iftikzext at uncrec@mathmode
+\pgfqkeys{/tikz-ext}{
+  tikz-cd fix/.code={% #1
+    \tikzcdset{
+    /tikz-ext/tikz-cd fix/.code=,
+      urc/.style={/pgf/uncentered rectangle center={##1}},
+      every diagram/.append style={% ##1
+        /pgf/uncentered rectangle center yshift=axis_height,
+        /tikz/uncentered rectangle/.style={
+          /tikz/shape=uncentered rectangle,
+          /tikz/commutative diagrams/math mode=false,
+        },
+        /tikz/matrix of math nodes/.style={
+          /tikz/matrix of nodes,
+          /tikz/nodes={
+            execute at begin node=\iftikzcd at mathmode$\fi,
+            execute at end node=\iftikzcd at mathmode$\fi
+          }
+        },
+        /utils/exec=%
+          \def\uncrec####1####2####3{%
+            \iftikzext at uncrec@mathmode$\fi####2\iftikzext at uncrec@mathmode$\fi
+            \nodepart{left}\iftikzext at uncrec@mathmode$\fi####1\iftikzext at uncrec@mathmode$\fi
+            \nodepart{right}\iftikzext at uncrec@mathmode$\fi####3\iftikzext at uncrec@mathmode$\fi
+          },
+        /tikz/uncrec math mode/.is if=tikzext at uncrec@mathmode,
+        /tikz/uncrec math mode=true,
+        /tikz/uncrec/.style={% ####1
+          /tikz/uncentered rectangle,
+          /pgf/uncentered rectangle center={####1}
+        },
+        install uncentered rectangle in column/.style={
+          /tikz/column ####1/.append style={/tikz/uncentered rectangle}
+        }
+      }
+    }
+  }
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.shapes.uncenteredrectangle.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/pgffor-ext.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty	2023-03-21 16:49:52 UTC (rev 66623)
@@ -0,0 +1,44 @@
+% 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{pgffor}
+\ifcsname tikzext at pgf@foreach at no@list at parse@to\endcsname
+  \expandafter\@gobble
+\else
+  \expandafter\@firstofone
+\fi
+{
+  \input{pgffor-ext.code.tex}
+}
+
+\pgfqkeys{/pgf/foreach}{
+  xparser/.code 2 args={%
+    \DeclareDocumentCommand\pgffor at scan@custom{ #1 u, }{%
+      \def\pgffor at value{#2}%
+      \pgffor at scanned
+    }%
+    \def\pgffor at scan{%
+      \pgfutil at ifnextchar\pgffor at stop\pgffor at scanone\pgffor at scan@custom
+    }%
+  },
+  xparser Om/.style={
+      xparser={ O{} }{{##1}/{##2}}
+  },
+}
+\pgfqkeys{/handlers}{
+  .list xparse/.code n args={3}{%
+    \def\pgf at keys@temp{}%
+    \foreach[xparser={#1}{#2}]\pgf at keys@key in{#3}{%
+      \expandafter\pgfutil at g@addto at macro\expandafter\pgf at keys@temp\expandafter{\expandafter{\pgf at keys@key}}}%
+    \edef\pgf at keys@list at path{\pgfkeyscurrentpath}%
+    \expandafter\expandafter\expandafter\pgf at keys@do at list%
+      \expandafter\expandafter\expandafter{%
+      \expandafter\pgf at keys@list at path\expandafter}%
+      \pgf at keys@temp\pgf at stop}%
+}
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/plain/tikz-ext/pgffor-ext.tex
===================================================================
--- trunk/Master/texmf-dist/tex/plain/tikz-ext/pgffor-ext.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/plain/tikz-ext/pgffor-ext.tex	2023-03-21 16:49:52 UTC (rev 66623)
@@ -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 pgffor.tex
+\catcode`\@=11
+\input pgffor-ext.code.tex
+\catcode`\@=\pgfforatcode
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/plain/tikz-ext/pgffor-ext.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property


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