texlive[75014] Master/texmf-dist: tikz-ext (24apr25)
commits+karl at tug.org
commits+karl at tug.org
Thu Apr 24 22:26:20 CEST 2025
Revision: 75014
https://tug.org/svn/texlive?view=revision&revision=75014
Author: karl
Date: 2025-04-24 22:26:20 +0200 (Thu, 24 Apr 2025)
Log Message:
-----------
tikz-ext (24apr25)
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-beamer.tex
trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex
trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-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.pdf
trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex
trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex
trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex
trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.ortho.code.tex
trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty
Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/README.md 2025-04-24 20:26:20 UTC (rev 75014)
@@ -17,7 +17,7 @@
* 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.
+ * 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.
@@ -24,20 +24,20 @@
* `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.
+ * The `pgfcalendar-ext` package implemented more conditionals and also provides week numbering according to ISO 8601.
* `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` uses the AUX file to sync the sizes of nodes (memoizable).
* `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.arcto` implements an `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.
+* `ext.scalepicture` scales a TikZ picture to the desired dimensions (uses the AUX file, memoizable).
* Shapes:
* `ext.shapes.circlearrow`
* `ext.shapes.circlecrosssplit`
Modified: 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 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-beamer.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -12,12 +12,12 @@
\section{Beamer with \tikzname}
\label{tikzlibrary:beamer}
\begin{tikzlibrary}{ext.beamer}
- This library can help create \tikzname\ diagrams in the class Beamer\indexPackageO{beamer}.
+ This library can help create \tikzname\ diagrams in the \Beamer\ class.
\end{tikzlibrary}
%\begin{multicols*}{2}
\subsection{Helpers}
-These helpers are always available, even if this library is loaded outside of Beamer.
+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
@@ -38,9 +38,9 @@
\end{key}
\subsection{Beamer}
-While \tikzname\ has some rudimentary support for the |beamer| class,
+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
+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.
@@ -85,7 +85,7 @@
directly with a distinct \meta{name}.
\end{key}
-\subsubsection{Beamer Function and keys}
+\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{>}
@@ -109,12 +109,12 @@
visible=\meta{overlay specification} (default all),
invisible=\meta{overlay specification} (default all)%
}
-These keys work similar to Beamer's own |\onslide| command
+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
+this includes the use of the first syntax shortcuts introduced
in the next subsubsection.
The same overlays as above can be created with the first of the following diagram.
@@ -154,7 +154,7 @@
Applies the specific list depending whether the current overlay is before,
on or after the specified \meta{overlay specification}.
\end{key}
-\subsubsection{Beamer Shortcuts}
+\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}}
@@ -167,7 +167,6 @@
\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 |<|.
@@ -221,6 +220,12 @@
\end{tikzpicture}
\end{codeexample}
\end{key}
+\begin{key}{/{tikz/graphs/ext}/better beamer shortcut}
+This sets up a few things that enables the |<| first char syntax in the appropriate places.
+For nodes, it tries to be smart and checks for the presence of a |>| to decide whether the \Beamer\ shortcut
+or the the |graphs| library's own shortcut should be used.
+\end{key}
+\end{key}
\subsubsection{Key Handler}
Maybe this is a syntax that someone wants \dots
Modified: trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -12,13 +12,50 @@
\label{library:paths.ortho}
\begin{tikzlibrary}{ext.paths.ortho}
- This library adds new path specifications \verb!|-|!, \verb!-|-! as well as
- |r-ud|, |r-du|, |r-lr| and |r-rl|.
+ This library adds new path specifications \verb!|-|!, \verb!-|-!
+ as well as |r-ud|, |r-du|, |r-lr| and |r-rl|.
\end{tikzlibrary}
-\subsection{Zig-Zag}
+\begin{multicols*}{2}[\subsection{Timers}]
+New timers are setup for both the Zig-Zag and the Zig-Zig connections
+that will be introduced in this section.
+These can be configured through the following keys.
+\begin{key}{/\tikzext/ortho/spacing=\meta{number} (initially 4)}\keycompat{tikz/ortho}
+ For $\meta{number} \geq 2$
+ \begin{itemize}
+ \item |pos = 0| will be at the start,\indexKeyO{pos}
+ \item |pos = 1| will be at the end,
+ \item |pos = |$\frac{1}{\meta{number}}$ will be at the first kink,
+ \item |pos = |$\frac{\meta{number}-1}{\meta{number}}$ will be at the second kink and
+ \item |pos = .5| will be in the middle of the middle part of the connection.
+ \end{itemize}
+
+ If $\meta{number} \leq 1$ then
+ \begin{itemize}
+ \item |pos = -1| will be at the start,
+ \item |pos = 2| will be at the end,
+ \item |pos = 0| will be at the first kink,
+ \item |pos = 1| will be at the second kink and
+ \item |pos = .5| will still be in the middle of the middle part of the connection.
+ \end{itemize}
+\end{key}
+
+\newcolumn
+\begin{key}{/\tikzext/ortho/middle 0 to 1}\keycompat{tikz/ortho}
+ This is an alias for |spacing = 0|.
+\end{key}
+
+\begin{codeexample}[width=4cm,preamble=\usetikzlibrary{ext.paths.ortho}]
+\tikz \draw (0,0) -|- (2,3)
+ foreach \p in {0.0, 0.25, 0.5, 0.75, 1.0}{
+ node [pos=\p] {\p}};
+\end{codeexample}
+\end{multicols*}
+
+\pagebreak
+\begin{multicols*}{2}[\subsection{Zig-Zag}]
Similar to the path operations \verb!|-! and \verb!-|! this library adds\indexPathOperationO{\protect\pgfmanualbar-}\indexPathOperationO{-\protect\pgfmanualbar}
-the path operations \verb!|-|! and \verb!-|-!.
+the path operations \verb!|-|! (\enquote{vhv}) and \verb!-|-! (\enquote{hvh}).
{\catcode`\|=12
\begin{pathoperation}[noindex]{|-|}{\opt{\oarg{options}}\meta{coordinate or cycle}}
\index{---1@\protect\texttt{\protect\pgfmanualbar-\protect\pgfmanualbar} path operation}%
@@ -33,11 +70,30 @@
This operation means ``first horizontal, then vertical and then horizontal again''.
\end{pathoperation}
}
-\begin{key}{/\tikzext/ortho/ratio=\meta{ratio} (initially 0.5)}\keycompat{tikz/ortho}
- This sets the ratio for the middle part of the Zig-Zag connection.
-
- For values $\meta{ratio} < 0$ and $\meta{ratio} > 1$ the Zig-Zag lines will
- look more like Zig-Zig lines.
+
+Where the middle part (horizontal for \verb!|-|! and vertical for \verb!-|-!)
+of these path operation end up can be specified by a ratio, a distance or
+a factor of one base vector of the $x\!y$ coordinate system.
+
+If used with nodes, the key |from center| toggles from where these are measured.
+\begin{key}{/\tikzext/ortho/from center=\opt{\meta{true or false}} (default true)}\keycompat{tikz/ortho}
+ When nodes get connected the placement of the middle part of the Zig-Zag
+ and the Zig-Zig (see below) connections will be calculated from the border
+ of these nodes.
+ The middle part of the connections will be calculated from the nodes' center
+ if this key is set to |true|.
+\end{key}
+
+\begin{keylist}[/\tikzext/ortho]{%
+ hvh ratio=\meta{ratio} (initially 0.5),
+ vhv ratio=\meta{ratio} (initially 0.5),
+ hvvh ratio=\meta{ratio},
+ ratio=\meta{ratio}}\keylistcompat{tikz/ortho}
+ This sets the ratio for the middle part of the \verb!-|-! and/or the \verb!|-|! operation.
+
+ For values of $\meta{ratio} < 0$ and $\meta{ratio} > 1$ the Zig-Zag lines will
+ look more like the Zig-Zig lines.
+
\begin{codeexample}[preamble=\usetikzlibrary{ext.paths.ortho}]
\begin{tikzpicture}[very thick, rounded corners]
\draw[help lines] (-.25, -1.25) grid (2.25, 1.25);
@@ -45,129 +101,104 @@
(2, 0) -|-[ratio=.25] (0,-1) -- cycle;
\end{tikzpicture}
\end{codeexample}
-\end{key}
-%TODO: hvvh/distance needs fixing, maybe?
-\begin{key}{/\tikzext/ortho/distance=\meta{distance}}\keycompat{tikz/ortho}
- This sets the distance between the start point
- and the middle part of the Zig-Zag connection.
+\end{keylist}
+
+For specifying a distance or a factor in the $x\!y$ coordinate system the same option will be used.
+\begin{keylist}[/\tikzext/ortho]{%
+ hvh distance=\meta{distance},
+ vhv distance=\meta{distance},
+ hvvh distance=\meta{distance},
+ distance=\meta{distance}}\keylistcompat{tikz/ortho}
- For values $\meta{distance} < 0$ the distance will be used for the target coordinate.
-\begin{codeexample}[width=8cm,preamble=\usetikzlibrary{ext.paths.ortho}]
+If \meta{distance} contains a unit, this will be used as the absolute distance
+for the middle part of the \verb!-|-! and/or the \verb!|-|! operation.
+If \meta{distance} doesn't contain a unit it will be interpreted
+as the factor for the base $y$ (\verb!|-|!) or $x$ vector (\verb!-|-!)
+in the $x\!y$ coordinate system.
+
+This distance is measured from the target coordinate if it's negative,
+otherwise from the start coordinate.
+
+The |distance| option also sets the distance of the Zig-Zig path operations below.
+
+\begin{codeexample}[width=6cm,preamble=\usetikzlibrary{ext.paths.ortho}]
\begin{tikzpicture}[very thick,-latex]
-\draw[help lines,-] (-.25, -.25) grid (5.25, 3.25);
-\draw (0, 0) -|-[distance= .5cm] ++(2, 1);
-\draw (0, 2) -|-[distance=-.5cm] ++(2, 1);
+\draw[help lines,-]
+ (-.25, -.25) grid (5.25, 3.25);
+\draw (0, 0)
+ -|-[hvh distance=+ .5cm] ++(2, 1);
+\draw (0, 2)
+ -|-[hvh distance=+-.5cm] ++(2, 1);
\tikzset{xshift=3cm}
-\draw (2, 1) -|-[distance= .5cm] ++(-2, -1);
-\draw (2, 3) -|-[distance=-.5cm] ++(-2, -1);
+\draw (2, 1)
+ -|-[hvh distance=+ .5cm]++(-2,-1);
+\draw (2, 3)
+ -|-[hvh distance=+-.5cm]++(-2,-1);
\end{tikzpicture}
\end{codeexample}
-\end{key}
-\begin{key}{/\tikzext/ortho/from center=\opt{\meta{true or false}} (default true)}\keycompat{tikz/ortho}
- When nodes get connected the placement of the middle part of the Zig-Zag
- and the Zig-Zig (see below) connections will be calculated from the border
- of these nodes.
- The middle part of the connections can be calculated from the nodes' center
- if this key is set to |true|.
-\end{key}
+\end{keylist}
+\end{multicols*}
-New timers are setup for both the Zig-Zag and the Zig-Zig connections,
-these can be configured through the following keys.
-\begin{codeexample}[width=8cm,preamble=\usetikzlibrary{ext.paths.ortho}]
-\tikz \draw (0,0) -|- (2,3)
- foreach \p in {0.0, 0.25, 0.5, 0.75, 1.0}{
- node [pos=\p] {\p}};
-\end{codeexample}
-\begin{key}{/\tikzext/ortho/spacing=\meta{number} (initially 4)}\keycompat{tikz/ortho}
- Unless $\meta{number} = 0$ is set
- \begin{itemize}
- \item |pos = 0| will be at the start,\indexKeyO{pos}
- \item |pos = 1| will be at the end,
- \item |pos = |$\frac{1}{\meta{number}}$ will be at the first kink,
- \item |pos = |$\frac{\meta{number}-1}{\meta{number}}$ will be at the second kink and
- \item |pos = .5| will be in the middle of the middle part of the connection.
- \end{itemize}
-
- If $\meta{number} = 0$ then
- \begin{itemize}
- \item |pos = -1| will be at the start,
- \item |pos = 2| will be at the end,
- \item |pos = 0| will be at the first kink,
- \item |pos = 1| will be at the second kink and
- \item |pos = .5| will still be in the middle of the middle part of the connection.
- \end{itemize}
-\end{key}
-\begin{key}{/\tikzext/ortho/middle 0 to 1}\keycompat{tikz/ortho}
- This is an alias for |spacing = 0|.
-\end{key}
-
-\subsection{Zig-Zig}
+\begin{multicols*}{2}[\subsection{Zig-Zig}]
\begin{pathoperation}{r-ud}{\opt{\oarg{options}}\meta{coordinate or cycle}}
This operation means ``first up, then horizontal and then down''.
- \begin{key}{/\tikzext/ortho/ud distance=\meta{length} (initially .5cm)}\keycompat{tikz/ortho}
- This sets the distance between the start and the horizontal line to \meta{length}.
- \end{key}
\end{pathoperation}
\begin{pathoperation}{r-du}{\opt{\oarg{options}}\meta{coordinate or cycle}}
This operation means ``first down, then horizontal and then up''.
- \begin{key}{/\tikzext/ortho/du distance=\meta{length} (initially .5cm)}\keycompat{tikz/ortho}
- This sets the distance between the start and the horizontal line to \meta{length}.
- \end{key}
\end{pathoperation}
\begin{pathoperation}{r-lr}{\opt{\oarg{options}}\meta{coordinate or cycle}}
This operation means ``left down, then vertical and then right''.
- \begin{key}{/\tikzext/ortho/lr distance=\meta{length} (initially .5cm)}\keycompat{tikz/ortho}
- This sets the distance between the start and the vertical line to \meta{length}.
- \end{key}
\end{pathoperation}
\begin{pathoperation}{r-rl}{\opt{\oarg{options}}\meta{coordinate or cycle}}
This operation means ``first right, then vertical and then down''.
- \begin{key}{/\tikzext/ortho/rl distance=\meta{length} (initially .5cm)}\keycompat{tikz/ortho}
- This sets the distance between the start and the vertical line to \meta{length}.
- \end{key}
\end{pathoperation}
-All distances can be set with one key.
-\begin{key}{/\tikzext/ortho/udlr distance=\meta{length}}\keycompat{tikz/ortho}
- Sets all the previous distances to the same value \meta{length}.
-\end{key}
+\newcolumn
+\begin{keylist}[/\tikzext/ortho]{%
+ ud distance=\meta{distance} (initially .5cm),
+ du distance=\meta{distance} (initially .5cm),
+ lr distance=\meta{distance} (initially .5cm),
+ rl distance=\meta{distance} (initially .5cm),
+ udlr distance=\meta{distance},
+ distance=\meta{distance}}%
+ \listcompat{These were all in the \texttt{/tikz/ortho} namespace.}
+ If \meta{distance} contains a unit, this will be used as the absolute distance
+ for the middle part of the previously introduced path operation.
+ If \meta{distance} doesn't contain a unit it will be interpreted
+ as the factor for the base $y$ (|ud|/|du|) or $x$ vector (|lr|/|rl|)
+ in the $x\!y$ coordinate system.
+
+ The distance is measured from the start, never from the target coordinate.
+
+ The |distance| option also sets the distance of the Zig-Zag path operations above.
+\end{keylist}
+\end{multicols*}
-\subsection{Even more Horizontal and Vertical Lines}
+\begin{multicols*}{2}[\subsection{Even more Horizontal and Vertical Lines}]
The following keys can be used to access vertical and horizontal line path operations.
-\begin{stylekey}{/\tikzext/horizontal vertical}\keycompat{tikz}
- This installs \verb!to path = -| (\tikztotarget) \tikztonodes!\indexKeyO{to path}
+\begin{keylist}[/\tikzext]{%
+ horizontal vertical,
+ vertical horizontal}\keylistcompat{tikz/horizontal vertical, /tikz}
+ These install the path operations \verb!-|! or \verb!|-! respectively as to paths%
+ \indexKeyO{to path} that can be used with the path operations |to| or |edge|.
+\end{keylist}
+\begin{keylist}[/\tikzext]{%
+ horizontal vertical horizontal=\opt{\meta{options}},
+ vertical horizontal vertical=\opt{\meta{options}}}\keylistcompat{tikz/horizontal vertical horizontal, /tikz}
+ These installs the operations \verb!-|-! or \verb!|-|! respectively as to paths
that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/vertical horizontal}\keycompat{tikz}
- This installs \verb!to path = |- (\tikztotarget) \tikztonodes!
+\end{keylist}
+\begin{keylist}[/\tikzext]{%
+ up horizontal down=\opt{\meta{options}},
+ down horizontal up=\opt{\meta{options}},
+ left vertical right=\opt{\meta{options}},
+ right vertical left=\opt{\meta{options}}}\listcompat{These were all in the \texttt{/tikz} namespace.}
+ These install the Zig-Zig path operations as to paths
that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/horizontal vertical horizontal=\opt{\meta{options}}}\keycompat{tikz}
- This installs \verb!to path = -|- (\tikztotarget) \tikztonodes!
- that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/vertical horizontal vertical=\opt{\meta{options}}}\keycompat{tikz}
- This installs \verb!to path = |-| (\tikztotarget) \tikztonodes!
- that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/up horizontal down=\opt{\meta{options}}}\keycompat{tikz}
- This installs \verb!to path = r-ud (\tikztotarget) \tikztonodes!
- that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/down horizontal up=\opt{\meta{options}}}\keycompat{tikz}
- This installs \verb!to path = r-du (\tikztotarget) \tikztonodes!
- that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/left vertical right=\opt{\meta{options}}}\keycompat{tikz}
- This installs \verb!to path = r-lr (\tikztotarget) \tikztonodes!
- that can be used with the path operations |to| or |edge|.
-\end{stylekey}
-\begin{stylekey}{/\tikzext/right vertical left=\opt{\meta{options}}}\keycompat{tikz}
- This installs \verb!to path = r-rl (\tikztotarget) \tikztonodes!
- that can be used with the path operations |to| or |edge|.
-\end{stylekey}
+\end{keylist}
+
When connecting rectangular nodes, these keys could be useful as well.
They all need to be given to a |to| or |edge| path operation.
\begin{stylekey}{/\tikzext/only vertical second=\opt{\meta{length}} (default 0pt)}\keycompat{tikz}
@@ -195,7 +226,7 @@
The optional \meta{length} can be used to shift the line orthogonally to its direction.
\end{stylekey}
-%\pagebreak
+%\newcolumn
Since all previous key are rather cumbersome, one can install shortcuts for these.
\begin{stylekey}{/\tikzext/ortho/install shortcuts}\keycompat{tikz/ortho}
Installs the following shortcuts:\\
@@ -216,3 +247,4 @@
\end{tabular}
}
\end{stylekey}
+\end{multicols*}
\ No newline at end of file
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-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -209,8 +209,14 @@
\section*{Changelog}\addcontentsline{toc}{section}{Changelog}
\begin{multicols}{2}\raggedright
\noindent
-Version 0.6.1 (\the\year-\ifnum\month<10 0\fi\the\month-\ifnum\day<10 0\fi\the\day)
+Version \tikzextversion\ (\the\year-\ifnum\month<10 0\fi\the\month-\ifnum\day<10 0\fi\the\day)
\begin{itemize}
+\item Bugfix to and slight refactoring of |ext.paths.ortho|.
+\item Bugfix to |pgffor-ext|/|ext.misc|.
+\item Added better support for |graphs| library for |ext.beamer|.
+\end{itemize}
+Version 0.6.1 (2025-04-12)
+\begin{itemize}
\item \addTikz{beamer}
\item Added new tips |ext_Double Cap|, |ext_Double Stealth| and |ext_Double Triange|.
\item Bugfix to |ext.arrows-plus|. \cite{GH18}
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 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -557,28 +557,35 @@
% box.north east) -- node [above, overlay] {\texttt{radius}} ++(-#1,0);
}
\makeatother
-\newcommand*\keycompat[2][pre 0.6]{%
+\newcommand*\listcompat[2][pre~0.6]{%
+ \vspace{-6pt}\item{\color{gray}\small\sffamily#1\kern.5em{#2}}\vspace{-2pt}\par
+}
+\newcommand*\keylistcompat[2][pre~0.6]{%
+ \vspace{-6pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily/#2/\myname}}\vspace{-2pt}\par
+ \pgfmanualpdflabel{/#2/\myname}{}%
+}
+\newcommand*\keycompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily/#2/\myname}}\vspace{-2pt}\par
\pgfmanualpdflabel{/#2/\myname}{}%
}
-\newcommand*\cmdcompat[2][pre 0.6]{%
+\newcommand*\cmdcompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily\string#2}}\vspace{-2pt}\par
% \pgfmanualpdflabel{\string#2}{}%
}
-\newcommand*\tipcompat[1][pre 0.6]{%
+\newcommand*\tipcompat[1][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily\expandafter\tipcompatstrip\currentarrowtype\tipstop}}\vspace{-2pt}\par
% \pgfmanualpdflabel{/#2/\myname}{}%
}
-\newcommand*\tipCompat[2][pre 0.6]{
+\newcommand*\tipCompat[2][pre~0.6]{
\vspace{-8pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily#2}}\vspace{2pt}\par
% \pgfmanualpdflabel{/#2/\myname}{}%
}
\def\tipcompatstrip ext#1#2\tipstop{#2}%
-\newcommand*\handlercompat[2][pre 0.6]{%
+\newcommand*\handlercompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily#2}}\vspace{-2pt}\par
\pgfmanualpdflabel{#2}{}%
}
-\newcommand*\mathcompat[2][pre 0.6]{%
+\newcommand*\mathcompat[2][pre~0.6]{%
\vspace{-3pt}\item{\color{gray}\small\sffamily #1\kern.5em{\ttfamily#2}}\vspace{-2pt}\par
% \pgfmanualpdflabel{/#2/\myname}{}%
}
@@ -685,4 +692,6 @@
\index{ext\textunderscore#1@\protect\texttt{.ext\textunderscore#1} handler}%
\index{Key handlers!.ext\textunderscore#1@\protect\texttt{.ext\textunderscore#1}}
}
-\makeatother
\ No newline at end of file
+\makeatother
+
+\newcommand*\Beamer{\textsc{Beamer}}
\ No newline at end of file
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/tikzext-util.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzext-util.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -6,8 +6,8 @@
% 2. under the GNU Free Documentation License.
%
-\def\tikzextversion{0.6.1}
-\def\tikzextversionnumber{9}
+\def\tikzextversion{0.6.2}
+\def\tikzextversionnumber{10}
\def\tikzextset{\pgfqkeys{/tikz/ext}}
\def\pgfextset{\pgfqkeys{/pgf/ext}}
\pgfextset{
@@ -168,8 +168,9 @@
\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{%
+ compat/#1/0.6.1/.style={/tikz/ext/compat/#1/0.6},
+ compat/#1/0.6.2/.style={/tikz/ext/compat/#1/0.6}}%
+ \pgfutil at for\tikzext at temp:=pre 0.6,0.6,0.6.1,0.6.2,newest,warn\do{%
\pgfkeys at expanded{%
\noexpand\tikzextset{%
compat/\tikzext at temp/.append style=%
@@ -203,7 +204,10 @@
}}
\tikzext at temp{pre 0.6}
\tikzext at temp{0.6}
-\tikzextset{compat/0.6.1/.style={/tikz/ext/compat/0.6}}
+\tikzextset{
+ compat/0.6.1/.style={/tikz/ext/compat/0.6},
+ compat/0.6.2/.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.beamer.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.beamer.code.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -342,25 +342,34 @@
}
% 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 <}
- }%
- }
+\def\tikzext at beamer@graphs at firstchar#1{%
+ \pgfutil at in@{>}{#1}%
+ \ifpgfutil at in@
+ \tikzext at beamer@firstchar{#1}%
+ \else
+ \tikz at lg@parse at less{#1}%
+ \fi
+}
+\pgfkeysdef{/tikz/ext/beamer shortcuts/enable first char < graphs}{%
+ \pgfkeysvalueof{/tikz/ext/beamer shortcuts/@enable first char/. at cmd}{<}{\tikzext at beamer@graphs at firstchar}\pgfeov
+}
+\pgfkeysdef{/tikz/graphs/ext/uncover}{%
+ \pgfkeysaddvalue{/tikz/graphs/@edges styling}{}{,/tikz/ext/uncover={#1}}%
+ \pgfkeysvalueof{/tikz/ext/uncover/. at cmd}{#1}\pgfeov}
+\pgfkeysdef{/tikz/graphs/ext/visible}{%
+ \pgfkeysadd{/tikz/graphs/@edges styling}{}{,/tikz/ext/visible={#1}}%
+ \pgfkeysvalueof{/tikz/ext/visible/. at cmd}{#1}\pgfeov}
+\pgfkeysdef{/tikz/graphs/ext/cover}{%
+ \pgfkeysaddvalue{/tikz/graphs/@edges styling}{}{,/tikz/ext/cover={#1}}%
+ \pgfkeysvalueof{/tikz/ext/cover/. at cmd}{#1}\pgfeov}
+\pgfkeysdef{/tikz/graphs/ext/invisible}{%
+ \pgfkeysaddvalue{/tikz/graphs/@edges styling}{}{,/tikz/ext/invisible={#1}}%
+ \pgfkeysvalueof{/tikz/ext/invisible/. at cmd}{#1}\pgfeov}
+\pgfkeysdef{/tikz/graphs/ext/better beamer shortcut}{%
+ \pgfkeyslet{/handlers/first char syntax/\expandafter\meaning\string<}\relax % disable < shortcut
+ \pgfkeysaddvalue{/tikz/graphs/@edges styling}{}{,/tikz/ext/beamer shortcuts/enable first char <}%
+ \pgfkeys{
+ /tikz/graphs/@nodes styling/.append style={/tikz/ext/beamer shortcuts/enable first char < graphs},
+ /tikz/every label/.append style={/tikz/ext/beamer shortcuts/enable first char <}
+ }%
}
\ No newline at end of file
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 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -41,9 +41,9 @@
\endgroup
}
-\pgfutil at IfUndefined{tikzext at pgf@foreach at no@list at parse@to}{% stupid test
+\unless\ifcsname iftikzext at pgffor@nolist\endcsname
\input pgffor-ext.code.tex
-}{}
+\fi
%% PGFmath
%% strrepeat("x", 5) = "xxxxx"
Modified: trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.ortho.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.ortho.code.tex 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/tex/generic/tikz-ext/tikzlibraryext.paths.ortho.code.tex 2025-04-24 20:26:20 UTC (rev 75014)
@@ -14,10 +14,10 @@
\let\tikzextorig at tikz@rect\tikz at rect
\def\tikz at rect{\pgfutil at ifnextchar e\tikzextorig at tikz@rect\tikzext at tikz@r}
\def\tikzext at tikz@r -{%
- \pgfutil at ifnextchar l\tikzext at tikz@lr at lineto{%
- \pgfutil at ifnextchar r\tikzext at tikz@rl at lineto{%
- \pgfutil at ifnextchar u\tikzext at tikz@ud at lineto{%
- \pgfutil at ifnextchar d\tikzext at tikz@du at lineto\tikz at expand
+ \pgfutil at ifnextchar l\tikzext at ortho@lr{%
+ \pgfutil at ifnextchar r\tikzext at ortho@rl{%
+ \pgfutil at ifnextchar u\tikzext at ortho@ud{%
+ \pgfutil at ifnextchar d\tikzext at ortho@du\tikz at expand
}%
}%
}%
@@ -25,32 +25,27 @@
%% For the operator |-| we need to check after TikZ found |-
\let\tikzextorig at tikz@vh at lineto@next\tikz at vh@lineto at next
\def\tikz at vh@lineto at next{%
- \pgfutil at ifnextchar|{\expandafter\tikzext at tikz@vhv at lineto\pgfutil at gobble}%
- {\pgfutil at ifnextchar\tikz at activebar{\expandafter\tikzext at tikz@vhv at lineto\pgfutil at gobble}%
+ \pgfutil at ifnextchar|{\expandafter\tikzext at ortho@vhv\pgfutil at gobble}%
+ {\pgfutil at ifnextchar\tikz at activebar{\expandafter\tikzext at ortho@vhv\pgfutil at gobble}%
{\tikzextorig at tikz@vh at lineto@next}}}
%% For the operator -|- we need to check after TikZ found -|
\let\tikzextorig at tikz@hv at lineto\tikz at hv@lineto
\def\tikz at hv@lineto{%
- \pgfutil at ifnextchar-{\expandafter\tikzext at tikz@hvh at lineto\pgfutil at gobble}%
+ \pgfutil at ifnextchar-{\expandafter\tikzext at ortho@hvh\pgfutil at gobble}%
{\tikzextorig at tikz@hv at lineto}}
%% |-|[<opts>] and -|-[<opts>] are allowed
-\def\tikzext at tikz@vhv at lineto{\pgfutil at ifnextchar[{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@vhv at lineto@next}{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@vhv at lineto@next[]}}
-\def\tikzext at tikz@hvh at lineto{\pgfutil at ifnextchar[{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@hvh at lineto@next}{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@hvh at lineto@next[]}}
+\def\tikzext at ortho@vhv{\pgfutil at ifnextchar[{\tikzext at ortho@opts\tikzext at ortho@vhv at next}{\tikzext at ortho@opts\tikzext at ortho@vhv at next[]}}
+\def\tikzext at ortho@hvh{\pgfutil at ifnextchar[{\tikzext at ortho@opts\tikzext at ortho@hvh at next}{\tikzext at ortho@opts\tikzext at ortho@hvh at next[]}}
%% r-rl[<opts>], r-lr[<opts>], etc.
-\def\tikzext at tikz@rl at lineto rl{\pgfutil at ifnextchar[{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@rl at lineto@next}{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@rl at lineto@next[]}}
-\def\tikzext at tikz@lr at lineto lr{\pgfutil at ifnextchar[{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@lr at lineto@next}{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@lr at lineto@next[]}}
-\def\tikzext at tikz@du at lineto du{\pgfutil at ifnextchar[{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@du at lineto@next}{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@du at lineto@next[]}}
-\def\tikzext at tikz@ud at lineto ud{\pgfutil at ifnextchar[{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@ud at lineto@next}{\tikzext at tikz@collect at hvvh@options\tikzext at tikz@ud at lineto@next[]}}
+\def\tikzext at ortho@rl rl{\pgfutil at ifnextchar[{\tikzext at ortho@opts\tikzext at ortho@rl at next}{\tikzext at ortho@opts\tikzext at ortho@rl at next[]}}
+\def\tikzext at ortho@lr lr{\pgfutil at ifnextchar[{\tikzext at ortho@opts\tikzext at ortho@lr at next}{\tikzext at ortho@opts\tikzext at ortho@lr at next[]}}
+\def\tikzext at ortho@du du{\pgfutil at ifnextchar[{\tikzext at ortho@opts\tikzext at ortho@du at next}{\tikzext at ortho@opts\tikzext at ortho@du at next[]}}
+\def\tikzext at ortho@ud ud{\pgfutil at ifnextchar[{\tikzext at ortho@opts\tikzext at ortho@ud at next}{\tikzext at ortho@opts\tikzext at ortho@ud at next[]}}
%% TikZ interjects are done, the rest is independent:
-
-
-\newdimen\tikzext at tikz@udlr at distance
-\newdimen\tikzext at tikz@hvvh at distance
-\newif\iftikzext at tikz@hvvh at middle % checks whether spacing = 0 was selected
-\newif\iftikzext at tikz@hvvh at fromcenter
+\newif\iftikzext at ortho@fromcenter
\newif\iftikzext at ortho@preflush
\tikzext at ortho@preflushtrue
@@ -61,149 +56,150 @@
udlr/.code=\pgfqkeys{/tikz/ext/ortho}{#1},%
ortho/.search also=/tikz,
ortho/middle 0 to 1/.style={/tikz/ext/ortho/spacing=0},%
- ortho/from center/.is if=tikzext at tikz@hvvh at fromcenter,%
- ortho/spacing/.code=% spacing = 0 means that the middle part are the pos-itions 0 to 1,
- % the first part is -1 to 0, the last part is to 2
- \pgfmathint{#1}\let\tikzext at tikz@hvvh at timing@parts\pgfmathresult% in case they are calculations to be done
- \ifcase\tikzext at tikz@hvvh at timing@parts\relax
- \tikzext at tikz@hvvh at middletrue
- \def\tikzext at tikz@hvvh at timing@parts{1}%
- \def\tikzext at tikz@hvvh at timing@first{0}%
- \def\tikzext at tikz@hvvh at timing@last{1}%
- \def\tikzext at tikz@hvvh at timing@subtr{0}%
- \def\tikzext at tikz@hvvh at timing@factor{1}%
- \else % in all other cases n > 0 the kinks are at pos = 1/n and (n - 1)/n
- \tikzext at tikz@hvvh at middlefalse
- \pgfmathreciprocal{#1}\let\tikzext at tikz@hvvh at timing@first\pgfmathresult
- \pgfmathsetmacro\tikzext at tikz@hvvh at timing@last{1-\pgfmathresult}%
- \pgfmathreciprocal{#1-2}%
- \let\tikzext at tikz@hvvh at timing@subtr\pgfmathresult
- \pgfmathsetmacro\tikzext at tikz@hvvh at timing@factor{1+2*\pgfmathresult}%
+ ortho/from center/.is if=tikzext at ortho@fromcenter,%
+ ortho/spacing/.code=% spacing = 0 or 1 means that the middle part are the pos-itions 0 to 1,
+ % the first part is -1 to 0, the last part is to 2
+ \pgfmathint{#1}\let\tikzext at ortho@timing at parts\pgfmathresult% in case they are calculations to be done
+ \ifnum\tikzext at ortho@timing at parts<2
+ \def\tikzext at ortho@timing at parts{1}%
+ \def\tikzext at ortho@timing at first{0}%
+ \def\tikzext at ortho@timing at last{1}%
+ \def\tikzext at ortho@timing at subtr{0}%
+ \def\tikzext at ortho@timing at factor{1}%
+ \else % in all other cases n > 1 the kinks are at pos = 1/n and (n - 1)/n
+ \pgfmathreciprocal{\tikzext at ortho@timing at parts}%
+ \let\tikzext at ortho@timing at first\pgfmathresult
+ \pgfmathsetmacro\tikzext at ortho@timing at last{1-\pgfmathresult}%
+ \pgfmathreciprocal{\tikzext at ortho@timing at parts-2}%
+ \let\tikzext at ortho@timing at subtr\pgfmathresult
+ \pgfmathsetmacro\tikzext at ortho@timing at factor{1+2*\pgfmathresult}%
\fi,%
- ortho/ratio/.code=\pgfmathsetmacro\tikzext at tikz@hvvh at ratio{#1},%
- % TODO: not possible to do distance in TikZ coordinate system
- ortho/distance/.code=\pgfmathsetlength\tikzext at tikz@hvvh at distance{#1}\let\tikzext at tikz@hvvh at ratio\pgfutil at empty,%
- ortho/udlr distance/.style={%
- /tikz/ext/ortho/ud distance={#1},%
- /tikz/ext/ortho/du distance={#1},%
- /tikz/ext/ortho/lr distance={#1},%
- /tikz/ext/ortho/rl distance={#1}},%
- ortho/ud distance/.initial=+.5cm,%
- ortho/du distance/.initial=+.5cm,%
- ortho/lr distance/.initial=+.5cm,%
- ortho/rl distance/.initial=+.5cm,%
+ ortho/hvh ratio/.code=%
+ \pgfkeyssetvalue{/tikz/ext/ortho/hvh distance}{}%
+ \pgfkeyssetvalue{/tikz/ext/ortho/hvh ratio}{#1},
+ ortho/vhv ratio/.code=%
+ \pgfkeyssetvalue{/tikz/ext/ortho/vhv distance}{}%
+ \pgfkeyssetvalue{/tikz/ext/ortho/vhv ratio}{#1},
+ ortho/hvh distance/.code=%
+ \pgfkeyssetvalue{/tikz/ext/ortho/hvh distance}{#1}%
+ \pgfkeyssetvalue{/tikz/ext/ortho/hvh ratio}{},
+ ortho/vhv distance/.code=%
+ \pgfkeyssetvalue{/tikz/ext/ortho/vhv distance}{#1}%
+ \pgfkeyssetvalue{/tikz/ext/ortho/vhv ratio}{},
+ ortho/hvvh distance/.style={
+ /tikz/ext/ortho/hvh distance={#1},
+ /tikz/ext/ortho/vhv distance={#1}},
+ ortho/hvvh ratio/.style={
+ /tikz/ext/ortho/hvh ratio={#1},
+ /tikz/ext/ortho/vhv ratio={#1}},
+ ortho/ratio/.style={% there's no udlr ratio so we make ratio an alias to hvvh ratio
+ /tikz/ext/ortho/hvh ratio={#1},
+ /tikz/ext/ortho/vhv ratio={#1}},
+ % with it's always a distance (or a unit in the xy cs)
+ ortho/ud distance/.initial=+.5cm,
+ ortho/du distance/.initial=+.5cm,
+ ortho/lr distance/.initial=+.5cm,
+ ortho/rl distance/.initial=+.5cm,
+ ortho/udlr distance/.style={
+ /tikz/ext/ortho/ud distance={#1},
+ /tikz/ext/ortho/du distance={#1},
+ /tikz/ext/ortho/lr distance={#1},
+ /tikz/ext/ortho/rl distance={#1}},
+ ortho/distance/.style={
+ /tikz/ext/ortho/hvh distance={#1},
+ /tikz/ext/ortho/vhv distance={#1},
+ /tikz/ext/ortho/ud distance={#1},
+ /tikz/ext/ortho/du distance={#1},
+ /tikz/ext/ortho/lr distance={#1},
+ /tikz/ext/ortho/rl distance={#1}},
ortho/ratio=.5,% default value
ortho/spacing=4,% default value
}%
-%BEGIN_FOLD Timer
-\def\tikzext at timer@hvhline{%
- \pgf at process{\tikz at timer@start}\pgf at ya\pgf at y
- \pgf at process{\tikz at timer@end}\pgf at yc\pgf at y
- \pgf at process{\tikz at timer@middle}\pgf at xb\tikz at time pt%
- \ifdim\tikz at time pt<\tikzext at tikz@hvvh at timing@first pt% first quarter
- \iftikzext at tikz@hvvh at middle
- \advance\pgf at xb1pt%
- \else
- \pgf at xb\tikzext at tikz@hvvh at timing@parts\pgf at xb
- \fi
- \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}{\noexpand\tikz at timer@start}{%
- \noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at ya}}}%
- \else
- \ifdim\tikz at time pt>\tikzext at tikz@hvvh at timing@last pt% last quarter
- \iftikzext at tikz@hvvh at middle
- \advance\pgf at xb-1pt%
- \else
- \pgf at xb\tikzext at tikz@hvvh at timing@parts\pgf at xb
- \fi
- \advance\pgf at xb\dimexpr-\tikzext at tikz@hvvh at timing@parts pt+1pt\relax%
- \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
- {\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at yc}}{\noexpand\tikz at timer@end}}%
- \else% middle half
- \pgf at xb\tikzext at tikz@hvvh at timing@factor\pgf at xb%
- \advance\pgf at xb-\tikzext at tikz@hvvh at timing@subtr pt%
- \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
- {\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at ya}}{\noexpand\tikz at timer@middle}}%
- \fi\fi\tikz at marshal}
-\def\tikzext at timer@vhvline{%
- \pgf at process{\tikz at timer@start}\pgf at xa\pgf at x
- \pgf at process{\tikz at timer@end}\pgf at xc\pgf at x
- \pgf at process{\tikz at timer@middle}\pgf at xb\tikz at time pt%
- \ifdim\tikz at time pt<\tikzext at tikz@hvvh at timing@first pt% first quarter
- \iftikzext at tikz@hvvh at middle
- \advance\pgf at xb1pt%
- \else
- \pgf at xb\tikzext at tikz@hvvh at timing@parts\pgf at xb
- \fi
- \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}{\noexpand\tikz at timer@start}{%
- \noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at y}}}%
- \else
- \ifdim\tikz at time pt>\tikzext at tikz@hvvh at timing@last pt% last quarter
- \iftikzext at tikz@hvvh at middle
- \advance\pgf at xb-1pt%
- \else
- \pgf at xb\tikzext at tikz@hvvh at timing@parts\pgf at xb
- \fi
- \advance\pgf at xb by\dimexpr-\tikzext at tikz@hvvh at timing@parts pt+1pt\relax%
- \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
- {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at y}}{\noexpand\tikz at timer@end}}%
- \else% middle half
- \pgf at xb=\tikzext at tikz@hvvh at timing@factor\pgf at xb
- \advance\pgf at xb by-\tikzext at tikz@hvvh at timing@subtr pt%
- \edef\tikz at marshal{\noexpand\pgftransformlineattime{\pgf at sys@tonumber{\pgf at xb}}%
- {\noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at y}}{\noexpand\tikz at timer@middle}}%
- \fi\fi\tikz at marshal}%
-
%% collect options and nodes, coordinates and pics onpath
-\let\tikz at hvvh@currentoption\pgfutil at empty
-\def\tikzext at tikz@collect at hvvh@options#1[#2]{\def\tikz at hvvh@currentoption{#2}#1}
-\def\tikzext at tikz@hvh at lineto@next{%
- \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at tikz@hvh at lineto@next}
- {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at tikz@hvh at lineto@next}%
- {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at tikz@hvh at lineto@next}{\tikz at scan@one at point\tikzext at tikz@@hvh at lineto}}}}%
-\def\tikzext at tikz@vhv at lineto@next{%
- \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at tikz@vhv at lineto@next}
- {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at tikz@vhv at lineto@next}%
- {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at tikz@vhv at lineto@next}{\tikz at scan@one at point\tikzext at tikz@@vhv at lineto}}}}%
-\def\tikzext at tikz@ud at lineto@next{%
- \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at tikz@ud at lineto@next}
- {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at tikz@ud at lineto@next}
- {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at tikz@ud at lineto@next}{\tikz at scan@one at point\tikzext at tikz@@ud at lineto}}}}%
-\def\tikzext at tikz@du at lineto@next{%
- \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at tikz@du at lineto@next}
- {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at tikz@du at lineto@next}
- {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at tikz@du at lineto@next}{\tikz at scan@one at point\tikzext at tikz@@du at lineto}}}}%
-\def\tikzext at tikz@lr at lineto@next{%
- \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at tikz@lr at lineto@next}
- {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at tikz@lr at lineto@next}
- {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at tikz@lr at lineto@next}{\tikz at scan@one at point\tikzext at tikz@@lr at lineto}}}}%
-\def\tikzext at tikz@rl at lineto@next{%
- \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at tikz@rl at lineto@next}
- {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at tikz@rl at lineto@next}
- {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at tikz@rl at lineto@next}{\tikz at scan@one at point\tikzext at tikz@@rl at lineto}}}}%
+\let\tikzext at ortho@options\pgfutil at empty
+\def\tikzext at ortho@opts#1[#2]{\def\tikzext at ortho@options{#2}#1}
+\def\tikzext at ortho@hvh at next{%
+ \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at ortho@hvh at next}
+ {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at ortho@hvh at next}%
+ {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at ortho@hvh at next}{\tikz at scan@one at point\tikzext at ortho@hvh at do}}}}%
+\def\tikzext at ortho@vhv at next{%
+ \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at ortho@vhv at next}
+ {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at ortho@vhv at next}%
+ {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at ortho@vhv at next}{\tikz at scan@one at point\tikzext at ortho@vhv at do}}}}%
+\def\tikzext at ortho@ud at next{%
+ \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at ortho@ud at next}
+ {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at ortho@ud at next}
+ {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at ortho@ud at next}{\tikz at scan@one at point\tikzext at ortho@ud at do}}}}%
+\def\tikzext at ortho@du at next{%
+ \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at ortho@du at next}
+ {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at ortho@du at next}
+ {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at ortho@du at next}{\tikz at scan@one at point\tikzext at ortho@du at do}}}}%
+\def\tikzext at ortho@lr at next{%
+ \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at ortho@lr at next}
+ {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at ortho@lr at next}
+ {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at ortho@lr at next}{\tikz at scan@one at point\tikzext at ortho@lr at do}}}}%
+\def\tikzext at ortho@rl at next{%
+ \pgfutil at ifnextchar n{\tikz at collect@label at onpath\tikzext at ortho@rl at next}
+ {\pgfutil at ifnextchar c{\tikz at collect@coordinate at onpath\tikzext at ortho@rl at next}
+ {\pgfutil at ifnextchar p{\tikz at collect@pic at onpath\tikzext at ortho@rl at next}{\tikz at scan@one at point\tikzext at ortho@rl at do}}}}%
-\def\tikzext at do@hvvh#1#2#3#4#5{%
-% #1 = first kink
-% #2 = second kink
-% #3 = end
-% #4 = timer
-% #5 = tikz at shapeborder@name
+\def\tikzext at ortho@do#1#2#3#4{%
+ % #1 = first kink
+ % #2 = second kink
+ % #3 = end
+ % #4 = tikz at shapeborder@name
\pgfpathlineto{#1}%
\pgfpathlineto{#2}%
\pgfpathlineto{#3}%
- \def\tikz at timer@middle{#2}%
+ \def\tikzext at ortho@timer at kinkA{#1}%
+ \def\tikzext at ortho@timer at kinkB{#2}%
\def\tikz at timer@end{#3}%
- \let\tikz at timer#4
- \edef\pgf at temp{#5}%
- \ifx\pgf at temp\pgfutil at empty
+ \let\tikz at timer\tikzext at ortho@timer
+ \def\tikzext at temp{#4}%
+ \ifx\tikzext at temp\pgfutil at empty
\let\tikz at moveto@waiting\relax
\else
- \let\tikz at moveto@waiting\pgf at temp
+ \let\tikz at moveto@waiting\tikzext at temp
\fi
\tikz at scan@next at command}%
+\def\tikzext at ortho@timer{%
+ \pgfutil at tempdima=\tikz at time pt
+ \ifdim\pgfutil at tempdima<\tikzext at ortho@timer at first pt % first quarter
+ \ifnum\tikzext at ortho@timer at parts=1
+ \advance\pgfutil at tempdima1pt
+ \else
+ \pgfutil at tempdima\tikzext at ortho@timer at parts\pgfutil at tempdima
+ \fi
+ \pgftransformlineattime{\pgf at sys@tonumber\pgfutil at tempdima}{\tikz at timer@start}{\tikzext at ortho@timer at kinkA}%
+ \else
+ \ifdim\pgfutil at tempdima>\tikzext at ortho@timer at last pt %last quarter
+ \ifnum\tikzext at ortho@timer at parts=1
+ \advance\pgfutil at tempdima-1pt%
+ \else
+ \pgfutil at tempdima\tikzext at ortho@timer at parts\pgfutil at tempdima
+ \fi
+ \advance\pgfutil at tempdima-\tikzext at ortho@timer at parts pt
+ \advance\pgfutil at tempdima1pt
+ \pgftransformlineattime{\pgf at sys@tonumber\pgfutil at tempdima}{\tikzext at ortho@timer at kinkB}{\tikz at timer@end}%
+ \else % middle bit
+ \pgfutil at tempdima=\tikzext at ortho@timer at factor\pgfutil at tempdima
+ \advance\pgfutil at tempdima-\tikzext at ortho@timer at subtr pt
+ \pgftransformlineattime{\pgf at sys@tonumber\pgfutil at tempdima}{\tikzext at ortho@timer at kinkA}{\tikzext at ortho@timer at kinkB}%
+ \fi
+ \fi
+}
+
+\def\tikzext at ortho@savetimer{%
+ \def\noexpand\tikzext at ortho@timer at parts{\tikzext at ortho@timing at parts}%
+ \def\noexpand\tikzext at ortho@timer at first{\tikzext at ortho@timing at first}%
+ \def\noexpand\tikzext at ortho@timer at last{\tikzext at ortho@timing at last}%
+ \def\noexpand\tikzext at ortho@timer at subtr{\tikzext at ortho@timing at subtr}%
+ \def\noexpand\tikzext at ortho@timer at factor{\tikzext at ortho@timing at factor}%
+}
%% -|- operator
-\def\tikzext at tikz@@hvh at lineto#1{%
+\def\tikzext at ortho@hvh at do#1{%
\edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\pgf at xb=\tikz at lastx
\pgf at xc=\tikz at lastx
@@ -211,15 +207,34 @@
\tikz at make@last at position{#1}%
\tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\pgf at yc}}\pgf at xc\pgf at yc
\begingroup
- \tikzextset{ortho/.expand once=\tikz at hvvh@currentoption}%
+ \def\tikzext at temp{\pgfqkeys{/tikz/ext/ortho}}%
+ \expandafter\tikzext at temp\expandafter{\tikzext at ortho@options}%
+ \edef\tikzext at ortho@ratio{\pgfkeysvalueof{/tikz/ext/ortho/hvh ratio}}%
+ \ifx\tikzext at ortho@ratio\pgfutil at empty
+ \pgfmathparse{\pgfkeysvalueof{/tikz/ext/ortho/hvh distance}}%
+ \ifpgfmathunitsdeclared
+ \pgfutil at tempdima=\pgfmathresult pt
+ \else
+ \pgf at process{\pgfqpointxy{\pgfmathresult}{0}}%
+ \ifdim\pgf at x<0pt
+ \pgf at x=-\pgf at x
+ \fi
+ \ifdim\pgfmathresult pt<0pt
+ \pgf at x=-\pgf at x
+ \fi
+ \pgfutil at tempdima=\pgf at x
+ \fi
+ \else
+ \pgfmathsetmacro\tikzext at ortho@ratio{\tikzext at ortho@ratio}%
+ \fi
\iftikz at shapeborder
\pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at xb}{\tikz at lasty}}}%
- \iftikzext at tikz@hvvh at fromcenter
+ \iftikzext at ortho@fromcenter
\pgf at xc\pgf at xb
\fi
- \pgfutil at ifxempty\tikzext at tikz@hvvh at ratio{%
- \ifdim\tikzext at tikz@hvvh at distance<0pt\relax
- \iftikzext at tikz@hvvh at fromcenter
+ \ifx\tikzext at ortho@ratio\pgfutil at empty
+ \ifdim\pgfutil at tempdima<0pt\relax
+ \iftikzext at ortho@fromcenter
\pgf at xc\tikz at lastx
\else
\pgf at xc\pgf at x
@@ -226,54 +241,56 @@
\fi
\fi
\ifdim\pgf at xb>\tikz at lastx
- \tikzext at tikz@hvvh at distance-\tikzext at tikz@hvvh at distance
+ \pgfutil at tempdima-\pgfutil at tempdima
\fi
- }{%
- \iftikzext at tikz@hvvh at fromcenter
- \tikzext at tikz@hvvh at distance\tikz at lastx
+ \else
+ \iftikzext at ortho@fromcenter
+ \pgfutil at tempdima\tikz at lastx
\else
- \tikzext at tikz@hvvh at distance\pgf at x
+ \pgfutil at tempdima\pgf at x
\fi
- \advance\tikzext at tikz@hvvh at distance-\pgf at xc
- \tikzext at tikz@hvvh at distance\tikzext at tikz@hvvh at ratio\tikzext at tikz@hvvh at distance
- }%
- \advance\pgf at xc\tikzext at tikz@hvvh at distance
+ \advance\pgfutil at tempdima-\pgf at xc
+ \pgfutil at tempdima\tikzext at ortho@ratio\pgfutil at tempdima
+ \fi
+ \advance\pgf at xc\pgfutil at tempdima
\edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
\edef\pgf at tempb{\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
\edef\pgf at temp{\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
\else
\let\tikz at shapeborder@name\pgfutil at empty
- \iftikzext at tikz@hvvh at fromcenter
+ \iftikzext at ortho@fromcenter
\pgf at xc\pgf at xb
\fi
- \pgfutil at ifxempty\tikzext at tikz@hvvh at ratio{%
- \ifdim\tikzext at tikz@hvvh at distance<0pt\relax
+ \ifx\tikzext at ortho@ratio\pgfutil at empty
+ \ifdim\pgfutil at tempdima<0pt\relax
\pgf at xc\tikz at lastx
\fi
\ifdim\pgf at xb>\tikz at lastx
- \tikzext at tikz@hvvh at distance-\tikzext at tikz@hvvh at distance
+ \pgfutil at tempdima-\pgfutil at tempdima
\fi
- }{%
- \tikzext at tikz@hvvh at distance\tikz at lastx
- \advance\tikzext at tikz@hvvh at distance-\pgf at xc
- \tikzext at tikz@hvvh at distance\tikzext at tikz@hvvh at ratio\tikzext at tikz@hvvh at distance
- }%
- \advance\pgf at xc\tikzext at tikz@hvvh at distance
+ \else
+ \pgfutil at tempdima\tikz at lastx
+ \advance\pgfutil at tempdima-\pgf at xc
+ \pgfutil at tempdima\tikzext at ortho@ratio\pgfutil at tempdima
+ \fi
+ \advance\pgf at xc\pgfutil at tempdima
\edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
\edef\pgf at tempb{\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
\edef\pgf at temp{\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\fi%
- \xdef\pgf at marshal{%
- \noexpand\tikzext at do@hvvh
+ \edef\tikzext at temp{%
+ \endgroup
+ \tikzext at ortho@savetimer
+ \noexpand\tikzext at ortho@do
{\expandafter\noexpand\pgf at tempa}%
{\expandafter\noexpand\pgf at tempb}%
{\expandafter\noexpand\pgf at temp}%
- {\noexpand\tikzext at timer@hvhline}{\tikz at shapeborder@name}}%
- \endgroup
- \pgf at marshal}%
+ {\tikz at shapeborder@name}}%
+ \tikzext at temp
+}%
%% |-| operator
-\def\tikzext at tikz@@vhv at lineto#1{%
+\def\tikzext at ortho@vhv at do#1{%
\edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\pgf at xc=\tikz at lastx
\pgf at yb=\tikz at lasty
@@ -281,15 +298,36 @@
\tikz at make@last at position{#1}%
\tikz at flush@moveto at toward{\pgfqpoint{\pgf at xc}{\tikz at lasty}}\pgf at xc\pgf at yc
\begingroup
- \tikzextset{ortho/.expand once=\tikz at hvvh@currentoption}%
+ \def\tikzext at temp{\pgfqkeys{/tikz/ext/ortho}}%
+ \expandafter\tikzext at temp\expandafter{\tikzext at ortho@options}%
+ \edef\tikzext at ortho@ratio{\pgfkeysvalueof{/tikz/ext/ortho/vhv ratio}}%
+ \ifx\tikzext at ortho@ratio\pgfutil at empty
+ \pgfmathparse{\pgfkeysvalueof{/tikz/ext/ortho/vhv distance}}%
+ \ifpgfmathunitsdeclared
+ \pgfutil at tempdima=\pgfmathresult pt
+ \else
+ \typeout{\pgfmathresult\space before}%
+ \pgf at process{\pgfqpointxy{0}{\pgfmathresult}}%
+ \ifdim\pgf at y<0pt
+ \pgf at y=-\pgf at y
+ \fi
+ \ifdim\pgfmathresult pt<0pt
+ \pgf at y=-\pgf at y
+ \fi
+ \typeout{\pgfmathresult\space after, \the\pgf at y}%
+ \pgfutil at tempdima=\pgf at y
+ \fi
+ \else
+ \pgfmathsetmacro\tikzext at ortho@ratio{\tikzext at ortho@ratio}%
+ \fi
\iftikz at shapeborder
\pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\tikz at lastx}{\pgf at yb}}}%
- \iftikzext at tikz@hvvh at fromcenter
+ \iftikzext at ortho@fromcenter
\pgf at yc\pgf at yb
\fi
- \ifx\tikzext at tikz@hvvh at ratio\pgfutil at empty
- \ifdim\tikzext at tikz@hvvh at distance<0pt\relax
- \iftikzext at tikz@hvvh at fromcenter
+ \ifx\tikzext at ortho@ratio\pgfutil at empty
+ \ifdim\pgfutil at tempdima<0pt\relax
+ \iftikzext at ortho@fromcenter
\pgf at yc\tikz at lasty
\else
\pgf at yc\pgf at y
@@ -296,255 +334,191 @@
\fi
\fi
\ifdim\pgf at yb>\tikz at lasty
- \tikzext at tikz@hvvh at distance-\tikzext at tikz@hvvh at distance
+ \pgfutil at tempdima-\pgfutil at tempdima
\fi
\else
- \iftikzext at tikz@hvvh at fromcenter
- \tikzext at tikz@hvvh at distance\tikz at lasty
+ \iftikzext at ortho@fromcenter
+ \pgfutil at tempdima\tikz at lasty
\else
- \tikzext at tikz@hvvh at distance\pgf at y
+ \pgfutil at tempdima\pgf at y
\fi
- \advance\tikzext at tikz@hvvh at distance-\pgf at yc
- \tikzext at tikz@hvvh at distance\tikzext at tikz@hvvh at ratio\tikzext at tikz@hvvh at distance
+ \advance\pgfutil at tempdima-\pgf at yc
+ \pgfutil at tempdima\tikzext at ortho@ratio\pgfutil at tempdima
\fi
- \advance\pgf at yc\tikzext at tikz@hvvh at distance
+ \advance\pgf at yc\pgfutil at tempdima
\edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
\edef\pgf at tempb{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
\edef\pgf at temp{\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
\else
\let\tikz at shapeborder@name\pgfutil at empty
- \iftikzext at tikz@hvvh at fromcenter
+ \iftikzext at ortho@fromcenter
\pgf at yc\pgf at yb
\fi
- \ifx\tikzext at tikz@hvvh at ratio\pgfutil at empty
- \ifdim\tikzext at tikz@hvvh at distance<0pt\relax
+ \ifx\tikzext at ortho@ratio\pgfutil at empty
+ \ifdim\pgfutil at tempdima<0pt\relax
\pgf at yc\tikz at lasty
\fi
\ifdim\pgf at yb>\tikz at lasty
- \tikzext at tikz@hvvh at distance-\tikzext at tikz@hvvh at distance
+ \pgfutil at tempdima-\pgfutil at tempdima
\fi
\else
- \tikzext at tikz@hvvh at distance\tikz at lasty
- \advance\tikzext at tikz@hvvh at distance-\pgf at yc
- \tikzext at tikz@hvvh at distance\tikzext at tikz@hvvh at ratio\tikzext at tikz@hvvh at distance
+ \pgfutil at tempdima\tikz at lasty
+ \advance\pgfutil at tempdima-\pgf at yc
+ \pgfutil at tempdima\tikzext at ortho@ratio\pgfutil at tempdima
\fi
- \advance\pgf at yc\tikzext at tikz@hvvh at distance
+ \advance\pgf at yc\pgfutil at tempdima
\edef\pgf at tempa{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
\edef\pgf at tempb{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
\edef\pgf at temp{\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\fi%
- \xdef\pgf at marshal{%
- \noexpand\tikzext at do@hvvh
+ \edef\tikzext at temp{%
+ \endgroup
+ \tikzext at ortho@savetimer
+ \noexpand\tikzext at ortho@do
{\expandafter\noexpand\pgf at tempa}%
{\expandafter\noexpand\pgf at tempb}%
{\expandafter\noexpand\pgf at temp}%
- {\noexpand\tikzext at timer@vhvline}{\tikz at shapeborder@name}}%
- \endgroup
- \pgf at marshal}%
+ {\tikz at shapeborder@name}}%
+ \tikzext at temp
+}
%% r-ud operator
-\def\tikzext at tikz@@ud at lineto#1{%
- \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
+\def\tikzext at ortho@ud at do#1{\tikzext at ortho@uddu at do{#1}{}{ud}{<}}
+
+%% r-du operator
+\def\tikzext at ortho@du at do#1{\tikzext at ortho@uddu at do{#1}{-}{du}{>}}
+
+%% r-lr operator
+\def\tikzext at ortho@lr at do#1{\tikzext at ortho@lrrl at do{#1}{-}{lr}{>}}
+
+%% r-rl operator
+\def\tikzext at ortho@rl at do#1{\tikzext at ortho@lrrl at do{#1}{}{rl}{<}}
+
+% ud/du
+\def\tikzext at ortho@uddu at do#1#2#3#4{%
+ \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\pgf at xc\tikz at lastx
\pgf at yb\tikz at lasty
- \advance\tikz at lasty1pt%
+ \advance\tikz at lasty#21pt%
\let\pgf at temp\tikz at moveto@waiting
\tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
\tikz at make@last at position{#1}%
\begingroup
- \tikzextset{ortho/.expand once=\tikz at hvvh@currentoption}%
- \pgfmathsetlength\tikzext at tikz@udlr at distance{\pgfkeysvalueof{/tikz/ext/ortho/ud distance}}%
- \iftikz at shapeborder
- \advance\pgf at y1pt%
- \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
- \iftikzext at tikz@hvvh at fromcenter
- \pgf at yc\pgf at yb
- \else\ifx\pgf at temp\relax
- \pgf at yc\pgf at yb
- \fi
- \fi
- \ifdim\pgf at yc<\pgf at y
- \iftikzext at tikz@hvvh at fromcenter
- \pgf at yc=\tikz at lasty
- \else
- \pgf at yc=\pgf at y
- \fi
- \fi
- \advance\pgf at yc\tikzext at tikz@udlr at distance
- \edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
+ \def\tikzext at temp{\pgfqkeys{/tikz/ext/ortho}}%
+ \expandafter\tikzext at temp\expandafter{\tikzext at ortho@options}%
+ \pgfmathparse{\pgfkeysvalueof{/tikz/ext/ortho/#3 distance}}%
+ \ifpgfmathunitsdeclared
+ \pgfutil at tempdima=\pgfmathresult pt
\else
- \let\tikz at shapeborder@name\pgfutil at empty
- \ifx\pgf at temp\relax\else
- \iftikzext at tikz@hvvh at fromcenter\else
- \pgf at yb\pgf at yc
- \fi
+ \pgf at process{\pgfqpointxy{0}{\pgfmathresult}}%
+ \pgfutil at tempdima=\pgf at y
+ \ifdim\pgfutil at tempdima<0pt
+ \pgfutil at tempdima=-\pgfutil at tempdima
\fi
- \ifdim\pgf at yb<\tikz at lasty\pgf at yb\tikz at lasty\fi
- \advance\pgf at yb\tikzext at tikz@udlr at distance
- \pgf at yc\pgf at yb
- \edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\fi
- \xdef\pgf at marshal{%
- \noexpand\tikzext at do@hvvh
- {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
- {\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
- {\expandafter\noexpand\pgf at temp}%
- {\noexpand\tikzext at timer@vhvline}{\tikz at shapeborder@name}}%
- \endgroup
- \pgf at marshal}%
-
-%% r-du operator
-\def\tikzext at tikz@@du at lineto#1{%
- \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
- \pgf at xc\tikz at lastx
- \pgf at yb\tikz at lasty
- \advance\tikz at lasty-1pt%
- \let\pgf at temp\tikz at moveto@waiting
- \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
- \tikz at make@last at position{#1}%
- \begingroup
- \tikzextset{ortho/.expand once=\tikz at hvvh@currentoption}%
- \pgfmathsetlength\tikzext at tikz@udlr at distance{\pgfkeysvalueof{/tikz/ext/ortho/du distance}}%
\iftikz at shapeborder
- \advance\pgf at y-1pt%
+ \advance\pgf at y#21pt%
\pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
- \iftikzext at tikz@hvvh at fromcenter
+ \iftikzext at ortho@fromcenter
\pgf at yc\pgf at yb
\else\ifx\pgf at temp\relax
\pgf at yc\pgf at yb
\fi
\fi
- \ifdim\pgf at yc>\pgf at y
- \iftikzext at tikz@hvvh at fromcenter
+ \ifdim\pgf at yc#4\pgf at y
+ \iftikzext at ortho@fromcenter
\pgf at yc=\tikz at lasty
\else
\pgf at yc=\pgf at y
\fi
\fi
- \advance\pgf at yc-\tikzext at tikz@udlr at distance
+ \advance\pgf at yc#2\pgfutil at tempdima
\edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
\else
\let\tikz at shapeborder@name\pgfutil at empty
\ifx\pgf at temp\relax\else
- \iftikzext at tikz@hvvh at fromcenter\else
+ \iftikzext at ortho@fromcenter\else
\pgf at yb\pgf at yc
\fi
\fi
- \ifdim\pgf at yb>\tikz at lasty\pgf at yb\tikz at lasty\fi
- \advance\pgf at yb-\tikzext at tikz@udlr at distance
+ \ifdim\pgf at yb#4\tikz at lasty\pgf at yb\tikz at lasty\fi
+ \advance\pgf at yb#2\pgfutil at tempdima
\pgf at yc\pgf at yb
\edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\fi
- \xdef\pgf at marshal{%
- \noexpand\tikzext at do@hvvh
+ \edef\tikzext at temp{%
+ \endgroup
+ \tikzext at ortho@savetimer
+ \noexpand\tikzext at ortho@do
{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\pgf at yc}}%
{\expandafter\noexpand\pgf at temp}%
- {\noexpand\tikzext at timer@vhvline}{\tikz at shapeborder@name}}%
- \endgroup
- \pgf at marshal}%
+ {\tikz at shapeborder@name}}%
+ \tikzext at temp
+}
-%% r-lr operator
-\def\tikzext at tikz@@lr at lineto#1{%
+%% lr/rl
+\def\tikzext at ortho@lrrl at do#1#2#3#4{%
\edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\pgf at xb\tikz at lastx
\pgf at yc\tikz at lasty
- \advance\tikz at lastx-1pt%
+ \advance\tikz at lastx#21pt%
\let\pgf at temp\tikz at moveto@waiting
\tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
\tikz at make@last at position{#1}%
\begingroup
- \tikzextset{ortho/.expand once=\tikz at hvvh@currentoption}%
- \pgfmathsetlength\tikzext at tikz@udlr at distance{\pgfkeysvalueof{/tikz/ext/ortho/lr distance}}%
+ \def\tikzext at temp{\pgfqkeys{/tikz/ext/ortho}}%
+ \expandafter\tikzext at temp\expandafter{\tikzext at ortho@options}%
+ \pgfmathparse{\pgfkeysvalueof{/tikz/ext/ortho/#3 distance}}%
+ \ifpgfmathunitsdeclared
+ \pgfutil at tempdima=\pgfmathresult pt
+ \else
+ \pgf at process{\pgfqpointxy{\pgfmathresult}{0}}%
+ \pgfutil at tempdima=\pgf at x
+ \ifdim\pgfutil at tempdima<0pt
+ \pgfutil at tempdima=-\pgfutil at tempdima
+ \fi
+ \fi
\iftikz at shapeborder
- \advance\pgf at x-1pt%
+ \advance\pgf at x#21pt%
\pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
- \iftikzext at tikz@hvvh at fromcenter
+ \iftikzext at ortho@fromcenter
\pgf at xc\pgf at xb
\else\ifx\pgf at temp\relax
\pgf at xc\pgf at xb
\fi
\fi
- \ifdim\pgf at xc>\pgf at x
- \iftikzext at tikz@hvvh at fromcenter
+ \ifdim\pgf at xc#4\pgf at x
+ \iftikzext at ortho@fromcenter
\pgf at xc=\tikz at lastx
\else
\pgf at xc=\pgf at x
\fi
\fi
- \advance\pgf at xc-\tikzext at tikz@udlr at distance
+ \advance\pgf at xc#2\pgfutil at tempdima
\edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
\else
\let\tikz at shapeborder@name\pgfutil at empty
\ifx\pgf at temp\relax\else
- \iftikzext at tikz@hvvh at fromcenter\else
+ \iftikzext at ortho@fromcenter\else
\pgf at xb\pgf at xc
\fi
\fi
- \ifdim\pgf at xb>\tikz at lastx\pgf at xb\tikz at lastx\fi
- \advance\pgf at xb-\tikzext at tikz@udlr at distance
+ \ifdim\pgf at xb#4\tikz at lastx\pgf at xb\tikz at lastx\fi
+ \advance\pgf at xb#2\pgfutil at tempdima
\pgf at xc\pgf at xb
\edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
\fi
- \xdef\pgf at marshal{%
- \noexpand\tikzext at do@hvvh
- {\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
- {\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
- {\expandafter\noexpand\pgf at temp}%
- {\noexpand\tikzext at timer@hvhline}{\tikz at shapeborder@name}}%
+ \edef\tikzext at temp{%
\endgroup
- \pgf at marshal}%
-
-%% r-rl operator
-\def\tikzext at tikz@@rl at lineto#1{%
- \edef\tikz at timer@start{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
- \pgf at xb\tikz at lastx
- \pgf at yc\tikz at lasty
- \advance\tikz at lastx1pt%
- \let\pgf at temp\tikz at moveto@waiting
- \tikz at flush@moveto at toward{\pgfqpoint{\tikz at lastx}{\tikz at lasty}}\pgf at xc\pgf at yc
- \tikz at make@last at position{#1}%
- \begingroup
- \tikzextset{ortho/.expand once=\tikz at hvvh@currentoption}%
- \pgfmathsetlength\tikzext at tikz@udlr at distance{\pgfkeysvalueof{/tikz/ext/ortho/rl distance}}%
- \iftikz at shapeborder%
- \advance\pgf at x1pt%
- \pgf at process{\pgfpointshapeborder{\tikz at shapeborder@name}{\pgfqpoint{\pgf at x}{\pgf at y}}}%
- \iftikzext at tikz@hvvh at fromcenter
- \pgf at xc\pgf at xb
- \else\ifx\pgf at temp\relax
- \pgf at xc\pgf at xb
- \fi
- \fi
- \ifdim\pgf at xc<\pgf at x
- \iftikzext at tikz@hvvh at fromcenter
- \pgf at xc=\tikz at lastx
- \else
- \pgf at xc=\pgf at x
- \fi
- \fi
- \advance\pgf at xc\tikzext at tikz@udlr at distance
- \edef\pgf at temp{\noexpand\pgfqpoint{\the\pgf at x}{\the\pgf at y}}%
- \else
- \let\tikz at shapeborder@name\pgfutil at empty%
- \ifx\pgf at temp\relax\else
- \iftikzext at tikz@hvvh at fromcenter\else
- \pgf at xb\pgf at xc
- \fi
- \fi
- \ifdim\pgf at xb<\tikz at lastx\pgf at xb\tikz at lastx\fi
- \advance\pgf at xb\tikzext at tikz@udlr at distance
- \pgf at xc\pgf at xb
- \edef\pgf at temp{\noexpand\pgfqpoint{\the\tikz at lastx}{\the\tikz at lasty}}%
- \fi
- \xdef\pgf at marshal{%
- \noexpand\tikzext at do@hvvh
+ \tikzext at ortho@savetimer
+ \noexpand\tikzext at ortho@do
{\noexpand\pgfqpoint{\the\pgf at xc}{\the\pgf at yc}}%
{\noexpand\pgfqpoint{\the\pgf at xc}{\the\tikz at lasty}}%
{\expandafter\noexpand\pgf at temp}%
- {\noexpand\tikzext at timer@hvhline}{\tikz at shapeborder@name}}%
- \endgroup
- \pgf at marshal}%
+ {\tikz at shapeborder@name}}%
+ \tikzext at temp
+}
%% a few nice to haves, use with to or edge operator
\tikzextset{
@@ -656,7 +630,7 @@
\edef\tikztostart{[xshift={#1}]\tikztostart\tikzext at ortho@anchor}%
\fi
\endpgfextra
- expandafter(\tikztostart)
+ \expandafter(\tikztostart)
-- (perpendicular cs: vertical line through/.expanded={(\tikztostart)},
horizontal line through={(\tikztotarget)})
\tikztonodes
@@ -740,4 +714,4 @@
},
compat/paths.ortho/\pgfkeysvalueof{/tikz/ext/compat/paths.ortho}%
}
-\endinput
\ No newline at end of file
+\endinput
Modified: trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty 2025-04-24 20:26:06 UTC (rev 75013)
+++ trunk/Master/texmf-dist/tex/latex/tikz-ext/pgffor-ext.sty 2025-04-24 20:26:20 UTC (rev 75014)
@@ -7,14 +7,9 @@
%
\RequirePackage{pgffor}
-\ifcsname tikzext at pgffor@nolist at parse\endcsname
- \expandafter\@gobble
-\else
- \expandafter\@firstofone
+\unless\ifcsname iftikzext at pgffor@nolist\endcsname
+ \input pgffor-ext.code.tex
\fi
-{
- \input{pgffor-ext.code.tex}
-}
\pgfqkeys{/pgf/foreach/ext}{
.code=\pgfqkeys{/pgf/foreach/ext}{#1},
More information about the tex-live-commits
mailing list.