texlive[74934] Master/texmf-dist: tikz-ext (13apr25)

commits+karl at tug.org commits+karl at tug.org
Sun Apr 13 22:30:27 CEST 2025


Revision: 74934
          https://tug.org/svn/texlive?view=revision&revision=74934
Author:   karl
Date:     2025-04-13 22:30:27 +0200 (Sun, 13 Apr 2025)
Log Message:
-----------
tikz-ext (13apr25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-arrows-plus.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-pgf-arrows.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/tex/generic/tikz-ext/pgflibraryext.arrows.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.arrows-plus.code.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-beamer.tex
    trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md	2025-04-13 20:30:27 UTC (rev 74934)
@@ -12,42 +12,41 @@
 
 This is not a LaTeX package but a collection of libraries for PGF and TikZ;
 
- * `ext.arrows` provides additional arrow tips.
-   * Many of the standard `arrows.meta` library's get “Centered” and “Untipped” alternative.
-   * Furthermore, the arrow tips `ext_Hug Cap` for connecting circles neatly and `ext_Loop` are provided.
- * `ext.arrows-plus` allows to place arrow tips along a path.
-   
-   These can either be placed via pics *along* a path operation (`ext/arrow`, `ext/softpath arrows` and `ext/softpath arrow`)
-   or via keys ( `ext/arc arrows` and `ext/softpath arrows`) along a previous arc or any path segment.
-   All except the `ext/arrow` key support the bending of arrow tips.
+* `ext.arrows` provides additional arrow tips.
+  * Many of the standard `arrows.meta` library's tips get “Centered” and “Untipped” variants.
+  * Additional arrow tips: `ext_Hug Cap`, `ext_Loop`, `ext_Double Cap`, `ext_Double Stealth`, `ext_Double Triangle`.
+* `ext.arrows-plus` allows to place arrow tips along a path.
+  * via pics *along* a path operation (`ext/arrow`, `ext/softpath arrows` and `ext/softpath arrow`)
+  * via keys ( `ext/arc arrows` and `ext/softpath arrows`) along a previous arc or any path segment.
+  * All except the `ext/arrow` key support the bending of arrow tips.
+  * The `\arrow` command of the `decorations.markings` library has alternatives `\arrow*` and `\arrow**` for shifting and shifting/bending.
+* `ext.beamer` provides better Beamer support for TikZ.
+* `ext.calendar-plus` extends the `calendar` library with more tests, week numbers and a few goodies.
+  * The already defined keys `day xshift`, `day yshift`, `month xshift` and `month yshift` are now proper value-keys and can be accessed without having to use an `@`-riddled macro name.
+  * The `if` key is nestable.
+  * Via the `pgfcalendar-ext` package more conditionals are available, also week numbering according to ISO 8601 is supported.
+* `ext.layers` allows to put nodes etc on a separate layer without having to use `pgfonlayer`.
+* `ext.misc` which includes
+  * the PGFKeys library `ext.pgfkeys-plus` and
+  * the PGFFor extension `pgffor-ext`.
+* `ext.node-families` uses the AUX file to sync the sizes of nodes.
+  * `ext.node-families.shapes.geometric`
+* `ext.nodes` extends the functionalities around nodes.
+* `ext.paths.arcto` implements a `arc to` path operation 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 the path operations `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.
+* Shapes:
+  * `ext.shapes.circlearrow`
+  * `ext.shapes.circlecrosssplit`
+  * `ext.shapes.heatmark`
+  * `ext.shapes.rectangleroundedcorners`
+  * `ext.shapes.superellipse`
+  * `ext.shapes.uncenteredrectangle`
+* `ext.topaths.arcthrough` installs a `to path` that expects a third point that defines an arc.
+* `ext.topaths.autobend` implements various `to path`s that bend in a specific direction instead of left or right.
+* `ext.transformations.mirror` adds transformations that reflect on arbitrary lines.
 
-   The `\arrow` command of the `decorations.markings` library has alternatives `\arrow*` and `\arrow**` for shifting and shifting/bending.
-   
- * `ext.calendar-plus` extends the `calendar` library with more tests, week numbers and a few goodies.
-   * The already defined keys `day xshift`, `day yshift`, `month xshift` and `month yshift` are now proper value-keys and can be accessed wtithout having to use an `@`-riddled macro name.
-   * The `if` key is nestable.
-   * Via the `pgfcalendar-ext` package more conditionals are available, also week numbering according to ISO 8601 is supported.
- * `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` 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`
-   * `ext.shapes.heatmark`
-   * `ext.shapes.rectangleroundedcorners`
-   * `ext.shapes.superellipse`
-   * `ext.shapes.uncenteredrectangle`
-
- These were developed in response to questions on tex.stackexchange.com or texwelt.de.
+These were developed in response to questions on tex.stackexchange.com or texwelt.de.

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-arrows-plus.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-arrows-plus.tex	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-arrows-plus.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -32,7 +32,12 @@
 This is an alias for \referenceKeyandIndex{pos},
 if an end arrow tip sequence is provided, it is placed at this position.
 \end{key}
-
+\begin{key}{/\tikzext/pos < angle=\meta{angle}}
+For tips along an arc the angle along that arc can be specified for the start tip sequence.
+\end{key}
+\begin{key}{/\tikzext/pos > angle=\meta{angle}}
+For tips along an arc the angle along that arc can be specified for the end tip sequence.
+\end{key}
 \begin{key}{/\tikzext/arrow shift mode=\meta{shift mode} (initially total length)}
 This key is used to set the \meta{shift mode} for the arrow tip.
 It can be one of the following.
@@ -78,12 +83,19 @@
 The result of this evaluation is used to shift the arrow tip sequence
 in the tip's direction.
 
-\begin{key}{/\tikzext/arrow shift factor=\meta{value} (initially 0.5)}
-  This determines the shift factor.
+\begin{key}{/\tikzext/arrow shift factor start=\meta{value} (initially 0.5)}
+  This determines the shift factor for the start tip sequence.
   
   The default value is probably good for most cases.
 \end{key}
-
+\begin{key}{/\tikzext/arrow shift factor end=\meta{value} (initially 0.5)}
+  This determines the shift factor for the start tip sequence.
+  
+  The default value is probably good for most cases.
+\end{key}
+\begin{key}{/\tikzext/arrow shift factor=\meta{value}}
+  This sets both the start and end shift factor.
+\end{key}
 \subsection{Arrow pic types}
 
 This library provides the following pics:
@@ -139,7 +151,7 @@
   
   This obviously is best used as a pic along a path segment that supports it.
   It \emph{does not} support bended arrow tips.
-\begin{codeexample}[preamble=\usetikzlibrary{bending, ext.arrows-plus}]
+\begin{codeexample}[preamble=\usetikzlibrary{arrows.meta, bending, ext.arrows-plus}]
 \begin{tikzpicture}[>={Triangle[color=red]}, arrows={[bend]}, ultra thick]
 \ttfamily
 \foreach[count=\y] \shiftmode in {off, total length, length until line end}
@@ -161,10 +173,24 @@
   It supports the |pos <| key.
   
   \paragraph{Note:} For arcs with an angle greater than 90${}^\circ$
-    this will not work as expected. Use the |arc arrows| key instead.
+    this will not work as expected. Use the |/tikz/ext/arc arrows| key instead.
 \end{pictype}
 \begin{pictype}{ext/softpath arrow}{\opt{|=|\meta{\rmfamily end tip specification}}}
   This pic type is an alias for |softpath arrows = -|\meta{end tip specification}.
+
+\begin{codeexample}[preamble=\usetikzlibrary{arrows.meta, bending, ext.arrows-plus}]
+\begin{tikzpicture}[>={Triangle[color=red]}, arrows={[bend]}, ultra thick]
+\ttfamily
+\foreach[count=\y] \shiftmode in {off, total length, length until line end}
+  \draw[ext/arrow shift mode=\shiftmode] (0, -\y  )
+                to[bend  left] pic {ext/softpath arrow=>}    ++(right:2)
+                to[bend  left] pic {ext/softpath arrow=>>.>} ++(right:2)
+                                             node[below right] {\shiftmode}
+    ++(down:.4) to[bend right] pic {ext/softpath arrow=>>.>} ++( left:2)
+                to[bend right] pic {ext/softpath arrow=>}    ++( left:2);
+\draw[thin, gray] (1,-.5) -- +(down:3) (3,-.5) -- +(down:3);
+\end{tikzpicture}
+\end{codeexample}
 \end{pictype}
 
 \subsection{Arrow keys}
@@ -175,6 +201,11 @@
 
 \begin{stylekey}{/\tikzext/every softpath arrows (initially \{\})}
 This style will be applied for every instance of |softpath arrows| (key version, not the pic).
+It also sets up forwarding
+\begin{itemize}
+  \item from |/tikz/pos >| to |/tikz/ext/pos >| and
+  \item from |/tikz/pos <| to |/tikz/ext/pos >|.
+\end{itemize}
 \end{stylekey}
 \end{key}
 
@@ -183,8 +214,28 @@
 This key adds arrow tips to the previous arc segment.
 \begin{stylekey}{/\tikzext/every arc arrows (initially \{\})}
 This style will be applied for every instance of |arc arrows|.
+It also sets up forwarding
+\begin{itemize}
+  \item from |/tikz/pos >| to |/tikz/ext/pos >|,
+  \item from |/tikz/pos <| to |/tikz/ext/pos >| as well as
+  \item from |/tikz/pos > angle| to |/tikz/ext/pos > angle| and
+  \item from |/tikz/pos < angle| to |/tikz/ext/pos < angle|.
+\end{itemize}
+\begin{codeexample}[preamble=\usetikzlibrary{arrows.meta, ext.arrows-plus}]
+\begin{tikzpicture}
+\draw (0,0) -- (135:1)
+      (0,0) -- (225:1) [help lines];
+\draw[arrows={[bend] Stealth-Latex}]
+  (120:1) arc[start angle=120,
+                end angle=240, radius=1]
+  [ext/arc arrows={pos < angle=135,
+                   pos > angle=225,
+                   arrows=[red]}];
+\end{tikzpicture}
+\end{codeexample}
 \end{stylekey}
 
+
 \paragraph{Tip:}
 Use an arc with the full 360${}^\circ$ to place bended arrow tips along a circle or an ellipse.
 \end{key}

Added: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-beamer.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-beamer.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-beamer.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -0,0 +1,240 @@
+% !TeX TS-program = lualatex
+% !TeX spellcheck = en_US
+% !TeX root = tikz-ext-manual.tex
+% Copyright 2025 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{Beamer with \tikzname}
+\label{tikzlibrary:beamer}
+\begin{tikzlibrary}{ext.beamer}
+  This library can help create \tikzname\ diagrams in the class Beamer\indexPackageO{beamer}.
+\end{tikzlibrary}
+
+%\begin{multicols*}{2}
+\subsection{Helpers}
+These helpers are always available, even if this library is loaded outside of Beamer.
+\begin{key}{/\tikzext/ignore line width}
+If this key is used on a scope (or the \tikzname\ picture itself),
+the line widths of paths will not contribute to the bounding box
+of the diagram.
+\end{key}
+\begin{key}{/\tikzext/max bounding box=\meta{name}}
+This key is to be used on multiple |tikzpicture| environments.
+All \tikzname\ diagram with the same \meta{name} will have the same bounding box.
+Refrain from using (unprotected) commas (|,|) in the \meta{name}.
+
+This uses the \filetype{aux} file and
+is therefore incompatible with the \referenceLibraryandIndexO{external} library.
+
+However, it is made compatible with the
+\referencePackageandIndexO{memoize} \cite{memoize} package,
+even if it takes a few compilations until it is stable again
+after a new diagram is added to the group.
+\end{key}
+
+\subsection{Beamer}
+While \tikzname\ has some rudimentary support for the |beamer| class,
+i.\,e. in the form of \texttt{\string\path<}\meta{overlay specification}\texttt{>},
+this uses Beamer's |\alt| command internally so that on overlays
+that are not included in \meta{overlay specification}, the path will not be typeset
+and will therefore not contribute to the diagram's bounding box.
+
+This in turn will lead to the diagram \enquote{jumping around}
+as every overlay will contain a different diagram with different dimensions.
+The \referencePackageandIndexO{aobs-tikz} package solves this by setting the |opacity| to zero
+for all those slides an element shouldn't be visisble on.
+
+I believe we can do better.
+
+Though, remember that for many simple diagrams,
+you can simply use \referenceCommandandIndexO{\onslide}.
+The following diagram will show
+\begin{itemize}
+\item nodes and edges transparent on overlay 1,
+\item nodes fully visible and edges transparent on overlay 2 and
+\item all elements fully visible on overlay 3.
+\end{itemize}
+\begin{codeexample}[preamble=\usetikzlibrary{ext.beamer} \setbeamercovered{transparent},code only]
+\begin{tikzpicture}
+\onslide<2->
+\path node (a)          {A}
+      node (b) at (1,2) {B};
+\onslide<3->
+\path (a) edge[bend right] (b);
+\onslide
+\end{tikzpicture}
+\end{codeexample}
+\subsubsection{Stop Jumping}
+One solution to this is to have the same \tikzname\ diagram
+have the same size on every overlay.
+The |/tikz/ext/ignore line width| might help if all that changes between overlays
+is the line width of elements.
+
+Another one is the following key.
+\begin{key}{/\tikzext/sync bounding box}
+This key uses |ext/max bounding box| with a specific \meta{name}
+that is stable across overlays.
+
+If you find yourself often rearrange diagrams or changing overlays,
+you might be better off using the |ext/sync bounding box| key
+directly with a distinct \meta{name}.
+\end{key}
+
+\subsubsection{Beamer Function and keys}
+\begin{key}{/\tikzext/beamer function=\mchoice{original, alt, only, uncover, visible, invisible}}
+This key changes how the \meta{overlay specification} in
+\texttt{\string\path<}\meta{overlay specification}\texttt{>}
+is applied internally.
+The choices |original|, |alt| and |only| are all the same
+and will result in the default behavior of \tikzname.
+
+The same overlays as above can be created now with the following diagram.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.beamer} \setbeamercovered{transparent},code only]
+\begin{tikzpicture}[ext/beamer function=uncover]
+\path<2-> node (a)          {A}
+          node (b) at (1,2) {B};
+\path<3-> (a) edge[bend right] (b);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{keylist}[/\tikzext]{%
+    uncover=\meta{overlay specification} (default all),
+      cover=\meta{overlay specification} (default all),
+    visible=\meta{overlay specification} (default all),
+  invisible=\meta{overlay specification} (default all)%
+}
+These keys work similar to Beamer's own |\onslide| command
+but only apply to the element it is used on.
+
+The implementation of this is rather experimental and should be used carefully.
+Multiple uses of these options \emph{don't} stack, only the last one wins --
+this includes the use of the first syntax shorcuts introduced
+in the next subsubsection.
+
+The same overlays as above can be created with the first of the following diagram.
+In the second diagram |ext/uncover| is only used on the (actual) empty path.
+Just like |draw|/|\draw|, the nodes will not observe the request to be covered on overlay 1.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.beamer} \setbeamercovered{transparent},code only]
+\begin{tikzpicture}
+\path[nodes={ext/uncover=2-}]
+  node (a)          {A}
+  node (b) at (1,2) {B}
+  (a) edge[bend right, ext/uncover=3-] (b);
+\end{tikzpicture}
+\begin{tikzpicture}
+\draw[ext/uncover=2-]
+  node (a)          {A}
+  node (b) at (1,2) {B};
+\end{tikzpicture}
+\end{codeexample}
+\end{keylist}
+\begin{keylist}[/\tikzext]{%
+  aobs   visible=\meta{overlay specifcation} (default all),
+  aobs invisible=\meta{overlay specifcation} (default all)%
+}
+In case one wants to use the method of simply setting the opacity of elements to zero
+to hide them, these keys are also available.
+\end{keylist}
+Of course, an extension to Beamer is not complete without the following keys.
+\begin{key}{/\utilsext/only=\marg{overlay specification}\marg{key-value list}}
+  Applies the \meta{key-value list} only on \meta{overlay specification}.
+\end{key}
+\begin{key}{/\utilsext/alt=\marg{overlay specification}\marg{default kv list}\marg{alternative kv list}}
+  Applies the \meta{default kv list} on \meta{overlay specification},
+  otherwise the \meta{alternative kv list}.
+\end{key}
+\begin{key}{/\utilsext/temporal=\marg{overlay specification}%
+  \marg{before kv list}\marg{default kv list}\marg{after kv list}}
+  Applies the specific list depending whether the current overlay is before,
+  on or after the specified \meta{overlay specification}.
+\end{key}
+\subsubsection{Beamer Shortcuts}
+But, of course, no one wants to write |/utils/ext/only={2}{red}| to
+make an element red on overlay 2.
+\begin{key}{/\tikzext/beamer shortcuts=\marg{key-value list}}
+  This executes the \meta{key-value list} in the namespace |/tikz/ext/beamer shortcuts|.
+\end{key}
+\begin{key}{/\tikzext/beamer shortcuts/aot}
+  This forwards the keys \referenceKeyandIndex{alt}, \referenceKeyandIndex{only}
+  and \referenceKeyandIndex{temporal} to the aforementioned homonymous |/utils/ext| keys.
+\end{key}
+\begin{key}{/\tikzext/beamer shortcuts/first char=%
+  \mchoice{uncover, cover, visible, invisible, aobs visible, aobs invisible} (initially uncover)}
+  The value of this key will be used for the first char shorthands that can be enabled with the following keys.
+\end{key}
+\begin{key}{/\tikzext/beamer shortcuts/enable first char <}
+  This install a \enquote{first char} handler with the character |<|.
+  
+  This allows the example diagram to specified in the following way.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.beamer} \setbeamercovered{transparent},code only]
+\begin{tikzpicture}[ext/beamer shortcuts={enable first char <}]
+\node (a) [<2->]          {A};
+\node (b) [<2->] at (1,2) {B};
+\path (a) edge[<3->, bend right] (b);
+\end{tikzpicture}
+\end{codeexample}
+
+  Internally, this will be converted to |ext/uncover=|\marg{overlay specification}.
+  
+  Actually, the full syntax is much more versatile
+  \begin{quote}
+      |<|\meta{overlay specification}|>|\opt{|'|}\opt{\meta{options}}\\
+      |<|\meta{overlay specification}|>|\opt{|'|}\opt{\marg{options A}}\opt{\marg{options B}}\opt{\marg{options C}}
+  \end{quote}
+  
+  If no options are present the \meta{overlay specification} will
+  be forwarded to one of the keys explained in the subsection above
+  -- depending on |ext/beamer shortcuts/first char|.
+  The optional |'| after |>| will invert the \meta{overlay specification}.
+  
+  If \meta{options} or \marg{options A} are present,
+  these will only applied on \meta{overlay specifications} (or the inverse of them with the |'|).
+  If two sets of options are present, they will be |\alt|ed, three options will be |\temporal|ed.
+  
+  The |'| will swap two sets of options while for three the first and the last will be swapped.
+\end{key}
+\begin{key}{/\tikzext/beamer shortcuts/enable first char=\marg{character}}
+  As the |<| character might lead to problems as it conflicts with the \tikzname\ shorthand
+  of specifying arrow tip sequences
+  (i.\,e. the famous |<->|\footnote{Though, remember, you can always write \texttt{arrows = <->}.})
+  and the \referenceLibraryandIndexO{graphs} library's own first char syntax
+  an alternative is presented here.
+  
+  This key enables a first char syntax with \meta{character} where the full syntax is the same as above:
+  \begin{quote}
+      \meta{character}|<|\meta{overlay specification}|>|\opt{|'|}\opt{\meta{options}}\\
+      \meta{character}|<|\meta{overlay specification}|>|\opt{|'|}\opt{\marg{options A}}\opt{\marg{options B}}\opt{\marg{options C}}
+  \end{quote}
+  
+  This means, the example diagram can be created in the following way.
+\begin{codeexample}[preamble=\usetikzlibrary{ext.beamer} \setbeamercovered{transparent},code only]
+\begin{tikzpicture}[ext/beamer shortcuts={enable first char=?}]
+\node (a) [?<2->]          {A};
+\node (b) [?<2->] at (1,2) {B};
+\path (a) edge[?<3->, bend right] (b);
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\subsubsection{Key Handler}
+Maybe this is a syntax that someone wants \dots
+\begin{ext_handler}{{<}|=|\meta{overlay specification}|>| \opt{value}}
+  This handler applies the key on \meta{overlay specification}.
+  If \meta{value} is missing, then the key is also used without a value.
+  For an empty value, use |{}|. If the \meta{value} contains comas or equal signs,
+  as always, you will need to protect those with |{}|.
+  \begin{key}{/\tikzext/beamer shortcuts/enable handler}
+    If |ext_| is too much, using this key activates the |.<| handler.
+    \begin{handler}{{.<}|=|\meta{overlay specification}|>| \opt{value}}
+      This handler is then an alias for the |.ext_<| handler.
+    \end{handler}
+  \end{key}
+\end{ext_handler}
+%\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-beamer.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	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -11,6 +11,7 @@
 %\includeonly{
 %  tikz-ext-manual-en-intro,
 %  tikz-ext-manual-en-library-arrows-plus,
+%  tikz-ext-manual-en-library-beamer,
 %  tikz-ext-manual-en-library-calendar-plus,
 %  tikz-ext-manual-en-library-layers,
 %  tikz-ext-manual-en-library-node-families,
@@ -92,6 +93,7 @@
 \end{center}
 
 \tikzsetfigurename{arrows-plus}     \include{tikz-ext-manual-en-library-arrows-plus}
+                                    \include{tikz-ext-manual-en-library-beamer}
 \tikzsetfigurename{calendar-plus}   \include{tikz-ext-manual-en-library-calendar-plus}
 \tikzsetfigurename{layers}          \include{tikz-ext-manual-en-library-layers}
 \tikzsetfigurename{node-families}   \include{tikz-ext-manual-en-library-node-families}
@@ -207,8 +209,14 @@
 \section*{Changelog}\addcontentsline{toc}{section}{Changelog}
 \begin{multicols}{2}\raggedright
 \noindent
-Version 0.6 (\the\year-\ifnum\month<10 0\fi\the\month-\ifnum\day<10 0\fi\the\day)
+Version 0.6.1 (\the\year-\ifnum\month<10 0\fi\the\month-\ifnum\day<10 0\fi\the\day)
 \begin{itemize}
+\item \addTikz{beamer}
+\item Added new tips |ext_Double Cap|, |ext_Double Stealth| and |ext_Double Triange|.
+\item Bugfix to |ext.arrows-plus|. \cite{GH18}
+\end{itemize}
+Version 0.6 (2025-03-18)
+\begin{itemize}
 \item Added \texttt{\textbackslash tikzextset},
             \texttt{\textbackslash tikzextversion} and
             \texttt{\textbackslash tikzextversionnumber}

Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-arrows.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-arrows.tex	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-arrows.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -14,8 +14,8 @@
 \begin{pgflibrary}{ext.arrows}
   This library adds arrows to \pgfname/\tikzname.
   
-  \inspiration{ArrowLoop-Q,ArrowHug-Q,ArrowUntipped1-Q,ArrowUntipped2-Q}
-              {ArrowLoop-A,ArrowHug-A,ArrowUntipped1-A,ArrowUntipped2-A}
+  \inspiration{ArrowLoop-Q,ArrowHug-Q,ArrowUntipped1-Q,ArrowUntipped2-Q,DoubleTipQ}
+              {ArrowLoop-A,ArrowHug-A,ArrowUntipped1-A,ArrowUntipped2-A,DoubleTipA}
 \end{pgflibrary}
 \begin{multicols}{2}
 The arrow tips of the \referenceLibraryandIndexO{arrows.meta} library always
@@ -273,6 +273,26 @@
 
     On |double| lines, the arrow tip will not look correct.
 \end{arrowtip}
+\begin{arrowtipsimple}{\extus Double Stealth}
+  This arrow tip is similar to the original \referenceArrowtipandIndexO{Stealth},
+  its back is left open so that it aligns neatly to a |double|d path.
+\end{arrowtipsimple}
+\begin{arrowtipsimple}{\extus Double Triangle}
+  This arrow tip is similar to the original \referenceArrowtipandIndexO{Triangle},
+  its back is left open so that it aligns neatly to a |double|d path.
+\end{arrowtipsimple}
+\begin{arrowtipsimple}{\extus Double Cap}
+  This arrow tip closes a |double|d line so that it not left open.
+\end{arrowtipsimple}
+\begin{codeexample}[preamble=\usepgflibrary{ext.arrows}]
+\begin{tikzpicture}
+\draw[
+  ext_Double Cap-ext_Double Stealth,
+  double distance=1cm,
+  line width=3mm
+] (0,0) to[bend left] (right:9);
+\end{tikzpicture}
+\end{codeexample}
 \end{multicols}
 \tikzset{external/export/.try=true}%
 \endinput

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	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-shapes-uncentered.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -93,7 +93,7 @@
 \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 |ext_uncentered rectangle| and \referenceKeyandIndex[/\pgfext/]{uncentered rectangle center} to its argument.
 \end{stylekey}
-\begin{stylekey}{/tikz/commutative diagrams/install uncentered rectangle in columns=\meta{column}}
+\begin{stylekey}{/tikz/commutative diagrams/install uncentered rectangle in column=\meta{column}}
 All nodes in column \meta{column} will be set to the |ext_uncentered rectangle| shape.
 \end{stylekey}
 \end{itemize}

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	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib	2025-04-13 20:30:27 UTC (rev 74934)
@@ -1,4 +1,3 @@
-'
 @Misc{NodeFam-Q,
   author  = {Holene},
   month   = apr,
@@ -5,6 +4,7 @@
   title   = {Dependent node size in {TikZ}},
   year    = {2017},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/107227/dependent-node-size-in-tikz/121054#121054:text/html},
+  groups  = {ext.node-families},
   url     = {https://tex.stackexchange.com/q/107227/16595},
   urldate = {2022-09-24},
 }
@@ -15,11 +15,11 @@
   title   = {Answer to \enquote{{Dependent} node size in {TikZ}}},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/107227/dependent-node-size-in-tikz/121054#121054:text/html},
+  groups  = {ext.node-families},
   url     = {https://tex.stackexchange.com/a/121054/16595},
   urldate = {2022-09-24},
 }
 
-'
 @Misc{TimerRect-Q,
   author  = {CrazyArm},
   month   = apr,
@@ -26,6 +26,7 @@
   title   = {Is {It} {Possible} to {Combine} {TikZ} {Distance} and {Line}-{To} {Operations}?},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/106558/is-it-possible-to-combine-tikz-distance-and-line-to-operations/106571#106571:text/html},
+  groups  = {ext.paths.timer},
   url     = {https://tex.stackexchange.com/q/106558/16595},
   urldate = {2022-09-24},
 }
@@ -36,12 +37,12 @@
   title      = {Answer to \enquote{{Is} {It} {Possible} to {Combine} {TikZ} {Distance} and {Line}-{To} {Operations}?}},
   year       = {2013},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/106558/is-it-possible-to-combine-tikz-distance-and-line-to-operations/106571#106571:text/html},
+  groups     = {ext.paths.timer},
   shorttitle = {Answer to "{Is} {It} {Possible} to {Combine} {TikZ} {Distance} and {Line}-{To} {Operations}?},
   url        = {https://tex.stackexchange.com/a/106571/16595},
   urldate    = {2022-09-24},
 }
 
-'
 @Misc{TimerPara-Q,
   author     = {cis},
   month      = may,
@@ -48,6 +49,7 @@
   title      = {{TikZ}: {How} to place a coordinate at parabola-path-position?},
   year       = {2020},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/543251/tikz-how-to-place-a-coordinate-at-parabola-path-position/621012#621012:text/html},
+  groups     = {ext.paths.timer},
   shorttitle = {{TikZ}},
   url        = {https://tex.stackexchange.com/q/543251/16595},
   urldate    = {2022-09-24},
@@ -59,12 +61,12 @@
   title      = {Answer to \enquote{{TikZ}: {How} to place a coordinate at parabola-path-position?}},
   year       = {2021},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/543251/tikz-how-to-place-a-coordinate-at-parabola-path-position/621012#621012:text/html},
+  groups     = {ext.paths.timer},
   shorttitle = {Answer to "{TikZ}},
   url        = {https://tex.stackexchange.com/a/621012/16595},
   urldate    = {2022-09-24},
 }
 
-'
 @Misc{Pattern-Q,
   author     = {knut},
   month      = mar,
@@ -87,7 +89,6 @@
   urldate    = {2022-09-24},
 }
 
-'
 @Misc{WeekNum-Q,
   author  = {Fence},
   month   = nov,
@@ -94,6 +95,7 @@
   title   = {Add week day to calendar},
   year    = {2019},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/517338/add-week-day-to-calendar/651888#651888:text/html},
+  groups  = {calendar},
   url     = {https://tex.stackexchange.com/q/517338/16595},
   urldate = {2022-09-24},
 }
@@ -104,6 +106,7 @@
   title   = {Answer to \enquote{{Add} week day to calendar}},
   year    = {2022},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/517338/add-week-day-to-calendar/651888#651888:text/html},
+  groups  = {calendar},
   url     = {https://tex.stackexchange.com/a/651888/16595},
   urldate = {2022-09-24},
 }
@@ -115,6 +118,7 @@
   title   = {{TikZ} calendar and conditional tests},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/140948/tikz-calendar-and-conditional-tests/141027#141027:text/html},
+  groups  = {calendar},
   url     = {https://tex.stackexchange.com/q/140948/16595},
   urldate = {2022-09-24},
 }
@@ -125,11 +129,11 @@
   title   = {Answer to \enquote{{TikZ} calendar and conditional tests}},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/140948/tikz-calendar-and-conditional-tests/141027#141027:text/html},
+  groups  = {calendar},
   url     = {https://tex.stackexchange.com/a/141027/16595},
   urldate = {2022-09-24},
 }
 
-'
 @Misc{CalMath-Q,
   author     = {cis},
   month      = dec,
@@ -136,6 +140,7 @@
   title      = {{TikZ} / calendar: {Set} the height of a monthly calendar},
   year       = {2018},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/464589/tikz-calendar-set-the-height-of-a-monthly-calendar/653146#653146:text/html},
+  groups     = {calendar},
   shorttitle = {{TikZ} / calendar},
   url        = {https://tex.stackexchange.com/q/464589/16595},
   urldate    = {2022-09-24},
@@ -147,6 +152,7 @@
   title      = {Answer to \enquote{{TikZ} / calendar: {Set} the height of a monthly calendar}},
   year       = {2022},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/464589/tikz-calendar-set-the-height-of-a-monthly-calendar/653146#653146:text/html},
+  groups     = {calendar},
   shorttitle = {Answer to "{TikZ} / calendar},
   url        = {https://tex.stackexchange.com/a/653146/16595},
   urldate    = {2022-09-24},
@@ -173,7 +179,6 @@
   urldate = {2022-09-24},
 }
 
-'
 @Misc{NodeFam-Ellipse,
   author  = {nkk},
   month   = jun,
@@ -180,11 +185,11 @@
   title   = {How to prevent tikz custom node fill from covering the text when using node-families library},
   year    = {2019},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/494862/how-to-prevent-tikz-custom-node-fill-from-covering-the-text-when-using-node-fami:text/html},
+  groups  = {ext.node-families},
   url     = {https://tex.stackexchange.com/q/494862/16595},
   urldate = {2022-09-24},
 }
 
-'
 @Misc{ShapeHeat-Q,
   author  = {boje},
   month   = may,
@@ -191,6 +196,7 @@
   title   = {Heatmap over country like {Google} {Map}},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/112929/heatmap-over-country-like-google-map/113004#113004:text/html},
+  groups  = {ext.shapes.*},
   url     = {https://tex.stackexchange.com/q/112929/16595},
   urldate = {2022-09-24},
 }
@@ -201,11 +207,11 @@
   title   = {Answer to \enquote{{Heatmap} over country like {Google} {Map}}},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/112929/heatmap-over-country-like-google-map/113004#113004:text/html},
+  groups  = {ext.shapes.*},
   url     = {https://tex.stackexchange.com/a/113004/16595},
   urldate = {2022-09-24},
 }
 
-'
 @Misc{ShapeSplitCircle-Q,
   author  = {Marco},
   month   = apr,
@@ -212,6 +218,7 @@
   title   = {{TikZ} - {Four} {Colored} {Circle} {Split}},
   year    = {2017},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/121686/tikz-four-colored-circle-split/121767#121767:text/html},
+  groups  = {ext.shapes.*},
   url     = {https://tex.stackexchange.com/q/121686/16595},
   urldate = {2022-09-24},
 }
@@ -222,14 +229,15 @@
   title   = {Answer to \enquote{{TikZ} - {Four} {Colored} {Circle} {Split}}},
   year    = {2013},
   file    = {Snapshot:https\://tex.stackexchange.com/questions/121686/tikz-four-colored-circle-split/121767#121767:text/html},
+  groups  = {ext.shapes.*},
   url     = {https://tex.stackexchange.com/a/121767/16595},
   urldate = {2022-09-24},
 }
 
-'
 @Online{ShapeSuperEllipse-Q,
   author     = {somenxavier},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/649144/an-oval-surrounded-a-long-text-inside-in-tikz-equivalent-cover-background-of/654759#654759:text/html},
+  groups     = {ext.shapes.*},
   month      = aug,
   title      = {An oval surrounded a *long text* inside in {TikZ} [equivalent cover background of {METAFUN}]},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -241,6 +249,7 @@
 @Online{ShapeSuperEllipse-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/649144/an-oval-surrounded-a-long-text-inside-in-tikz-equivalent-cover-background-of/654759#654759:text/html},
+  groups     = {ext.shapes.*},
   month      = aug,
   title      = {Answer to \enquote{An oval surrounded a *long text* inside in {TikZ} [equivalent cover background of {METAFUN}]}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -253,6 +262,7 @@
 @Online{ShapeCircleArrow-Q,
   author     = {projetmbc},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/95221/tikz-circled-arrow/95263#95263:text/html},
+  groups     = {ext.shapes.*},
   month      = jan,
   title      = {{TikZ} - \enquote{Circled} arrow},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -264,6 +274,7 @@
 @Online{ShapeCircleArrow-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/95221/tikz-circled-arrow/95263#95263:text/html},
+  groups     = {ext.shapes.*},
   month      = jan,
   title      = {Answer to \enquote{{TikZ} - \enquote{Circled} arrow}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -276,6 +287,7 @@
 @Online{ForeachUse-Q,
   author     = {Bar, Foo},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/110962/how-to-use-declared-tikz-functions-in-foreach-condition/110996#110996:text/html},
+  groups     = {foreach},
   month      = apr,
   title      = {How to use declared {TikZ} functions in {\textbackslash}foreach condition?},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -287,6 +299,7 @@
 @Online{ForeachUse-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/110962/how-to-use-declared-tikz-functions-in-foreach-condition/110996#110996:text/html},
+  groups     = {foreach},
   month      = apr,
   shorttitle = {Answer to "How to use declared {TikZ} functions in {\textbackslash}foreach condition?},
   title      = {Answer to \enquote{How to use declared {TikZ} functions in {\textbackslash}foreach condition?}},
@@ -296,10 +309,10 @@
   year       = {2013},
 }
 
-'
 @Online{CalFullWeek-Q,
   author     = {jd6},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/576673/full-weeks-in-tikz-calendar/660335#660335:text/html},
+  groups     = {calendar},
   month      = dec,
   title      = {Full weeks in Tikz Calendar},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -311,6 +324,7 @@
 @Online{CalFullWeek-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/576673/full-weeks-in-tikz-calendar/660335#660335:text/html},
+  groups     = {calendar},
   month      = oct,
   title      = {Answer to \enquote{Full weeks in Tikz Calendar}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -319,7 +333,6 @@
   year       = {2022},
 }
 
-'
 @Software{GH2,
   abstract = {{clockwise/counter clockwise does not seem to work reliably}},
   author   = {marmotghost},
@@ -330,10 +343,10 @@
   year     = {2022},
 }
 
-'
 @Online{UncRectForest-Q,
   author     = {projetmbc},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/661726/forest-automatic-setting-of-the-alignment-of-some-labels/661746#661746:text/html},
+  groups     = {ext.shapes.*},
   month      = oct,
   title      = {forest - automatic setting of the alignment of some labels},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -345,6 +358,7 @@
 @Online{UncRectForest-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/661726/forest-automatic-setting-of-the-alignment-of-some-labels/661746#661746:text/html},
+  groups     = {ext.shapes.*},
   month      = oct,
   title      = {Answer to \enquote{forest - automatic setting of the alignment of some labels}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -353,10 +367,10 @@
   year       = {2022},
 }
 
-'
 @Online{UncRectCD-Q,
   author     = {Szymankiewicz, Michał},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/657432/how-to-draw-a-mixing-rule-chemistry/657449#657449:text/html},
+  groups     = {ext.shapes.*},
   month      = sep,
   shorttitle = {How to draw a mixing rule?},
   title      = {How to draw a mixing rule? \#chemistry},
@@ -369,6 +383,7 @@
 @Online{UncRectCD-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/657432/how-to-draw-a-mixing-rule-chemistry/657449#657449:text/html},
+  groups     = {ext.shapes.*},
   month      = sep,
   shorttitle = {Answer to \enquote{How to draw a mixing rule?}},
   title      = {Answer to \enquote{How to draw a mixing rule? \#chemistry}},
@@ -378,10 +393,10 @@
   year       = {2022},
 }
 
-'
 @Online{ForeachNoSep-Q,
   author     = {daan},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/666263/string-conditional-tikz/666265#666265:text/html},
+  groups     = {foreach},
   month      = nov,
   title      = {String conditional tikz},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -393,6 +408,7 @@
 @Online{ForeachNoSep-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/666263/string-conditional-tikz/666265#666265:text/html},
+  groups     = {foreach},
   month      = nov,
   title      = {Answer to \enquote{String conditional tikz}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -401,10 +417,10 @@
   year       = {2022},
 }
 
-'
 @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},
+  groups     = {foreach},
   month      = oct,
   title      = {Is there a package to implement this style of "Register diagrams with field descriptions"},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -416,6 +432,7 @@
 @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},
+  groups     = {foreach},
   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},
@@ -424,7 +441,6 @@
   year       = {2022},
 }
 
-'
 @Software{spath3,
   abstract = {{TikZ}/{PGF} package for manipulating soft paths, includes the knots and calligraphy {TikZ} libraries.},
   author   = {Stacey, Andrew},
@@ -436,10 +452,10 @@
   year     = {2022},
 }
 
-'
 @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},
+  groups     = {ext.nodes},
   month      = dec,
   title      = {Draw two concentric circles and a shaded area with associated text},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -451,6 +467,7 @@
 @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},
+  groups     = {ext.nodes},
   month      = dec,
   title      = {Answer to \enquote{Draw two concentric circles and a shaded area with associated text}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -459,10 +476,10 @@
   year       = {2022},
 }
 
-'
 @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},
+  groups     = {ext.nodes},
   month      = feb,
   title      = {path with both mark connection node and arrow tip},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -474,6 +491,7 @@
 @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},
+  groups     = {ext.nodes},
   month      = dec,
   title      = {Answer to \enquote{path with both mark connection node and arrow tip}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -482,10 +500,10 @@
   year       = {2022},
 }
 
-'
 @Online{UncRectCD2-Q,
   author     = {sro5h},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/652540/achieve-desired-alignment-of-arrows-in-tikz-cd-diagram:text/html},
+  groups     = {ext.shapes.*},
   month      = jul,
   title      = {Achieve desired alignment of arrows in tikz-cd diagram},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -494,7 +512,6 @@
   year       = {2022},
 }
 
-'
 @Software{GH6,
   abstract = {{Latest version of ext.misc on CTAN appears to have a typo}},
   author   = {marmotghost},
@@ -505,10 +522,10 @@
   year     = {2023},
 }
 
-'
 @Online{ArrowLoop-Q,
   author     = {{IV}, Edgar A. Bering},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/565010/set-the-color-of-a-tikz-cd-glyph-arrow-tip-with-xelatex/681474#681474:text/html},
+  groups     = {ext.arrows},
   month      = oct,
   title      = {Set the color of a tikz-cd Glyph arrow tip with xelatex},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -520,6 +537,7 @@
 @Online{ArrowLoop-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/565010/set-the-color-of-a-tikz-cd-glyph-arrow-tip-with-xelatex/681474#681474:text/html},
+  groups     = {ext.arrows},
   month      = apr,
   title      = {Answer to \enquote{Set the color of a tikz-cd Glyph arrow tip with xelatex}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -528,10 +546,10 @@
   year       = {2023},
 }
 
-'
 @Online{ArrowHug-Q,
   author     = {{DC}, Alejandro},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/241074/better-fitting-line-to-node-in-tikz/241303#241303:text/html},
+  groups     = {ext.arrows},
   month      = apr,
   title      = {Better fitting line to node in {TiKZ}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -543,6 +561,7 @@
 @Online{ArrowHug-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/241074/better-fitting-line-to-node-in-tikz/241303#241303:text/html},
+  groups     = {ext.arrows},
   month      = apr,
   title      = {Answer to \enquote{Better fitting line to node in {TiKZ}}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -551,10 +570,10 @@
   year       = {2015},
 }
 
-'
 @Online{ArrowUntipped1-Q,
   author     = {Christian},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/111051/tikz-arrow-tip-is-displaced?noredirect=1&lq=1:text/html},
+  groups     = {ext.arrows},
   month      = apr,
   title      = {{TikZ} arrow tip is displaced},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -566,6 +585,7 @@
 @Online{ArrowUntipped1-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/111051/tikz-arrow-tip-is-displaced?noredirect=1&lq=1:text/html},
+  groups     = {ext.arrows},
   month      = apr,
   title      = {Answer to \enquote{{TikZ} arrow tip is displaced}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -574,10 +594,10 @@
   year       = {2013},
 }
 
-'
 @Online{ArrowUntipped2-Q,
   author     = {Hlavacek, Jan},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/11871/modifying-and-o-style-tikz-arrows-so-that-they-are-centered-at-the-end-of?noredirect=1&lq=1:text/html},
+  groups     = {ext.arrows},
   month      = feb,
   title      = {Modifying \texttt{*} and \texttt{o} style tikz arrows so that they are centered at the end of line},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -589,6 +609,7 @@
 @Online{ArrowUntipped2-A,
   author     = {Qrrbrbirlbel},
   file       = {Snapshot:https\://tex.stackexchange.com/questions/11871/modifying-and-o-style-tikz-arrows-so-that-they-are-centered-at-the-end-of?noredirect=1&lq=1:text/html},
+  groups     = {ext.arrows},
   month      = sep,
   title      = {Answer to \enquote{Modifying \texttt{*} and \texttt{o} style tikz arrows so that they are centered at the end of line}},
   titleaddon = {{TeX} - {LaTeX} Stack Exchange},
@@ -648,4 +669,62 @@
   month  = jan,
 }
 
+ at Online{DoubleTipQ,
+  author     = {lucky1928},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/722350/add-customize-line-header-not-smooth-connected/722413#722413:text/html},
+  groups     = {ext.arrows},
+  month      = jul,
+  note       = {{ZSCC}: {NoCitationData}[s0]},
+  title      = {add customize line header not smooth connected},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/q/722350/16595},
+  urldate    = {2025-03-28},
+  year       = {2024},
+}
+
+ at Online{DoubleTipA,
+  author     = {Qrrbrbirlbel},
+  file       = {Snapshot:https\://tex.stackexchange.com/questions/722350/add-customize-line-header-not-smooth-connected/722413#722413:text/html},
+  groups     = {ext.arrows},
+  month      = jul,
+  note       = {{ZSCC}: {NoCitationData}[s0]},
+  title      = {Answer to \enquote{add customize line header not smooth connected}},
+  titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+  url        = {https://tex.stackexchange.com/a/722413/16595},
+  urldate    = {2025-03-28},
+  year       = {2024},
+}
+
+ at Software{GH18,
+  abstract = {{TikZExtensions}},
+  author   = {Qrrbrbirlbel},
+  month    = mar,
+  note     = {{ZSCC}: {NoCitationData}[s0] original-date: 2022-08-13T23:42:55Z},
+  title    = {arrow shifting for start tip sequence doesn't work and shift amount needs to be expanded},
+  url      = {https://github.com/Qrrbrbirlbel/tikz-extensions},
+  urldate  = {2025-03-29},
+  year     = {2025},
+}
+
+ at Article{aobstikzmanual,
+  author = {Claudio Fiandrino},
+  title  = {The aobs-tikz package},
+  year   = {2024},
+  month  = apr,
+}
+
 @Comment{jabref-meta: databaseType:bibtex;}
+
+ at Comment{jabref-meta: grouping:
+0 AllEntriesGroup:;
+1 StaticGroup:ext.shapes.*\;0\;1\;\;\;\;;
+1 StaticGroup:ext.node-families\;0\;1\;\;\;\;;
+1 StaticGroup:ext.arrows\;0\;1\;\;\;\;;
+1 StaticGroup:ext.arrows-plus\;0\;1\;\;\;\;;
+1 StaticGroup:calendar\;0\;0\;\;\;\;;
+1 StaticGroup:foreach\;0\;1\;\;\;\;;
+1 StaticGroup:ext.nodes\;0\;0\;\;\;\;;
+1 StaticGroup:ext.paths.timer\;0\;0\;\;\;\;;
+}
+
+ at Comment{jabref-meta: groups-search-syntax-version:6.0-alpha_1}

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

Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.arrows.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.arrows.code.tex	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.arrows.code.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -11,8 +11,8 @@
   \input tikzext-util.tex
 \fi
 
-\pgfqkeys{/pgf/@arrows decl}{
-  /tikz-ext/@arrows decl/clone/.code={%
+\pgfqkeys{/tikz-ext/@arrows decl}{
+  clone/.code={%
     \pgfutil at namelet{pgf at decl@arrow at code}{pgf at ar@code@#1}%
     \pgfutil at namelet{pgf at decl@arrow at defaults}{pgf at ar@defaults@#1}%
     \pgfutil at namelet{pgf at decl@arrow at setup}{pgf at ar@setup@#1}%
@@ -20,13 +20,13 @@
     \pgfutil at namelet{pgf at decl@arrow at par}{pgf at ar@par@#1}%
     \pgfutil at namelet{pgf at decl@arrow at cache}{pgf at ar@do at cache@#1}%
   },
-  /tikz-ext/@arrows decl/append setup code/.code=
+  append setup code/.code=
     \begingroup
       \pgfutil at toks@\expandafter{\pgf at decl@arrow at setup#1}%
     \expandafter\endgroup
     \expandafter\def\expandafter\pgf at decl@arrow at setup\expandafter
       {\the\pgfutil at toks@ },
-  % /tikz-ext/@arrows decl/append parameters/.code=
+  % append parameters/.code=
   %   \begingroup
   %     \show\pgf at decl@arrow at par
   %     \pgfutil at toks@\expandafter{\pgf at decl@arrow at par#1}%
@@ -295,6 +295,82 @@
   }
 }
 
+\pgfdeclarearrow{
+  name = ext_Double Cap@,
+  defaults = {length = +0pt +1 +1, width = +0pt +1 +0},
+  setup code={%
+    \pgfarrowssettipend{+0pt}%
+    \pgfarrowssetbackend{+-\pgfarrowlength}%
+    \pgfarrowssetlineend{+-.5\pgfarrowlength}%
+    \pgfarrowsupperhullpoint{+0pt}{+.5\pgfarrowwidth}%
+    \pgfarrowsupperhullpoint{+-\pgfarrowlength}{+.5\pgfarrowwidth}%
+    \pgfarrowssavethe\pgfarrowwidth
+    \pgfarrowssavethe\pgfarrowlength
+  },
+  drawing code={%
+    \pgfsetdash{}{+0pt}%
+    \ifpgfarrowroundcap\pgfsetroundcap\fi
+    \pgfpathmoveto{\pgfqpoint{-.5\pgfarrowlength}
+      {\dimexpr.5\pgfarrowwidth\ifpgfarrowroundcap-.5\pgfarrowlength\fi}}%
+    \pgfpathlineto{\pgfqpoint{-.5\pgfarrowlength}
+      {\dimexpr-.5\pgfarrowwidth\ifpgfarrowroundcap+.5\pgfarrowlength\fi}}%
+    \pgfsetlinewidth{+\pgfarrowlength}%
+    \pgfusepathqstroke
+  },
+  parameters={\the\pgfarrowlength,\the\pgfarrowwidth,\ifpgfarrowroundcap c\fi}}
+
+\pgfdeclarearrow{
+  name = ext_Double Stealth@,
+  /tikz-ext/@arrows decl/clone = Stealth,
+  /tikz-ext/@arrows decl/append setup code = {%
+    \pgfmathsetlengthmacro\lwocenter
+      {.5*\pgfinnerlinewidth+.25*(\pgflinewidth-\pgfinnerlinewidth)}%
+    \advance\pgfarrowinset by\pgf at yc % undo weird things
+    \ifdim\pgfarrowinset=0pt \def\shortenedinset{0pt}%
+    \else \pgfmathsetlengthmacro\shortenedinset
+      {\pgfarrowinset/\pgfutil at tempdimb*(\pgfutil at tempdimb-\lwocenter)}\fi
+    \pgfarrowssetlineend{\shortenedinset}%
+    \pgfarrowssave\lwocenter
+    \pgfarrowssave\shortenedinset
+  },
+  drawing code = {%
+    \pgfsetdash{}{+0pt}%
+    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
+    \ifdim\pgfarrowlinewidth=\pgflinewidth
+      \else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
+    \ifdim\shortenedinset=0pt
+      \pgfsetrectcap
+      \pgfpathmoveto{\pgfqpoint{\shortenedinset}{-\lwocenter}}%
+    \else
+      \pgfsetbuttcap
+      \pgfpathmoveto{\pgfqpoint
+        {\shortenedinset\advance\pgf at x-.5\pgfarrowlinewidth}{-\lwocenter}}%
+      \pgfpathlineto{\pgfqpoint{\shortenedinset}{-\lwocenter}}%
+    \fi
+    \pgfpathlineto{\pgfqpoint{\pgf at ya}{-\pgfutil at tempdimb}}%
+    \pgfpathlineto{\pgfqpoint{\pgfutil at tempdima\advance\pgf at x by\pgf at ya}{0pt}}%
+    \pgfpathlineto{\pgfqpoint{\pgf at ya}{\pgfutil at tempdimb}}%
+    \pgfpathlineto{\pgfqpoint{\shortenedinset}{\lwocenter}}%
+    \ifdim\shortenedinset=0pt \else
+      \pgfpathlineto{\pgfqpoint
+        {\shortenedinset\advance\pgf at x-.5\pgfarrowlinewidth}{\lwocenter}}%
+    \fi
+    \ifpgfarrowopen \pgfusepathqstroke\else
+      \ifdim\pgfarrowlinewidth>0pt \pgfusepathqfillstroke
+                             \else \pgfusepathqfill \fi \fi
+  },
+  defaults = {
+    length  = +3pt +4.5 +.8,
+    width'  = +0pt +1.75,
+    inset'  = +0pt +0.425,
+    line width = +0pt +1 +1,
+  },
+}%
+
+\pgfdeclarearrow{name = ext_Double Cap,     means = {ext_Double     Cap@[quick]}}
+\pgfdeclarearrow{name = ext_Double Stealth, means = {ext_Double Stealth@[open, quick]}}
+\pgfdeclarearrow{name = ext_Double Triangle,means = {ext_Double Stealth[inset=+0pt]}}
+
 %%% Compatibility
 \pgfqkeys{/pgf/arrow keys}{radius/.style={/pgf/arrow keys/inset={#1}}} % should be removed after v0.6
 \tikzextset{

Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -6,10 +6,32 @@
 % 2. under the GNU Free Documentation License.
 %
 
-\def\tikzextversion{0.6}
-\def\tikzextversionnumber{8}
+\def\tikzextversion{0.6.1}
+\def\tikzextversionnumber{9}
 \def\tikzextset{\pgfqkeys{/tikz/ext}}
 \def\pgfextset{\pgfqkeys{/pgf/ext}}
+\pgfextset{
+  pgf/.code=\pgfset{#1},
+  .code=\pgfextset{#1}%
+}
+\tikzextset{
+  tikz/.code=\tikzset{#1},
+  .code=\tikzextset{#1},
+  .unknown/.code={%
+    \pgfextset{\pgfkeyscurrentname/.try={#1}}%
+    \unless\ifpgfkeyssuccess
+      \pgfutil at packageerror{tikz-ext}{%
+        I neither know '/tikz/ext/\pgfkeyscurrentname' nor
+        '/pgf/ext/\pgfkeyscurrentname' to which you passed '#1'.%
+      }%
+    \fi
+  },
+  /pgfplots/ext/.code=\tikzextset{#1},
+  /pgfplots/ext/.unknown/.code={%
+    \tikzextset{\pgfkeyscurrentname={#1}}%
+  }
+}
+% Compatibility
 \gdef\tikzextutil at compatwarning@counter{0}
 \def\tikzextutil at compatmaybewarning#1#2#3{%
   \ifnum\tikzextutil at compatwarning@counter<25
@@ -139,19 +161,15 @@
     \pgfutil at namelet{pgf at anchor@#1@\tikzext at temp}{pgf at anchor@ext_#1@\tikzext at temp}}%
   \pgfutil at for\tikzext at temp:=bbg,bg,fbg,fg,ffg\do{%
     \pgfutil at namelet{pgf at sh@\tikzext at temp @#1}{pgf at sh@\tikzext at temp @ext_#1}}}
-\pgfextset{
-  pgf/.code=\pgfset{#1},
-  .code=\pgfextset{#1}%
-}
+
 \tikzextset{
-  tikz/.code=\tikzset{#1},
-  .code=\tikzextset{#1},
-  .search also={/pgf/ext,/pgf},
-  %
   compat/.is choice, compat/.default=warn,
   /tikz-ext/compat/add library/.code 2 args={%
-    \tikzextset{compat/#1/.is choice, compat/#1/.default=#2}%
-    \pgfutil at for\tikzext at temp:=pre 0.6,0.6,newest,warn\do{%
+    \tikzextset{
+      compat/#1/.is choice,
+      compat/#1/.default=#2,
+      compat/#1/0.6.1/.style={/tikz/ext/compat/#1/0.6}}%
+    \pgfutil at for\tikzext at temp:=pre 0.6,0.6,0.6.1,newest,warn\do{%
       \pgfkeys at expanded{%
         \noexpand\tikzextset{%
           compat/\tikzext at temp/.append style=%
@@ -161,12 +179,8 @@
         {\noexpand\pgfkeyssetvalue{/tikz/ext/compat/#1}{\tikzext at temp}}%
     }%
   },
-  % /handlers/.ext_compat to warn/.code={%
-  %   \edef\tikz at temp{\expandafter\tikzext at compat@stripext\pgfkeyscurrentpath\tikzext at stop}%
-  %   \tikzextset{compat/#1/warn/.append code/.expanded=\noexpand}
-  % },
 }
-% \def\tikzext at compat@stripext#1/ext/#2\tikzext at stop{#1/#2}
+
 \def\tikzext at temp#1{%
   \pgfkeysedef{/tikz/ext/compat/#1}{%
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/arrows}                {#1}%
@@ -174,7 +188,7 @@
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/misc}                  {#1}%
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/nodes}                 {#1}%
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/node-families}         {#1}%
-    \noexpand\pgfkeyssetvalue{/tikz/ext/compat/patterns.images}        {#1}%
+    \noexpand\pgfkeyssetvalue{/tikz/ext/compat/patterns.images}       {#1}%
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/paths.arcto}           {#1}%
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/paths.ortho}           {#1}%
     \noexpand\pgfkeyssetvalue{/tikz/ext/compat/paths.timer}           {#1}%
@@ -189,6 +203,7 @@
   }}
 \tikzext at temp{pre 0.6}
 \tikzext at temp{0.6}
+\tikzextset{compat/0.6.1/.style={/tikz/ext/compat/0.6}}
 \tikzext at temp{newest}
 \tikzext at temp{warn}
 \tikzextset{compat=warn}

Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.arrows-plus.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.arrows-plus.code.tex	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.arrows-plus.code.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -15,45 +15,42 @@
 %
 % Stores the shift amount into \tikzext at arrow@shift@
 %
-\def\tikzext at arrow@evalshift#1{%
+\def\tikzext at arrow@evalshift#1#2#3{%
   \pgf at arrow@compute at shortening#1%
   \ifcase\pgfkeysvalueof{/tikz/ext/arrow/shift mode}\relax
-    \def\tikzext at arrow@shift@{0pt}%
+    \def#3{0pt}%
   \or
-    \pgfmathsetlengthmacro\tikzext at arrow@shift@
-      {(\pgfkeysvalueof{/tikz/ext/arrow shift factor})*-\pgf at xb}%
+    \pgfmathsetlengthmacro#3%
+      {(\pgfkeysvalueof{/tikz/ext/arrow shift factor #2})*-\pgf at xb}%
   \or
-    \pgfmathsetlengthmacro\tikzext at arrow@shift@
-      {(\pgfkeysvalueof{/tikz/ext/arrow shift factor})*-\pgf at xa}%
+    \pgfmathsetlengthmacro#3%
+      {(\pgfkeysvalueof{/tikz/ext/arrow shift factor #2})*-\pgf at xa}%
   \fi
 }
 
 
 % For bended arrows the shifting can't simply be done by a transformation
-% it must be done by the arrow system itself via the sep key.
-% For this to work as expected, the sep will need to be sneaked into
-% the options of the first or last arrow tip.
-\def\tikzext at arrow@sneakstart#1\pgf at stop{%
-  \unless\ifdim\tikzext at arrow@shift@=0pt
-    \def\pgf at start@tip at sequence{\pgf at arrow@handle{_}{\pgfarrowsep=\tikzext at arrow@shift@\relax}#1}%
+\def\tikzext at arrow@sneak#1\pgf at stop#2#3{% TODO
+  \unless\ifdim#3=0pt
+    \def#2{#1\pgf at arrow@handle{_}{\pgfarrowsep=#3\relax}}%
   \fi
 }
-\def\tikzext at arrow@sneakend#1\pgf at stop{%
-  \unless\ifdim\tikzext at arrow@shift@=0pt
-    \def\pgf at end@tip at sequence{#1\pgf at arrow@handle{_}{\pgfarrowsep=\tikzext at arrow@shift@\relax}}%
-  \fi
-}
 
 %
 % Arrow keys
 %
+\pgfkeysdef{/tikz/ext/pos > angle}{%
+  \pgfkeysvalueof{/tikz/pos/. at cmd}(#1-\tikz at timer@start at angle)/(\tikz at timer@end at angle-\tikz at timer@start at angle)\pgfeov}
 \tikzextset{%
   every softpath arrows/.code=
     \pgfkeysdef{/tikz/pos >}{\pgfkeysvalueof{/tikz/pos/. at cmd}##1\pgfeov}%
     \pgfkeysdef{/tikz/pos <}{\pgfkeyssetvalue{/tikz/ext/pos <}{##1}},
   every arc arrows/.code=
+    \pgfkeysdef{/tikz/pos > angle}{\pgfkeysvalueof{/tikz/ext/pos > angle/. at cmd}##1\pgfeov}%
+    \pgfkeysdef{/tikz/pos < angle}{\pgfkeysvalueof{/tikz/ext/pos < angle/. at cmd}##1\pgfeov}%
     \pgfkeysdef{/tikz/pos >}{\pgfkeysvalueof{/tikz/pos/. at cmd}##1\pgfeov}%
     \pgfkeysdef{/tikz/pos <}{\pgfkeyssetvalue{/tikz/ext/pos <}{##1}},
+  pos < angle/.code=\pgfkeyssetvalue{/tikz/ext/pos <}{(#1-\tikz at timer@start at angle)/(\tikz at timer@end at angle-\tikz at timer@start at angle)},
   softpath arrows/.default=,
   softpath arrows/.code={%
     \begingroup
@@ -68,12 +65,12 @@
           \pgfinterruptpath
           \pgfscope
             \pgfutil at ifxempty\pgf at start@tip at sequence{}{%
-              \tikzext at arrow@evalshift\pgf at start@tip at sequence
-              \expandafter\tikzext at arrow@sneakstart\pgf at start@tip at sequence\pgf at stop
+              \tikzext at arrow@evalshift\pgf at start@tip at sequence{start}\tikzext at arrow@shift at start
+              \expandafter\tikzext at arrow@sneak\pgf at start@tip at sequence\pgf at stop\pgf at start@tip at sequence\tikzext at arrow@shift at start
             }%
             \pgfutil at ifxempty\pgf at end@tip at sequence{}{%
-              \tikzext at arrow@evalshift\pgf at end@tip at sequence
-              \expandafter\tikzext at arrow@sneakend\pgf at end@tip at sequence\pgf at stop
+              \tikzext at arrow@evalshift\pgf at end@tip at sequence{end}\tikzext at arrow@shift at end
+              \expandafter\tikzext at arrow@sneak\pgf at end@tip at sequence\pgf at stop\pgf at end@tip at sequence\tikzext at arrow@shift at end
             }%
             \pgfset{tips}%
             \pgftransformreset
@@ -98,12 +95,12 @@
             \pgfinterruptpath
             \pgfscope
               \pgfutil at ifxempty\pgf at start@tip at sequence{}{%
-                \tikzext at arrow@evalshift\pgf at start@tip at sequence
-                \expandafter\tikzext at arrow@sneakstart\pgf at start@tip at sequence\pgf at stop
+                \tikzext at arrow@evalshift\pgf at start@tip at sequence{start}\tikzext at arrow@shift at start
+                \expandafter\tikzext at arrow@sneak\pgf at start@tip at sequence\pgf at stop\pgf at start@tip at sequence\tikzext at arrow@shift at start
               }%
               \pgfutil at ifxempty\pgf at end@tip at sequence{}{%
-                \tikzext at arrow@evalshift\pgf at end@tip at sequence
-                \expandafter\tikzext at arrow@sneakend\pgf at end@tip at sequence\pgf at stop
+                \tikzext at arrow@evalshift\pgf at end@tip at sequence{end}\tikzext at arrow@shift at end
+                \expandafter\tikzext at arrow@sneak\pgf at end@tip at sequence\pgf at stop\pgf at end@tip at sequence\tikzext at arrow@shift at end
               }%
               \pgfset{tips}%
               \tikzext at arrow@arcpath
@@ -130,7 +127,10 @@
   arrow shift mode/length until line end/.code=\pgfkeyssetvalue{/tikz/ext/arrow/shift mode}{2},
   arrow shift mode/line end/.code             =\pgfkeyssetvalue{/tikz/ext/arrow/shift mode}{2},
   arrow shift mode=total length,
-  arrow shift factor/.initial=.5,
+  arrow shift factor/.code=\pgfkeyssetvalue{/tikz/ext/arrow shift factor start}{#1}%
+                           \pgfkeyssetvalue{/tikz/ext/arrow shift factor end}{#1},
+  arrow shift factor start/.initial=.5,
+  arrow shift factor end/.initial=.5
 }
 %
 % Arrow pics
@@ -145,8 +145,8 @@
       \pgfutil at ifxempty\tikzext at temp{}{%
         \pgfsetarrowsend{#1}%
       }%
-      \tikzext at arrow@evalshift\pgf at end@tip at sequence
-      \pgftransformxshift{+-\tikzext at arrow@shift@}%
+      \tikzext at arrow@evalshift\pgf at end@tip at sequence{end}\tikzext at arrow@shift at end
+      \pgftransformxshift{+-\tikzext at arrow@shift at end}%
       \pgf at arrow@draw at arrow\pgf at end@tip at sequence\pgf at xb
   },
   pics/ext/softpath arrow/.default=,
@@ -167,12 +167,12 @@
         \pgfsetarrows{#1}%
       }%
       \pgfutil at ifxempty\pgf at start@tip at sequence{}{%
-        \tikzext at arrow@evalshift\pgf at start@tip at sequence
-        \expandafter\tikzext at arrow@sneakstart\pgf at start@tip at sequence\pgf at stop
+        \tikzext at arrow@evalshift\pgf at start@tip at sequence{start}\tikzext at arrow@shift at start
+        \expandafter\tikzext at arrow@sneak\pgf at start@tip at sequence\pgf at stop\pgf at start@tip at sequence\tikzext at arrow@shift at start
       }%
       \pgfutil at ifxempty\pgf at end@tip at sequence{}{%
-        \tikzext at arrow@evalshift\pgf at end@tip at sequence
-        \expandafter\tikzext at arrow@sneakend\pgf at end@tip at sequence\pgf at stop
+        \tikzext at arrow@evalshift\pgf at end@tip at sequence{end}\tikzext at arrow@shift at end
+        \expandafter\tikzext at arrow@sneak\pgf at end@tip at sequence\pgf at stop\pgf at end@tip at sequence\tikzext at arrow@shift at end
       }%
       \pgfsyssoftpath at getcurrentpath\tikz at temp
       \pgfprocesssplitsubpath\tikz at temp
@@ -279,9 +279,9 @@
   \scope[{#2}]%
     \pgfsetarrowsend{#3}%
     \pgfutil at ifxempty\pgf at end@tip at sequence{}{%
-      \tikzext at arrow@evalshift\pgf at end@tip at sequence
+      \tikzext at arrow@evalshift\pgf at end@tip at sequence{end}\tikzext at arrow@shift at end
       \pgftransformxscale{#1}%
-      \pgftransformxshift{+-\tikzext at arrow@shift@}%
+      \pgftransformxshift{+-\tikzext at arrow@shift at end}%
       \pgf at arrow@draw at arrow\pgf at end@tip at sequence\pgf at xb
     }%
   \endscope
@@ -302,8 +302,8 @@
     \scope[{#2}]%
       \pgfsetarrowsend{#3}%
       \pgfutil at ifxempty\pgf at end@tip at sequence{}{%
-        \tikzext at arrow@evalshift\pgf at end@tip at sequence
-        \expandafter\tikzext at arrow@sneakend\pgf at end@tip at sequence\pgf at stop
+        \tikzext at arrow@evalshift\pgf at end@tip at sequence{end}\tikzext at arrow@shift at end
+        \expandafter\tikzext at arrow@sneak\pgf at end@tip at sequence\pgf at stop\pgf at end@tip at sequence\tikzext at arrow@shift at end
         \ifdim\pgf at decorate@inputsegmenttime pt=1pt % something weird for 1.0
           \def\pgf at decorate@inputsegmenttime{1}%
         \fi

Added: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -0,0 +1,366 @@
+% Copyright 2024 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.
+%
+
+\unless\ifcsname tikzextset\endcsname
+  \input tikzext-util.tex
+\fi
+
+\unless\ifcsname ifmemoizing\endcsname
+  \expandafter\newif\csname ifmemoizing\endcsname
+\fi
+
+\let\tikzext at maxbb@list\pgfutil at gobble
+\def\tikzext at maxbb@write{%
+  \unless\ifx\tikzext at maxbb@list\pgfutil at gobble
+    \pgfutil at for\tikzext at temp:=\tikzext at maxbb@list\do{%
+      % if next is not existing (because of memoize)
+      % we just write the prev again
+      \immediate\write\pgfutil at auxout{%
+        \noexpand\expandafter\gdef\noexpand\csname tikzext at maxbb@\tikzext at temp @prev\endcsname{%
+          \csname tikzext at maxbb@\tikzext at temp @%
+            \ifcsname tikzext at maxbb@\tikzext at temp @next\endcsname next\else prev\fi
+          \endcsname
+        }%
+      }%
+    }%
+  \fi
+}
+\def\tikzext at maxbb@addtolist#1{%
+  \edef\pgf at marshal{\noexpand\pgfutil at in@{,#1,}{,\tikzext at maxbb@list,}}%
+  \pgf at marshal
+  \unless\ifpgfutil at in@
+    \xdef\tikzext at maxbb@list{\tikzext at maxbb@list,#1}%
+  \fi
+}
+\def\tikzext at maxbb@if#1#2#3{%
+  \ifcsname tikzext at maxbb@#1\endcsname#2\else#3\fi
+}
+\tikzextset{
+  ignore line width/.value forbidden,
+  ignore line width/.style={
+    /pgf/local bounding box=tikzext at ilw,
+    /tikz/execute at end scope/.expanded={%
+      \global\pgf at picminx=\the\pgf at picminx\relax
+      \global\pgf at picmaxx=\the\pgf at picmaxx\relax
+      \global\pgf at picminy=\the\pgf at picminy\relax
+      \global\pgf at picmaxy=\the\pgf at picmaxy\relax
+    },
+    /tikz/execute at end scope={%
+      \pgf at protocolsizes\pgf at lbb@minx at tikzext@ilw\pgf at lbb@miny at tikzext@ilw
+      \pgf at protocolsizes\pgf at lbb@maxx at tikzext@ilw\pgf at lbb@maxy at tikzext@ilw
+    }%
+  },
+  max bounding box/.value required,
+  max bounding box/.code={%
+    \tikzext at maxbb@if{#1 at prev}{% not the first run
+      \pgfkeys at expanded{\noexpand\tikzext at maxbb@setbb\csname tikzext at maxbb@#1 at prev\endcsname}%
+    }{% first run
+      \ifmemoizing
+        \mmzAbort
+      \fi
+    }%
+    \tikzext at maxbb@if{#1 at next}{% not the first picture
+      \pgfkeys at expanded{\noexpand\tikzext at maxbb@setbb\csname tikzext at maxbb@#1 at next\endcsname}%
+    }{% first picture
+      \tikzext at maxbb@addtolist{#1}%
+    }%
+    \ifmemoizing
+      \mmzset{context=\csname tikzext at maxbb@#1 at prev\endcsname}%
+      \gtoksapp\mmzCCMemo{%
+        \csname tikzext at maxbb@addtolist\endcsname{#1}%
+      }%
+    \fi
+    \tikzset{
+      execute at end picture={%
+        \tikzext at maxbb@setnext{#1}%
+        \tikzext at maxbb@if{#1 at prev}{% not the first run
+          % if memoizing, check whether picture is bigger/different then prev
+          \ifmemoizing
+            \expandafter\ifx\csname tikzext at maxbb@#1 at next\expandafter\endcsname\csname tikzext at maxbb@#1 at prev\endcsname
+              % it's the same  
+            \else
+              % it is not the same
+              \mmzAbort
+            \fi
+          \fi
+        }{% first run
+        }%
+      }%
+    }%
+  }
+}
+\def\tikzext at maxbb@setbb#1#2#3#4{%
+  \ifdim#1pt<\pgf at picminx\global\pgf at picminx#1pt\fi
+  \ifdim#3pt>\pgf at picmaxx\global\pgf at picmaxx#3pt\fi
+  \ifdim#2pt<\pgf at picminy\global\pgf at picminy#2pt\fi
+  \ifdim#4pt>\pgf at picmaxy\global\pgf at picmaxy#4pt\fi}
+\def\tikzext at maxbb@setnext#1{%
+  \expandafter\xdef\csname tikzext at maxbb@#1 at next\endcsname
+    {{\pgf at sys@tonumber\pgf at picminx}{\pgf at sys@tonumber\pgf at picminy}%
+     {\pgf at sys@tonumber\pgf at picmaxx}{\pgf at sys@tonumber\pgf at picmaxy}}%
+}%
+
+\ifcsname @ifclassloaded\endcsname % latex?
+  \AtEndDocument{\tikzext at maxbb@write}%
+  \@ifclassloaded{beamer}{% beamer?
+  }{%
+    \expandafter\endinput
+  }%
+\else
+  \pgfutil at everybye\expandafter{\the\pgfutil at everybye\tikzext at maxbb@write}%
+  \expandafter\endinput
+\fi
+
+\newcounter{tikzextbb}
+\resetcounteronoverlays{tikzextbb}
+\tikzextset{
+  sync bounding box/.value forbidden,
+  sync bounding box/.code={%
+    \stepcounter{tikzextbb}%
+    \tikzextset{max bounding box={beamer-\the\value{tikzextbb}}}%
+  }
+}
+
+\long\def\tikzext at beamerfunction@alt      #1#2{\alt      <#1>{\tikz@@command at path#2;}{\tikz at path@do at at@end}}
+\long\def\tikzext at beamerfunction@uncover  #1#2{\uncover  <#1>{\tikz@@command at path#2;}\tikz at path@do at at@end}
+\long\def\tikzext at beamerfunction@visible  #1#2{\visible  <#1>{\tikz@@command at path#2;}\tikz at path@do at at@end}
+\long\def\tikzext at beamerfunction@invisible#1#2{\invisible<#1>{\tikz@@command at path#2;}\tikz at path@do at at@end}
+\let\tikzext at beamerfunction\tikzext at beamerfunction@alt
+
+% Overwriting original dispatchers
+\long\def\tikz at eargnormalsemicolon<#1>#2;{\tikzext at beamerfunction{#1}{#2}}%
+\begingroup
+  \catcode`\;=\active
+  \long\global\def\tikz at eargactivesemicolon<#1>#2;{\tikzext at beamerfunction{#1}{#2}}%
+\endgroup
+
+\let\tikzext at beameroption\relax
+\def\tikzext at setbeameroption#1{%
+  \tikz at addoption{\tikzext at beameroption}%
+  \def\tikzext at beameroption{%
+    #1%
+    \let\tikzext at beameroption\relax
+  }%
+}
+\tikzextset{
+  /utils/ext/only/.code 2 args={\only<#1>{\pgfkeysalso{#2}}},
+  /utils/ext/alt/.code args={#1#2#3}{\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+  /utils/ext/temporal/.code n args={4}{\temporal<#1>{\pgfkeysalso{#2}{\pgfkeysalso{#3}{\pgfkeysalso{#4}}}}},
+  beamer function/.is choice,
+  beamer function/original/.code =\let\tikzext at beamerfunction\tikzext at beamerfunction@alt,
+  beamer function/alt/.code      =\let\tikzext at beamerfunction\tikzext at beamerfunction@alt,
+  beamer function/only/.code     =\let\tikzext at beamerfunction\tikzext at beamerfunction@alt,
+  beamer function/uncover/.code  =\let\tikzext at beamerfunction\tikzext at beamerfunction@uncover,
+  beamer function/visible/.code  =\let\tikzext at beamerfunction\tikzext at beamerfunction@visible,
+  beamer function/invisible/.code=\let\tikzext at beamerfunction\tikzext at beamerfunction@invisible,
+  uncover/.default=all,
+  uncover/.code={%
+    \tikzext at setbeameroption{%
+      \beamer at noargsonslide<#1>%
+      \aftergroup\beamer at noargsonslide
+    }%
+  },
+  cover/.default=all,
+  cover/.code=%
+    \tikzext at setbeameroption{%
+      \beamer at endpause
+      \beamer at alt<#1>{\beamer at startcovered\gdef\beamer at endpause{\beamer at endcovered}}%
+                     {\beamer at spacingcover\gdef\beamer at endpause{\beamer at spacingcover}}%
+      \aftergroup\beamer at noargsonslide
+    },
+  aobs visible/.style={/utils/ext/alt={#1}{}{/tikz/opacity=0,/tikz/text opacity=0}},
+  aobs invisible/.style={/utils/ext/only={#1}{/tikz/opacity=0,/tikz/text opacity=0}},
+  visible/.default=all,
+  visible/.code=%
+    \tikzext at setbeameroption{%
+      \beamer at noargsvisibleonslide<#1>%
+      \aftergroup\beamer at noargsonslide
+    },
+  invisible/.default=all,
+  invisible/.code=%
+    \tikzext at setbeameroption{%
+      \beamer at endpause
+      \beamer at alt<#1>{\beamer at begininvisible\gdef\beamer at endpause{\beamer at endinvisible}}%
+                     {\beamer at spacingcover\gdef\beamer at endpause{\beamer at spacingcover}}%
+      \aftergroup\beamer at noargsonslide
+    },
+         uncover'/.style={/tikz/ext/cover={#1}},
+    aobs visible'/.style={/tikz/ext/aobs invisible={#1}},
+         visible'/.style={/tikz/ext/invisible={#1}},
+           cover'/.style={/tikz/ext/uncover={#1}},
+       invisible'/.style={/tikz/ext/visible={#1}},
+  aobs invisible'/.style={/tikz/ext/aobs visible={#1}},
+  /handlers/.ext_</.code=\tikzext at beamer@handler#1\pgf at stop,
+  beamer shortcuts/.code=\pgfqkeys{/tikz/ext/beamer shortcuts}{#1},
+  beamer shortcuts/aot/.code={%
+    \pgfkeysdef{/tikz/alt}{\pgfkeysvalueof{/utils/ext/alt/. at cmd}##1\pgfeov}%
+    \pgfkeysdef{/tikz/only}{\pgfkeysvalueof{/utils/ext/only/. at cmd}##1\pgfeov}%
+    \pgfkeysdef{/tikz/temporal}{\pgfkeysvalueof{/utils/ext/temporal/. at cmd}##1\pgfeov}%
+  },
+  beamer shortcuts/first char/.is choice,
+  beamer shortcuts/@enable first char/.code 2 args={%
+    \pgfkeys at syntax@handlerstrue % \pgfkeys{/handlers/first char syntax=true}%
+    \pgfkeyssetvalue{/handlers/first char syntax/\expandafter\meaning\string#1}{#2}%
+  },
+  beamer shortcuts/enable first char </.style={/tikz/ext/beamer shortcuts/@enable first char={<}{\tikzext at beamer@firstchar}},
+  beamer shortcuts/enable first char/.value required,
+  beamer shortcuts/enable first char/.style={/tikz/ext/beamer shortcuts/@enable first char={#1}{\tikzext at beamer@graphfirstchar}},
+  beamer shortcuts/enable handler/.code={\pgfkeysdef{/handlers/.<}{\pgfkeysvalueof{/handlers/.ext_<}##1\pgfeov}},
+}
+\def\tikzext at temp#1{%
+  \pgfkeysdef{/tikz/ext/beamer shortcuts/first char/#1}{\pgfkeyssetvalue{/tikz/ext/beamer shortcuts/first char}{#1}}}
+\tikzext at temp{visible}
+\tikzext at temp{uncover}
+\tikzext at temp{cover}
+\tikzext at temp{aobs   visible}
+\tikzext at temp{aobs invisible}
+\pgfkeyssetvalue{/tikz/ext/beamer shortcuts/first char}{uncover}
+% first char syntax: <*overlay*>            → uses "first char"  = *overlay*
+%                    <*overlay*>'           → uses "first char"' = *overlay* (i.e. the inverse)
+%                    <*overlay*>  {options} → uses \only<*overlay*>{\pgfkeysalso{options}}
+%                    <*overlay*>' {options} → uses \alt<*overlay*>{}{\pgfkeysalso{options}} (i.e. the inverse)
+\def\tikzext at beamer@firstchar#1{\tikzext at beamer@firstchar@#1\pgf at stop}
+\def\tikzext at beamer@firstchar@<#1>{%
+  \pgfutil at ifnextchar\pgf at stop{% just the overlay specifications, forward
+    % \pgfkeysvalueof{/tik}
+    \tikzextset{\pgfkeysvalueof{/tikz/ext/beamer shortcuts/first char}={#1}}%
+    \pgfutil at gobble
+  }{%
+    \pgfutil at ifnextchar={% graphs does silly things
+      \tikzext at beamer@firstchar at graph{#1}%
+    }{%
+      \pgfutil at ifnextchar'{% apo = invert overlay specification
+        \tikzext at beamer@firstchar at apo{#1}%
+      }{%
+        \pgfutil at ifnextchar\bgroup{% first options grouped, maybe there are more?
+          \tikzext at beamer@firstchar at onlyoralt{#1}%
+        }{%
+          \tikzext at beamer@firstchar at only{#1}%
+        }%
+      }%
+    }%
+  }%
+}
+\def\tikzext at beamer@firstchar at graph#1=#2\pgf at stop{%
+  \tikzextset{\pgfkeysvalueof{/tikz/ext/beamer shortcuts/first char}={#1}}%
+}
+\def\tikzext at beamer@firstchar at only#1#2\pgf at stop{%
+  \beamer at only<#1>{\pgfkeysalso{#2}}%
+}
+\def\tikzext at beamer@firstchar at onlyoralt#1#2{%
+  \pgfutil at ifnextchar\pgf at stop{%
+    \beamer at only<#1>{\pgfkeysalso{#2}}%
+    \pgfutil at gobble
+  }{% second options, must be in {}
+    \tikzext at beamer@firstchar at altortemp{#1}{#2}%  
+  }%
+}
+\def\tikzext at beamer@firstchar at altortemp#1#2#3{%
+  \pgfutil at ifnextchar\pgf at stop{%
+    \beamer at alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+    \pgfutil at gobble
+  }{% oh, there are third options, must be temporal
+    \tikzext at beamer@firstchar at temp{#1}{#2}{#3}%
+  }%
+}
+\def\tikzext at beamer@firstchar at temp#1#2#3#4\pgf at stop{%
+  \temporal<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
+}
+
+\def\tikzext at beamer@firstchar at apo#1'{%
+  \pgfutil at ifnextchar\pgf at stop{% just the overlay specifications, forward (and invert)
+    \tikzextset{\pgfkeysvalueof{/tikz/ext/beamer shortcuts/first char}'={#1}}%
+    \pgfutil at gobble
+  }{%
+    \pgfutil at ifnextchar={% graphs does silly things
+      \tikzext at beamer@firstchar at apo@graph{#1}%
+    }{%
+      \pgfutil at ifnextchar\bgroup{%
+        \tikzext at beamer@firstchar at apo@onlyoralt{#1}%
+      }{%
+        \tikzext at beamer@firstchar at apo@only{#1}%
+      }%
+    }%
+  }%
+}
+\def\tikzext at beamer@firstchar at apo@graph#1=#2\pgf at stop{%
+  \tikzextset{\pgfkeysvalueof{/tikz/ext/beamer shortcuts/first char}'={#1}}%
+}
+\def\tikzext at beamer@firstchar at apo@only#1#2\pgf at stop{%
+  \beamer at alt<#1>{}{\pgfkeysalso{#2}}%
+}
+\def\tikzext at beamer@firstchar at apo@onlyoralt#1#2{%
+  \pgfutil at ifnextchar\pgf at stop{%
+    \beamer at alt<#1>{}{\pgfkeysalso{#2}}%
+  }{% second options, must be in {}
+    \tikzext at beamer@firstchar at apo@altortemp{#1}{#2}%
+  }%
+}
+\def\tikzext at beamer@firstchar at apo@altortemp#1#2#3{%
+  \pgfutil at ifnextchar\pgf at stop{%
+    \beamer at alt<#1>{\pgfkeysalso{#3}}{\pgfkeysalso{#2}}%
+  }{% oh, there arethird options, must be temporal
+    \tikzext at beamer@firstchar at apo@temp{#1}{#2}{#3}%
+  }%
+}
+\def\tikzext at beamer@firstchar at apo@temp#1#2#3#4\pgf at stop{%
+  \temporal<#1>{\pgfkeysalso{#4}}{\pgfkeysalso{#3}}{\pgfkeysalso{#2}}%
+}
+\def\tikzext at beamer@graphfirstchar#1{\expandafter\tikzext at beamer@firstchar@\pgfutil at gobble#1\pgf at stop}
+
+% handler .ext_< = *overlay*>            → uses the key w/o options        on *overlay*
+%         .ext_< = *overlay*>'           → uses the key w/o options unless on *overlay*
+%         .ext_< = *overlay*>  {options} → uses the key  /w options        on *overlay*
+%         .ext_< = *overlay*>' {options} → uses the key  /w options unless on *overlay*
+\def\tikzext at beamer@handler#1>{%
+  \pgfutil at ifnextchar\pgf at stop
+    {\beamer at only<#1>{\pgfkeysalso{\pgfkeyscurrentpath}}}%
+    {%
+      \pgfutil at ifnextchar'%
+        {\tikzext at beamer@handler at apo{#1}}%
+        {\tikzext at beamer@handler@{#1}}%
+    }%
+}
+\def\tikzext at beamer@handler@#1#2\pgf at stop{%
+  \beamer at only<#1>{\pgfkeysalso{\pgfkeyscurrentpath={#2}}}%
+}
+\def\tikzext at beamer@handler at apo#1'{%
+  \pgfutil at ifnextchar\pgf at stop{%
+    \beamer at alt<#1>{}{\pgfkeysalso{\pgfkeyscurrentpath}}%
+    \pgfutil at gobble
+  }{%
+    \tikzext at beamer@handler at apo@opts{#1}%
+  }%
+}
+\def\tikzext at beamer@handler at apo@opts#1#2\pgf at stop{%
+  \beamer at alt<#1>{}{\pgfkeysalso{\pgfkeyscurrentpath={#2}}}%
+}
+
+% ext/ keys need special handling in graphs library
+\pgfqkeys{/tikz/graphs}{
+  ext/uncover/.style={
+    /tikz/graphs/@edges styling/.append={,/tikz/ext/uncover={#1}},
+    /tikz/ext/uncover={#1}},
+  ext/visible/.style={
+    /tikz/graphs/@edges styling/.append={,/tikz/ext/visible={#1}},
+    /tikz/ext/visible={#1}},
+  ext/cover/.style={
+    /tikz/graphs/@edges styling/.append={,/tikz/ext/cover={#1}}
+    /tikz/ext/cover={#1}},
+  ext/invisible/.style={
+    /tikz/graphs/@edges styling/.append={,/tikz/ext/invisible={#1}}
+    /tikz/ext/invisible={#1}},
+  ext/better beamer shortcut/.code={%
+    \pgfkeyslet{/handlers/first char syntax/\expandafter\meaning\string<}\relax % disable < shortcut
+    \tikzgraphsset{
+      @edges styling/.append={,/tikz/ext/beamer shortcuts/enable first char <},
+      @nodes styling/.append style={/tikz/ext/beamer shortcuts/enable first char <},
+      /tikz/every label/.append style={/tikz/ext/beamer shortcuts/enable first char <}
+    }%
+  }
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.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.nodes.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex	2025-04-13 20:30:07 UTC (rev 74933)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.nodes.code.tex	2025-04-13 20:30:27 UTC (rev 74934)
@@ -194,6 +194,7 @@
           \ifpgf at decorate@inputsegmentobjects at reverse left\else right\fi
         \fi,
       /tikz/ext/auto with offset=true,
+      /tikz/ext/auto offset for brace decoration,
       /tikz/pos=\ifpgf at decorate@inputsegmentobjects at reverse1-\fi(\pgfdecorationsegmentaspect)
     },
     /tikz/ext/nodes/install auto offset for brace decoration/.code=% don't apply twice



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