summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-10-24 03:03:39 +0000
committerNorbert Preining <norbert@preining.info>2022-10-24 03:03:39 +0000
commit74697976d2ffe935077542593ccbb18a00603251 (patch)
treeca88ce389275df22be5c2c843de613d8003bf684 /graphics
parent588d4f81788b3a24bd9bd480ec40bb55be4d1da1 (diff)
CTAN sync 202210240303
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pgf/contrib/tikz-ext/README.md1
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-calendar.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-calendar.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-intro.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-intro.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-calendar-plus.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-misc.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-misc.tex)113
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-node-families.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-node-families.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.arcto.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.ortho.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex)6
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.timer.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-patterns.images.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-positioning-plus.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-topaths.arcthrough.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-trans.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-trans.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-main-body.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-main-body.tex)12
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-main-preamble.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-main-preamble.tex)17
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-circlearrow.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-circlearrow.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-circlecrosssplit.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-circlecrosssplit.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-heatmark.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-heatmark.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-rectround.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-rectround.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-superellipse.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-superellipse.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-uncentered.tex99
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-trans.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-trans.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.bib (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.bib)59
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.pdf (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.pdf)bin534933 -> 574442 bytes
-rw-r--r--graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.tex (renamed from graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.tex)0
-rw-r--r--graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfcalendar-ext.code.tex2
-rw-r--r--graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex139
-rw-r--r--graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.pgfkeys-plus.code.tex11
-rw-r--r--graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex307
-rw-r--r--graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex77
-rw-r--r--graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.paths.arcto.code.tex4
-rw-r--r--graphics/pstricks/base/Changes5
-rw-r--r--graphics/pstricks/base/doc/pst-news22.pdfbin79990 -> 93124 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news22.tex46
-rw-r--r--graphics/pstricks/base/dvips/pstricks.pro10
-rw-r--r--graphics/pstricks/base/generic/pstricks.tex21
-rw-r--r--graphics/pstricks/base/latex/pstricks.sty7
37 files changed, 784 insertions, 152 deletions
diff --git a/graphics/pgf/contrib/tikz-ext/README.md b/graphics/pgf/contrib/tikz-ext/README.md
index 33ec46d366..76ea094357 100644
--- a/graphics/pgf/contrib/tikz-ext/README.md
+++ b/graphics/pgf/contrib/tikz-ext/README.md
@@ -31,6 +31,7 @@ These are
* `ext.shapes.heatmark`
* `ext.shapes.rectangleroundedcorners`
* `ext.shapes.superellipse`
+ * `ext.shapes.uncenteredrectangle`
These were developed in response to questions on tex.stackexchange.com.
Some of these can be find by searching for my [user id](https://tex.stackexchange.com/search?q=user%3A16595+%22my+library%22). \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-calendar.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-calendar.tex
index 09bd261a21..09bd261a21 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-calendar.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-calendar.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-intro.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-intro.tex
index f9468175cb..f9468175cb 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-intro.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-intro.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-calendar-plus.tex
index bdfd225f3c..bdfd225f3c 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-calendar-plus.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-calendar-plus.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-misc.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-misc.tex
index 163097e6a1..44228a5445 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-misc.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-misc.tex
@@ -136,14 +136,38 @@ them in |"|.
(intersection of @--[shift=(vecB)]@ and B--A) coordinate (A);}
\end{tikzpicture}
\end{codeexample}
-\pagebreak
+
+\subsection{\pgfname for}
+
+Instead of |\foreach \var in {start, start + delta, ..., end}| one can use
+|\foreach \var[use int=start to end step delta]|.
+
+\begin{key}{/pgf/foreach/use int=\meta{start}|to|\meta{end}\opt{|step|\meta{delta}}}
+The values \meta{start}, \meta{end} and \meta{delta} are evaluates by \pgfname math at initialization.
+The part |step |\meta{delta} is optional (\meta{delta} = 1).
+\end{key}
+
+\begin{key}{/pgf/foreach/use float=\meta{start}|to|\meta{end}\opt{|step|\meta{delta}}}
+Same as above, however the results are not truncated.
+\end{key}
+
+%TODO: edges to and edges through
+%\pagebreak
+
\subsection{\pgfname keys}
-%
+\begin{pgfkeyslibrary}{ext.pgfkeys-plus}
+ This extends \pgfname keys and adds helpful |/utils| keys as well as handlers.
+ This library gets loaded by the |ext.misc| library.%
+ \footnote{\texttt{\string\usepgfkeyslibrary} is an upcoming feature of \pgfname/\tikzname.
+ For now, you need to load \texttt{ext.misc}
+ or manually \texttt{\string\input} the file \texttt{pgfkeyslibraryext.pgfkeys-plus.code.tex}
+ with \texttt{@} being a letter.}
+\end{pgfkeyslibrary}
+
\begin{multicols}{2}
-%
\subsubsection{Conditionals}
-\begin{key}{/utils/if=\meta{cond}\meta{true}\opt{\meta{false}}}
+\begin{key}{/utils/if=\marg{cond}\marg{true}\opt{\marg{false}}}
This key checks the conditional \meta{cond} and applies the styles \meta{true}
if \meta{cond} is true, otherwise \meta{false}.
\meta{cond} can be anything that \pgfname math understands.
@@ -155,7 +179,7 @@ them in |"|.
The following keys use \TeX' macros |\if|, |\ifx|, |\ifnum| and |\ifdim| for faster
executions.
-\begin{key}{/utils/TeX/if=\meta{token A}\meta{token B}\meta{true}\opt{\meta{false}}}
+\begin{key}{/utils/TeX/if=\meta{token A}\meta{token B}\marg{true}\opt{\marg{false}}}
This key checks via |\if| if \meta{token A} matches \meta{token B}
and applies the styles \meta{true} if it does, otherwise \meta{false}.
@@ -163,28 +187,31 @@ executions.
actually optional.
\end{key}
-\begin{key}{/utils/TeX/ifx=\meta{token A}\meta{token B}\meta{true}\opt{\meta{false}}}
- As above.
+\begin{key}{/utils/TeX/ifx=\meta{token A}\meta{token B}\marg{true}\opt{\marg{false}}}
+ As above but via |\ifx|.
\end{key}
-\begin{key}{/utils/TeX/ifnum=\meta{num cond}\meta{true}\\opt{\meta{false}}}
+\begin{key}{/utils/TeX/ifnum=\marg{num cond}\marg{true}\opt{\marg{false}}}
This key checks |\ifnum|\meta{num cond}
and applies the styles \meta{true} if true, otherwise \meta{false}.
A delimiting |\relax| will be inserted after \meta{num cond}.
- As a side effect on how \pgfname keys parses argument, the \meta{false} argument is
+ As a side effect on how \pgfname keys parses arguments, the \meta{false} argument is
actually optional.
\end{key}
\begin{key}{/utils/TeX/ifdim=\meta{dim cond}\meta{true}\opt{\meta{false}}}
- As above.
+ As above but with |\ifdim|.
\end{key}
\begin{key}{/utils/TeX/ifempty=\meta{Text}\meta{true}\opt{\meta{false}}}
This checks whether \meta{Text} is empty and applies styles \meta{true} if true,
otherwise \meta{false}.
\end{key}
-
+\begin{key}{/utils/TeX/ifxempty=\meta{Text}\meta{true}\opt{\meta{false}}}
+ This checks whether fully expanded \meta{Text} is empty and applies styles \meta{true} if true,
+ otherwise \meta{false}.
+\end{key}
\subsubsection{Handlers}
@@ -193,27 +220,58 @@ not all of them are.
\begin{handler}{{.pgfmath}|=|\meta{eval}}
This handler evaluates \meta{eval} before it is handed to the key.
+
+ This handler works almost the same as the |.evaluated|\indexHandlerO{.evaluated}
+ handler but it does its evaluation in a group so that the result will
+ not overwrite any other results.
\end{handler}
\begin{handler}{{.pgfmath int}|=|\meta{eval}}
As above but truncates the result.
\end{handler}
-\begin{handler}{{.pgfmath strcat}|=|\meta{eval}}
- As above but uses the |strcat| function.
+\begin{handler}{{.pgfmath wrap}|=|\marg{wrapper}\marg{eval}}
+ This feeds the result of \meta{eval} as |#1| to \meta{wrapper}.
- In the example below, one could have used the |/pgf/foreach/evaluate| key from |\foreach|.
-\begin{codeexample}[width=3.7cm,preamble=\usetikzlibrary{misc}]
+ In the example below, one could have used the \referenceKeyandIndexO[/pgf/foreach/]{evaluate}
+ key from the |\foreach| loop.
+\begin{codeexample}[width=3.7cm,preamble=\usetikzlibrary{ext.pgfkeys-plus}]
\tikz\foreach \i in {0,10,...,100}
\draw[
- line width=+.2cm,
- color/.pgfmath strcat={"red!",sqrt(\i)*10,"!blue"}
+ line width=+.25cm,
+ % needs ## because its inside the \foreach body
+ color/.pgfmath wrap={red!##1!blue}{sqrt(\i)*10}
]
- (0,\i/50) -- +(right:3);
+ (0,\i/40) -- +(right:3);
\end{codeexample}
\end{handler}
-\begin{handler}{{.List}|=|\meta{\meta{e1}, \meta{e2}, \dots, \meta{en}}}
+\begin{handler}{{.pgfmath if}|=|\marg{cond}\marg{true}\opt{\marg{false}}}
+ Evaluates \meta{cond} with \pgfname Math and returns \meta{true} or \meta{false} to the used key respectively.
+\end{handler}
+\begin{handler}{{.if}|=|\meta{token A}\meta{token B}\marg{true}\opt{\marg{false}}}
+ Checks via |\if| if \meta{token A} matches \meta{token B}
+ and applies the value \meta{true} if it does, otherwise \meta{false}.
+\end{handler}
+\begin{handler}{{.ifx}|=|\meta{token A}\meta{token B}\marg{true}\opt{\marg{false}}}
+ As above but via |\ifx|.
+\end{handler}
+\begin{handler}{{.ifnum}|=|\marg{ifnum cond}\marg{true}\opt{\marg{false}}}
+ Checks via |\ifnum| if \meta{ifnum cond}
+ and applies the value \meta{true} if it does, otherwise \meta{false}.
+\end{handler}
+\begin{handler}{{.ifdim}|=|\marg{ifdim cond}\marg{true}\opt{\marg{false}}}
+ As above but via |\ifdim|.
+\end{handler}
+\begin{handler}{{.ifxempty}|=|\marg{Text}\marg{true}\opt{\marg{false}}}
+ Checks whether a fully expanded \meta{Text} is empty
+ and applies the value \meta{true} if it does, otherwise \meta{false}.
+\end{handler}
+\begin{handler}{{.ifempty}|=|\marg{Text}\marg{true}\opt{\marg{false}}}
+ Checks whether \meta{Text} is empty
+ and applies the value \meta{true} if it does, otherwise \meta{false}.
+\end{handler}
+\begin{handler}{{.List}|=|\marg{\meta{e1}, \meta{e2}, \dots, \meta{en}}}
This handler evaluates the given list with |\foreach| and concatenates the element and
the result is then given to the used key.
\end{handler}
@@ -221,26 +279,11 @@ not all of them are.
\begin{codeexample}[width=6cm,preamble=\usetikzlibrary{fit,ext.misc}]
\begin{tikzpicture}[nodes={draw, dashed, inner sep=+10pt}]
\foreach \point [count=\cnt] in {(0,0), (0,2), (2,0), (2,2), (3,3), (-1,-1)}
- \fill \point circle[radius=.1] coordinate (point-\cnt);
+ \node[circle, fill, inner sep=1pt, text=white] (point-\cnt) at \point {\cnt};
\node[gray, fit/.List={(point-1),(point-...),(point-4)}] {};
\node[red, fit/.List={(point-1),(point-...),(point-5)}] {};
\node[blue, fit/.List={(point-1),(point-...),(point-6)}] {};
\end{tikzpicture}
\end{codeexample}
-\subsection{\pgfname for}
-
-Instead of |\foreach \var in {start, start + delta, ..., end}| one can use
-|\foreach \var[use int=start to end step delta]|.
-
-\begin{key}{/pgf/foreach/use int=\meta{start}|to|\meta{end}\opt{|step|\meta{delta}}}
-The values \meta{start}, \meta{end} and \meta{delta} are evaluates by \pgfname math at initialization.
-The part |step |\meta{delta} is optional (\meta{delta} = 1).
-\end{key}
-
-\begin{key}{/pgf/foreach/use float=\meta{start}|to|\meta{end}\opt{|step|\meta{delta}}}
-Same as above, however the results are not truncated.
-\end{key}
-
-%TODO: edges to and edges through
\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-node-families.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-node-families.tex
index d4b274511c..d4b274511c 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-node-families.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-node-families.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.arcto.tex
index 8ed660b3a3..8ed660b3a3 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.arcto.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.arcto.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.ortho.tex
index ba78f47dcb..18264156c9 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.ortho.tex
@@ -128,7 +128,7 @@ these can be configured through the following keys.
\end{key}
\end{pathoperation}
-All distances can be set with on key.
+All distances can be set with one key.
\begin{key}{/tikz/ortho/udlr distance=\meta{length}}
Sets all the previous distances to the same value \meta{length}.
\end{key}
@@ -192,8 +192,8 @@ Installs the following shortcuts:\\
\pgfmanualbar-\pgfmanualbar & vertical horizontal vertical \\
\pgfmanualbar* & only vertical first \\
*\pgfmanualbar & only vertical second \\
- \pgfmanualbar* & only vertical first \\
- *\pgfmanualbar & only vertical second
+ -* & only horizontal first \\
+ *- & only horizontal second
\end{tabular}
}
\end{stylekey}
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.timer.tex
index 595a647917..595a647917 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-paths.timer.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-paths.timer.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-patterns.images.tex
index c3c38a8517..c3c38a8517 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-patterns.images.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-patterns.images.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-positioning-plus.tex
index 56c81376aa..56c81376aa 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-positioning-plus.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-positioning-plus.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-topaths.arcthrough.tex
index 1d9e5ba9df..1d9e5ba9df 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-topaths.arcthrough.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-topaths.arcthrough.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-trans.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-trans.tex
index 97011bc4d0..97011bc4d0 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-library-trans.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-library-trans.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-main-body.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-main-body.tex
index fd071e009e..41e56c390e 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-main-body.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-main-body.tex
@@ -8,7 +8,7 @@
% 2. under the GNU Free Documentation License.
%
\newcommand*\tikzextname{Ti\textit kZ-Extensions}
-\newcommand*\tikzextversion{0.4}
+\newcommand*\tikzextversion{0.4.1}
\begin{document}
{\colorlet{blue}{black}% links shall be black
\title{\bfseries The \tikzextname\space Package\\
@@ -125,6 +125,8 @@ These libraries (should) work with both \pgfname\space and \tikzname.
\include{tikz-ext-manual-en-pgf-shapes-heatmark}
\include{tikz-ext-manual-en-pgf-shapes-rectround}
\include{tikz-ext-manual-en-pgf-shapes-superellipse}
+\include{tikz-ext-manual-en-pgf-shapes-uncentered}
+
\part{Utilities}
\label{part:misc}
@@ -162,11 +164,19 @@ These libraries (should) work with both \pgfname\space and \tikzname.
%%% END
\newcommand*{\addTikz}[1]{Added \tikzname\space library \texttt{ext.#1}.}
\newcommand*{\addPGF}[1]{Added \pgfname\space library \texttt{ext.#1}.}
+\newcommand*{\addPGFkeys}[1]{Added \pgfname keys library \texttt{ext.#1}.}
\newcommand*{\addShape}[2][]{Added shape \texttt{\ifx\\#1\\#2\else#1\fi}\\(\pgfname\space library \texttt{ext.shapes.#2}).}
\part{Changelog, Index \& References}
\section*{Changelog}\addcontentsline{toc}{section}{Changelog}
\begin{multicols}{2}\raggedright
\noindent
+Version 0.4.1
+\begin{itemize}
+\item Cleaned up directory structure of documentary.
+\item \addPGFkeys{pgfkeys-plus}
+\item \addShape[uncentered rectangle]{uncenteredrectangle}
+\item Fixed |ext.paths.arcto| -- again \cite{GH2}.
+\end{itemize}
Version 0.4
\begin{itemize}
\item CTAN version of 0.3.1
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-main-preamble.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-main-preamble.tex
index 494d63e012..2ba6defa10 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-main-preamble.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-main-preamble.tex
@@ -41,6 +41,21 @@
\tracinglostchars=3
\input{pgfmanual-en-macros}
+\newenvironment{pgfkeyslibrary}[1]{% from pgfmanual-en-macros
+ \begin{pgfmanualentry}%
+ \pgfmanualentryheadline{%
+ \pgfmanualpdflabel{#1}{}%
+ \textbf{pgfkeys Library} \texttt{\declare{#1}}}%
+ \index{#1@\protect\texttt{#1} pgfkeys library}%
+ \index{pgfkeys Libraries!#1@\protect\texttt{#1}}%
+ \vskip.25em
+ {{\ttfamily\char`\\usepgfkeyslibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX\space and plain \TeX}}\\
+ {{\ttfamily\char`\\usepgfkeyslibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}}\\[.5em]%
+ \pgfmanualbody
+}%
+{%
+ \end{pgfmanualentry}%
+}
\usepackage{unicode-math}
\setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
@@ -105,10 +120,12 @@
ext.shapes.circlecrosssplit,
ext.shapes.rectangleroundedcorners,
ext.shapes.superellipse,
+ ext.shapes.uncenteredrectangle,
ext.topaths.arcthrough,
ext.transformations.mirror,
%
calc,
+ cd,
fit,
matrix,
shapes.geometric,
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-circlearrow.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-circlearrow.tex
index e26711bb35..e26711bb35 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-circlearrow.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-circlearrow.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-circlecrosssplit.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-circlecrosssplit.tex
index e7b2b9ba5a..e7b2b9ba5a 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-circlecrosssplit.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-circlecrosssplit.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-heatmark.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-heatmark.tex
index fa13cb0000..fa13cb0000 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-heatmark.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-heatmark.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-rectround.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-rectround.tex
index 78bab76925..78bab76925 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-rectround.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-rectround.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-superellipse.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-superellipse.tex
index 580ef0d93f..580ef0d93f 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-shapes-superellipse.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-superellipse.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-uncentered.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-uncentered.tex
new file mode 100644
index 0000000000..cb79e4ac7b
--- /dev/null
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-shapes-uncentered.tex
@@ -0,0 +1,99 @@
+% !TeX spellcheck = en_US
+% !TeX root = tikz-ext-manual.tex
+% Copyright 2022 by Qrrbrbirlbel
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+
+\section{Shape: Uncentered Rectangle}
+\begin{pgflibrary}{ext.shapes.uncenteredrectangle}
+ A rectangle that has a variable horizontal center with three node parts.
+ \inspiration{UncRectCD-Q,UncRectForest-Q}{UncRectCD-A,UncRectForest-A}
+\end{pgflibrary}
+\begin{shape}{uncentered rectangle}
+
+For some alignment problems, this shape could be useful.
+
+It has three node parts: the standard |text| part,
+the |left| part that is to the left of |text|
+and the |right| part that is to the right of |text|.
+
+When edges are to be connected with this shape, the
+following key changes to which inner center this shape will
+calculate the appropriate point on the border.
+\begin{key}{/pgf/uncentered rectangle center=\meta{left}\textrm{ or }\meta{text}\textrm{ or }\meta{right}\textrm{ or }\meta{real} (initially text)}
+ Sets the center that is to be used for connecting edges.
+
+ This will also move the anchors |north|, |mid|, |base| and |south| along.
+ In the picture below, this are marked red.
+\end{key}
+
+For support of the \referenceLibraryandIndexO{cd} library of the |tikz-cd| package,
+this shape also supports a dynamic $y$ value for its anchors |center|, |west| and |east|.
+\begin{key}{/pgf/uncentered rectangle center yshift=\meta{dimension} (initially \{\})}
+ This determines the distance between the baseline and the |center| anchors.
+
+ If \meta{dimension} is empty, the real center will be used which is the default.
+
+ For use with |cd|, set this to |axis_height|.
+ Due to a bug with \referenceKeyandIndexO{execute at end node}
+ this needs a lot of fixing to be able to use in a commutative diagram, though.
+
+\tikzexternaldisable
+\catcode`\|=12
+\begin{codeexample}[leave comments, preamble=\usetikzlibrary{cd, ext.shapes.uncenteredrectangle}]
+\makeatletter
+\tikzcdset{
+ every diagram/.append style={
+ /pgf/uncentered rectangle center=text,
+ /tikz/math align/.style={
+ shape=uncentered rectangle,
+ /pgf/uncentered rectangle center yshift=axis_height,
+ commutative diagrams/math mode=false},
+ /tikz/math align left/.style={
+ math align,
+ /utils/exec={\def\mathalign####1=####2;{$####2$\nodepart{left}$####1={}$}}},
+ /tikz/math align right/.style={
+ math align,
+ /utils/exec={\def\mathalign####1=####2;{$####1$\nodepart{right}${}=####2$}}},
+ /tikz/matrix of math nodes/.style={
+ matrix of nodes,
+ nodes={
+ execute at begin node=\iftikzcd@mathmode$\fi,
+ execute at end node =\iftikzcd@mathmode$\fi}}}}
+\makeatother
+\tikzcdset{install C shortcut/.code=\newcommand*\C[1]{C_{\%_{##1}}}}
+\begin{tikzcd}[
+ install C shortcut,
+ sep=tiny,
+ arrows={-, gray},
+ cells={font=\strut, inner xsep=.2ex, inner ysep=.1ex}
+]
+\C{1} \drar & & |[math align right]| \mathalign m_{r_1} = \C{2}-C_\%; \dlar\\
+ & C_\% \\
+\C{2} \urar & & |[math align right]| \mathalign m_{r_2} = \C{1}-C_\%; \ular
+\end{tikzcd}
+\end{codeexample}
+\end{key}
+\pagebreak
+\begin{codeexample}[preamble=\usepgflibrary{ext.shapes.uncenteredrectangle}]
+\begin{tikzpicture}[style north/.style=red, style south/.style=red, style center/.style=red, style base/.style=red, style mid/.style=red]
+\Huge
+\node[shape example, name=n, uncentered rectangle]
+ {centered \nodepart{left} Un \nodepart{right} \space Rectangle\vrule width 1pt height 2cm}
+ foreach \anchor/\pos in {
+ north west/above left, north/below, north east/above right, real north/above, left north/above, right north/above, text north/above,
+ west/left, center/above, east/right, real center/above, left center/above,right center/above,text center/below,
+ mid west/left, mid/left, mid east/right, real mid/above, left mid/above, right mid/above, text mid/above,
+ base west/left, base/right, base east/right, real base/below, left base/below, right base/below, text base/below,
+ south west/below left, south/above, south east/below right, real south/below, left south/below, right south/below, text south/below,
+ 10/right, 130/below, left/left, right/right, text/right}{
+ plot[mark=x, only marks] coordinates {(n.\anchor)}
+ node[inner sep=.1em, style \anchor/.try, style/.expand once=\pos] {\tiny\ttfamily\anchor}};
+\end{tikzpicture}
+\end{codeexample}
+\end{shape}
+\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-trans.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-trans.tex
index ccd378a6e7..ccd378a6e7 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual-en-pgf-trans.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual-en-pgf-trans.tex
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.bib b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.bib
index 5a13e91d41..60cf094472 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.bib
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.bib
@@ -319,4 +319,63 @@
year = {2022},
}
+'
+@Software{GH2,
+ abstract = {{clockwise/counter clockwise does not seem to work reliably}},
+ author = {marmotghost},
+ month = oct,
+ title = {clockwise/counter clockwise does not seem to work reliably},
+ url = {https://github.com/Qrrbrbirlbel/tikz-extensions/issues/2},
+ urldate = {2022-10-23},
+ 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},
+ month = oct,
+ title = {forest - automatic setting of the alignment of some labels},
+ titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+ url = {https://tex.stackexchange.com/q/661726/16595},
+ urldate = {2022-10-23},
+ year = {2022},
+}
+
+@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},
+ month = oct,
+ title = {Answer to \enquote{forest - automatic setting of the alignment of some labels}},
+ titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+ url = {https://tex.stackexchange.com/a/661746/16595},
+ urldate = {2022-10-23},
+ 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},
+ month = sep,
+ shorttitle = {How to draw a mixing rule?},
+ title = {How to draw a mixing rule? \#chemistry},
+ titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+ url = {https://tex.stackexchange.com/q/657432/16595},
+ urldate = {2022-10-23},
+ year = {2022},
+}
+
+@Online{UncRectCD-A,
+ author = {Qrrbrbirlbel},
+ file = {Snapshot:https\://tex.stackexchange.com/questions/657432/how-to-draw-a-mixing-rule-chemistry/657449#657449:text/html},
+ month = sep,
+ shorttitle = {Answer to \enquote{How to draw a mixing rule?}},
+ title = {Answer to \enquote{How to draw a mixing rule? \#chemistry}},
+ titleaddon = {{TeX} - {LaTeX} Stack Exchange},
+ url = {https://tex.stackexchange.com/a/657449/16595},
+ urldate = {2022-10-23},
+ year = {2022},
+}
+
@Comment{jabref-meta: databaseType:bibtex;}
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.pdf b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.pdf
index f4a31a8c6a..51ba04c7d1 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.pdf
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.tex b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.tex
index 253944ca7d..253944ca7d 100644
--- a/graphics/pgf/contrib/tikz-ext/doc/generic/tikz-ext/tikz-ext-manual.tex
+++ b/graphics/pgf/contrib/tikz-ext/doc/tikz-ext-manual.tex
diff --git a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfcalendar-ext.code.tex b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfcalendar-ext.code.tex
index 90b42a0011..fae3508e15 100644
--- a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfcalendar-ext.code.tex
+++ b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfcalendar-ext.code.tex
@@ -359,7 +359,7 @@
\pgfcalendar@launch@ifdate{#2}{#3}{#4}%
}
-\pgfqkeys{/pgf/calendar/week}{.value required,.code=\ifnum#1=\pgfcalendarifdateweek\relax\expandafter\pgfcalendarmatchestrue\fi}
+\pgfqkeys{/pgf/calendar/week}{.value required,.code={\ifnum#1=\pgfcalendarifdateweek\relax\expandafter\pgfcalendarmatchestrue\fi}}
% Overwriting shorthands of pgfcalendar
\expandafter\def\csname pgfcalendar@shorthand@d-\endcsname{%
diff --git a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex
new file mode 100644
index 0000000000..49aedb64c6
--- /dev/null
+++ b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex
@@ -0,0 +1,139 @@
+% Copyright 2022 by Qrrbrbirlbel
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+
+\input pgfmath.tex
+
+%% Handlers
+%% .pgfmath evaluates values given to keys in PGFmath before handing them over.
+%% .pgfmath int truncates the result
+%% .pgfmath strcat concatenates the given values
+\pgfqkeys{/handlers}{
+ .pgfmath/.code=%
+ \begingroup
+ \pgfmathparse{#1}%
+ \expandafter\endgroup\expandafter
+ \pgfkeys@exp@call\expandafter{\pgfmathresult},
+ .pgfmath int/.code=%
+ \begingroup
+ \pgfmathint{#1}%
+ \expandafter\endgroup\expandafter
+ \pgfkeys@exp@call\expandafter{\pgfmathresult},
+ .pgfmath wrap/.code 2 args={%
+ \def\pgfkeys@temp##1{\def\pgfkeys@temp{#1}}%
+ \begingroup
+ \pgfmathparse{#2}%
+ \expandafter\pgfkeys@temp\expandafter{\pgfmathresult}%
+ \expandafter\endgroup\expandafter
+ \pgfkeys@exp@call\expandafter{\pgfkeys@temp}%
+ },
+ .pgfmath if/.code n args={3}{%
+ \begingroup
+ \pgfmathifthenelse{#1}{"1"}{"0"}%
+ \expandafter\endgroup\expandafter
+ \ifcase\pgfmathresult\relax
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {\pgfkeys@exp@call{#3}}%
+ {\pgfkeys@exp@call{#2}}%
+ },
+ .if/.code n args={4}{%
+ \if#1#2%
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {\pgfkeys@exp@call{#3}}%
+ {\pgfkeys@exp@call{#4}}%
+ },
+ .ifnum/.code n args={3}{%
+ \ifnum#1\relax
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {\pgfkeys@exp@call{#2}}%
+ {\pgfkeys@exp@call{#3}}%
+ },
+ .ifdim/.code n args={3}{%
+ \ifdim#1\relax
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {\pgfkeys@exp@call{#2}}%
+ {\pgfkeys@exp@call{#3}}%
+ },
+ .ifx/.code n args={4}{%
+ \ifx#1#2%
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {\pgfkeys@exp@call{#3}}%
+ {\pgfkeys@exp@call{#4}}%
+ },
+ .ifxempty/.code n args={3}{%
+ \edef\pgfkeys@temp{#1}%
+ \pgfutil@ifxempty\pgfkeys@temp{\pgfkeys@exp@call{#2}}{\pgfkeys@exp@call{#3}}%
+ },
+ .ifempty/.code n args={3}{%
+ \pgfutil@ifempty{#1}{\pgfkeys@exp@call{#2}}{\pgfkeys@exp@call{#3}}%
+ },
+ %% http://tex.stackexchange.com/a/144187/16595
+ %% key/.List={(point-1),(point-2),(point-...),(point-6)} will call
+ %% key=(point-1)(point-2)(point-3)(point-4)(point-5),(point-6)
+ .List/.code=%
+ \let\pgfkeys@global@temp\pgfutil@empty
+ \foreach\pgfkeys@temp in{#1}{%
+ \expandafter\pgfutil@g@addto@macro\expandafter\pgfkeys@global@temp\expandafter{\pgfkeys@temp}%
+ }%
+ \expandafter\pgfkeys@exp@call\expandafter{\pgfkeys@global@temp}%
+}
+
+\pgfqkeys{/utils}{
+ if/.code n args={3}{%
+ \begingroup
+ \pgfmathifthenelse{#1}{"1"}{"0"}%
+ \expandafter\endgroup\expandafter
+ \ifcase\pgfmathresult\relax
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {\pgfkeysalso{#3}}
+ {\pgfkeysalso{#2}}%
+ },
+ TeX/if/.code n args={4}{%
+ \if#1#2\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
+ {\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
+ },
+ TeX/ifnum/.code n args={3}{%
+ \ifnum#1\relax\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
+ {\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+ },
+ TeX/ifdim/.code n args={3}{%
+ \ifdim#1\relax\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
+ {\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+ },
+ TeX/ifx/.code n args={4}{%
+ \ifx#1#2\relax\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
+ {\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
+ },
+ TeX/ifxempty/.code n args={3}{%
+ \edef\pgfkeys@temp{#1}%
+ \pgfutil@ifxempty\pgfkeys@temp{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+ },
+ TeX/ifempty/.code n args={3}{%
+ \pgfutil@ifempty{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
+ },
+ tex/.search also=/utils/TeX,
+}
+
+\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.pgfkeys-plus.code.tex b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.pgfkeys-plus.code.tex
new file mode 100644
index 0000000000..6101ca8cad
--- /dev/null
+++ b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.pgfkeys-plus.code.tex
@@ -0,0 +1,11 @@
+% Copyright 2022 by Qrrbrbirlbel
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+
+\input pgfkeyslibraryext.pgfkeys-plus.code.tex
+
+\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex
new file mode 100644
index 0000000000..630a22da14
--- /dev/null
+++ b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex
@@ -0,0 +1,307 @@
+% Copyright 2022 by Qrrbrbirlbel
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+\pgfutil@IfUndefined{pgfnodepartthreebox}{%
+ \newbox\pgfnodepartleftbox
+ \newbox\pgfnodepartrightbox
+}{%
+ \let\pgfnodepartleftbox\pgfnodeparttwobox
+ \let\pgfnodepartrightbox\pgfnodepartthreebox
+}
+\pgfset{
+ uncentered rectangle center yshift/.initial=,
+ uncentered rectangle center/@center/.initial=2,
+ uncentered rectangle center/.is choice,
+ uncentered rectangle center/real/.code=\pgfkeyssetvalue{/pgf/uncentered rectangle center/@center}{0},
+ uncentered rectangle center/left/.code=\pgfkeyssetvalue{/pgf/uncentered rectangle center/@center}{1},
+ uncentered rectangle center/text/.code=\pgfkeyssetvalue{/pgf/uncentered rectangle center/@center}{2},
+ uncentered rectangle center/right/.code=\pgfkeyssetvalue{/pgf/uncentered rectangle center/@center}{3}}
+
+\pgfdeclareshape{uncentered rectangle}{%
+ \nodeparts{text,left,right}%
+ \savedanchor\middleCenter{%
+ \pgf@x=.5\wd\pgfnodeparttextbox
+ %
+ \pgf@y=\dp\pgfnodeparttextbox
+ \ifdim\dp\pgfnodepartleftbox>\pgf@y
+ \pgf@y=\dp\pgfnodepartleftbox
+ \fi
+ \ifdim\dp\pgfnodepartrightbox>\pgf@y
+ \pgf@y=\dp\pgfnodepartrightbox
+ \fi
+ %
+ \pgf@ya=\ht\pgfnodeparttextbox
+ \ifdim\ht\pgfnodepartleftbox>\pgf@ya
+ \pgf@ya=\ht\pgfnodepartleftbox
+ \fi
+ \ifdim\ht\pgfnodepartrightbox>\pgf@ya
+ \pgf@ya=\ht\pgfnodepartrightbox
+ \fi
+ \advance\pgf@ya by -\pgf@y
+ \pgf@y=.5\pgf@ya
+ }%
+ \savedanchor\leftCenter{%
+ % y should be still the same as before
+ \pgf@x=-.5\wd\pgfnodepartleftbox
+ }%
+ \savedanchor\rightCenter{%
+ % y should be still the same as before
+ \pgf@x=.5\wd\pgfnodepartrightbox
+ \advance\pgf@x by \wd\pgfnodeparttextbox
+ }%
+ \savedanchor\realCenter{%
+ % y should be still the same as before
+ \pgf@x=-.5\wd\pgfnodepartleftbox
+ \advance\pgf@x by .5\wd\pgfnodeparttextbox
+ \advance\pgf@x by .5\wd\pgfnodepartrightbox
+ }%
+ \savedanchor\southwest{%
+ % total width
+ \pgf@xa=\wd\pgfnodepartleftbox
+ \advance\pgf@xa by\wd\pgfnodepartrightbox
+ \advance\pgf@xa by\wd\pgfnodeparttextbox
+ %
+ \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
+ \advance\pgf@xa by 2\pgf@xc
+ \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
+ \ifdim\pgf@xb>\pgf@xa
+ \pgf@xa=\pgf@xb
+ \fi
+ % left side of shape
+ \advance\pgf@x by -.5\pgf@xa
+ \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+ \advance\pgf@x by -\pgf@xa
+ %
+ % total height
+ \pgf@ya=\dp\pgfnodepartleftbox
+ \ifdim\pgf@ya<\dp\pgfnodeparttextbox
+ \pgf@ya=\dp\pgfnodeparttextbox
+ \fi
+ \ifdim\pgf@ya<\dp\pgfnodepartrightbox
+ \pgf@ya=\dp\pgfnodepartrightbox
+ \fi
+ \pgf@yb=\ht\pgfnodepartleftbox
+ \ifdim\pgf@yb<\ht\pgfnodeparttextbox
+ \pgf@yb=\ht\pgfnodeparttextbox
+ \fi
+ \ifdim\pgf@yb<\ht\pgfnodepartrightbox
+ \pgf@yb=\ht\pgfnodepartrightbox
+ \fi
+ \advance\pgf@ya by \pgf@yb
+ %
+ \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
+ \advance\pgf@ya by 2\pgf@yc
+ \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
+ \ifdim\pgf@yb>\pgf@ya
+ \pgf@ya=\pgf@yb
+ \fi
+ % lower side of the shape
+ \advance\pgf@y by -.5\pgf@ya
+ \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+ \advance\pgf@y by -\pgf@ya
+ }%
+ \savedanchor\northeast{%
+ % first, let's calculate the real center again:
+ %
+ \pgf@x=-.5\wd\pgfnodepartleftbox
+ \advance\pgf@x by .5\wd\pgfnodeparttextbox
+ \advance\pgf@x by .5\wd\pgfnodepartrightbox
+ %
+ \pgf@y=\dp\pgfnodeparttextbox
+ \ifdim\dp\pgfnodepartleftbox>\pgf@y
+ \pgf@y=\dp\pgfnodepartleftbox
+ \fi
+ \ifdim\dp\pgfnodepartrightbox>\pgf@y
+ \pgf@y=\dp\pgfnodepartrightbox
+ \fi
+ %
+ \pgf@ya=\ht\pgfnodeparttextbox
+ \ifdim\ht\pgfnodepartleftbox>\pgf@ya
+ \pgf@ya=\ht\pgfnodepartleftbox
+ \fi
+ \ifdim\ht\pgfnodepartrightbox>\pgf@ya
+ \pgf@ya=\ht\pgfnodepartrightbox
+ \fi
+ \advance\pgf@ya by -\pgf@y
+ \pgf@y=.5\pgf@ya
+ %
+ % now we can calculate the anchor
+ % total width
+ %
+ \pgf@xa=\wd\pgfnodepartleftbox
+ \advance\pgf@xa by\wd\pgfnodepartrightbox
+ \advance\pgf@xa by\wd\pgfnodeparttextbox
+ %
+ \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
+ \advance\pgf@xa by 2\pgf@xc
+ \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
+ \ifdim\pgf@xb>\pgf@xa
+ \pgf@xa=\pgf@xb
+ \fi
+ % right side of shape
+ \advance\pgf@x by .5\pgf@xa
+ \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+ \advance\pgf@x by \pgf@xa
+ %
+ % total height
+ \pgf@ya=\dp\pgfnodepartleftbox
+ \ifdim\pgf@ya<\dp\pgfnodeparttextbox
+ \pgf@ya=\dp\pgfnodeparttextbox
+ \fi
+ \ifdim\pgf@ya<\dp\pgfnodepartrightbox
+ \pgf@ya=\dp\pgfnodepartrightbox
+ \fi
+ \pgf@yb=\ht\pgfnodepartleftbox
+ \ifdim\pgf@yb<\ht\pgfnodeparttextbox
+ \pgf@yb=\ht\pgfnodeparttextbox
+ \fi
+ \ifdim\pgf@yb<\ht\pgfnodepartrightbox
+ \pgf@yb=\ht\pgfnodepartrightbox
+ \fi
+ \advance\pgf@ya by \pgf@yb
+ %
+ \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
+ \advance\pgf@ya by 2\pgf@yc
+ \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
+ \ifdim\pgf@yb>\pgf@ya
+ \pgf@ya=\pgf@yb
+ \fi
+ % upper side of the shape
+ \advance\pgf@y by .5\pgf@ya
+ \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+ \advance\pgf@y by \pgf@ya
+ }%
+ %
+ \anchor{center}{%
+ \ifcase\pgfkeysvalueof{/pgf/uncentered rectangle center/@center}\relax
+ \realCenter\or
+ \leftCenter\or
+ \middleCenter\or
+ \rightCenter\else
+ \realCenter
+ \fi
+ \pgfkeysgetvalue{/pgf/uncentered rectangle center yshift}\pgf@temp
+ \pgfutil@ifxempty\pgf@temp{% real center used
+ }{% calculate center
+ \pgfmathsetlength\pgf@y{\pgf@temp}%
+ }%
+ }%
+ \anchor{left} {\leftCenter \multiply\pgf@x by2 \pgf@y=0pt }
+ \anchor{right} {\middleCenter\multiply\pgf@x by2 \pgf@y=0pt }
+ \anchor{real center} {\realCenter}
+ \anchor{left center} {\leftCenter}
+ \anchor{right center}{\rightCenter}
+ \anchor{text center} {\middleCenter}
+ \anchor{south west} {\southwest}
+ \anchor{north east} {\northeast}
+ \anchor{mid}{%
+ \csname pgf@anchor@uncentered rectangle@center\endcsname
+ \pgfmathsetlength\pgf@y{.5ex}}%
+ \anchor{base}{%
+ \csname pgf@anchor@uncentered rectangle@center\endcsname
+ \pgf@y=0pt }%
+ \anchor{left mid} {\leftCenter \pgfmathsetlength\pgf@y{+.5ex}}
+ \anchor{text mid} {\middleCenter\pgfmathsetlength\pgf@y{+.5ex}}
+ \anchor{right mid} {\rightCenter \pgfmathsetlength\pgf@y{+.5ex}}
+ \anchor{real mid} {\realCenter \pgfmathsetlength\pgf@y{+.5ex}}
+ \anchor{left base} {\leftCenter \pgf@y=0pt }
+ \anchor{text base} {\middleCenter\pgf@y=0pt }
+ \anchor{right base} {\rightCenter \pgf@y=0pt }
+ \anchor{real base} {\realCenter \pgf@y=0pt }
+ \anchor{real south} {\pgf@anchor@rectangle@south}
+ \anchor{real north} {\pgf@anchor@rectangle@north}
+ \anchor{text north} {\pgf@anchor@rectangle@north\pgf@ya=\pgf@y\middleCenter\pgf@y=\pgf@ya}
+ \anchor{left north} {\pgf@anchor@rectangle@north\pgf@ya=\pgf@y\leftCenter \pgf@y=\pgf@ya}
+ \anchor{right north}{\pgf@anchor@rectangle@north\pgf@ya=\pgf@y\rightCenter \pgf@y=\pgf@ya}
+ \anchor{text south} {\pgf@anchor@rectangle@south\pgf@ya=\pgf@y\middleCenter\pgf@y=\pgf@ya}
+ \anchor{left south} {\pgf@anchor@rectangle@south\pgf@ya=\pgf@y\leftCenter \pgf@y=\pgf@ya}
+ \anchor{right south}{\pgf@anchor@rectangle@south\pgf@ya=\pgf@y\rightCenter \pgf@y=\pgf@ya}
+ \anchor{north}{%
+ \pgf@anchor@rectangle@north
+ \pgf@ya=\pgf@y
+ \csname pgf@anchor@uncentered rectangle@center\endcsname
+ \pgf@y=\pgf@ya
+ }
+ \anchor{south}{%
+ \pgf@anchor@rectangle@south
+ \pgf@ya=\pgf@y
+ \csname pgf@anchor@uncentered rectangle@center\endcsname
+ \pgf@y=\pgf@ya
+ }
+ %\anchor{base right}{\middleCenter\pgf@xa=2\pgf@x}% TODO
+ \anchor{real west}{%
+ \pgf@process{\northeast}%
+ \pgf@ya=.5\pgf@y
+ \pgf@process{\southwest}%
+ \pgf@y=.5\pgf@y
+ \advance\pgf@y by \pgf@ya
+ }%
+ \anchor{real east}{%
+ \pgf@process{\southwest}%
+ \pgf@ya=.5\pgf@y
+ \pgf@process{\northeast}%
+ \pgf@y=.5\pgf@y
+ \advance\pgf@y by \pgf@ya
+ }%
+ \anchor{west}{%
+ \pgf@process{\southwest}%
+ \pgf@xa=\pgf@x
+ \pgf@process{\csname pgf@anchor@uncentered rectangle@center\endcsname}%
+ \pgf@x=\pgf@xa
+ }%
+ \anchor{east}{%
+ \pgf@process{\northeast}%
+ \pgf@xa=\pgf@x
+ \pgf@process{\csname pgf@anchor@uncentered rectangle@center\endcsname}%
+ \pgf@x=\pgf@xa
+ }%
+ \inheritanchor[from=rectangle]{south west}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchor[from=rectangle]{south east}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{mid west}
+ \inheritanchor[from=rectangle]{mid east}
+ \inheritanchor[from=rectangle]{base west}
+ \inheritanchor[from=rectangle]{base east}
+ \inheritbackgroundpath[from=rectangle]
+ \anchorborder{%
+ % xa/ya is target
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ % xc/yc is "center"
+ \pgf@sh@reanchor{uncentered rectangle}{center}%
+ \pgf@xc=\pgf@x
+ \pgf@yc=\pgf@y
+ \ifdim\pgf@xa<0pt
+ % left side
+ \southwest
+ \advance\pgf@x by -\pgf@xc
+ \advance\pgf@y by -\pgf@yc
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ \edef\pgf@marshal{%
+ \noexpand\pgfpointborderrectangle
+ {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
+ {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
+ }%
+ \else
+ % right side
+ \northeast
+ \advance\pgf@x by -\pgf@xc
+ \advance\pgf@y by -\pgf@yc
+ \edef\pgf@marshal{%
+ \noexpand\pgfpointborderrectangle
+ {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
+ {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
+ }%
+ \fi
+ \pgf@process{\pgf@marshal}%
+ \advance\pgf@x by\pgf@xc
+ \advance\pgf@y by\pgf@yc
+ }%
+}
+\endinput \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex
index 830b3513e5..a5a982020f 100644
--- a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex
+++ b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.misc.code.tex
@@ -5,6 +5,8 @@
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Free Documentation License.
%
+\usepgflibrary{ext.pgfkeys-plus}%
+
%% full arc
%% https://tex.stackexchange.com/a/144297/16595
%% The postfix operator R is added to PGFmath,
@@ -73,28 +75,6 @@
{\tikzext@pgf@foreach@no@listfalse\pgffor@macro@list\tikzext@pgf@foreach@no@list@list}
{\pgffor@@vars}}}}}%
-%% Handlers
-%% .pgfmath evaluates values given to keys in PGFmath before handing them over.
-%% .pgfmath int truncates the result
-%% .pgfmath strcat concatenates the given values
-\pgfkeys{/handlers/.pgfmath/.code=\pgfmathparse{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}}
-\pgfkeys{/handlers/.pgfmath int/.code=\pgfmathint{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}}
-\pgfkeys{/handlers/.pgfmath strcat/.code=\pgfmathstrcat{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}}
-
-%% http://tex.stackexchange.com/a/144187/16595
-%% key/.List={(point-1),(point-2),(point-...),(point-6)} will call
-%% key=(point-1)(point-2)(point-3)(point-4)(point-5),(point-6)
-\pgfkeys{/handlers/.List/.code={%
- \let\pgfkeys@global@temp\pgfutil@empty
- \foreach \pgfkeys@temp in{#1}{
- \ifx\pgfkeys@global@temp\pgfutil@empty
- \global\let\pgfkeys@global@temp\pgfkeys@temp
- \else
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfkeys@global@temp\expandafter
- {\pgfkeys@temp}%
- \fi}%
- \expandafter\pgfkeys@exp@call\expandafter{\pgfkeys@global@temp}}}
-
%% PGFmath
%% strrepeat("x", 5) = "xxxxx"
\pgfmathdeclarefunction{strrepeat}{2}{%
@@ -175,62 +155,11 @@
\pgfmathdeclarefunction{isEmpty}{1}{%
\begingroup
- \edef\pgfmath@temp{#1}%
+ \def\pgfmath@temp{#1}%
\pgfutil@ifxempty\pgfmath@temp{\def\pgfmathresult{1}}{\def\pgfmathresult{0}}%
\pgfmath@smuggleone\pgfmathresult
\endgroup}
-\pgfqkeys{/utils}{
- if/.code n args=3{%
- \pgfmathparse{#1}%
- \ifdim\pgfmathresult pt=0pt
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi
- {\pgfkeysalso{#3}}%
- {\pgfkeysalso{#2}}},
- IF/.code args={(#1)#2}{%
- \pgfmathparse{#1}%
- \pgfutil@in@{else}{#2}%
- \ifpgfutil@in@
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi
- {\tikzext@misc@handle@else#2\pgf@stop}{\tikzext@misc@handle@else#2else\pgf@stop}%
- },
- TeX/if/.code n args={4}{%
- \if#1#2\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
- {\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
- },
- TeX/ifnum/.code n args={3}{%
- \ifnum#1\relax\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
- {\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
- },
- TeX/ifdim/.code n args={3}{%
- \ifdim#1\relax\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
- {\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
- },
- TeX/ifx/.code n args={4}{%
- \ifx#1#2\relax\expandafter\pgfutil@firstoftwo\else\expandafter\pgfutil@secondoftwo\fi
- {\pgfkeysalso{#3}}{\pgfkeysalso{#4}}%
- },
- TeX/ifempty/.code n args={3}{%
- \edef\pgfkeys@temp{#1}%
- \pgfutil@ifxempty\pgfkeys@temp{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
- },
- tex/.search also=/utils/TeX,
-}
-\def\tikzext@misc@handle@else#1else#2\pgf@stop{%
- \ifdim\pgfmathresult pt=0pt
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi
- {\pgfkeysalso{#2}}%
- {\pgfkeysalso{#1}}}
-
\pgfset{
declare constant/.code={%
\let\pgfmathdeclareconstant@@@\pgfutil@empty
diff --git a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.paths.arcto.code.tex b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.paths.arcto.code.tex
index c75f31b60a..e97bbf939d 100644
--- a/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.paths.arcto.code.tex
+++ b/graphics/pgf/contrib/tikz-ext/tex/generic/tikz-ext/tikzlibraryext.paths.arcto.code.tex
@@ -306,12 +306,12 @@
% make sure direction is properly followed
\ifdim\pgf@arcto@fS pt=1pt
% counter clockwise
- \ifdim\pgf@arcto@theta@end pt<\pgf@arcto@theta@start path
+ \ifdim\pgf@arcto@theta@end pt<\pgf@arcto@theta@start pt
\pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}%
\fi
\else
% clockwise
- \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start path
+ \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
\pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}%
\fi
\fi
diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes
index 64e75d7521..6f46436197 100644
--- a/graphics/pstricks/base/Changes
+++ b/graphics/pstricks/base/Changes
@@ -1,4 +1,4 @@
-% $Id: Changes 604 2022-09-11 14:17:36Z herbert $
+% $Id: Changes 644 2022-10-23 18:29:03Z herbert $
For all changes see file History! Here are only the last one changes
listed.
@@ -11,7 +11,8 @@ pstricks.tex --------
versions like 2.47a have only changes in other files, but not
in this main package.
-3.16 2022-09-11 - internal fix for an unneded tab character in \begingroup
+3.17 2022-10-23 - fix for \pgfforeach
+3.16 2022-09-11 - internal fix for an unneeded tab character in \begingroup
3.15 2022-09-11 - fix lualatex and pstricks code on the first page
3.14a 2022-09-08 - fix for wrong pro files
3.14 2022-08-30 - bugfix for \psdots* in pstricks-dots.tex
diff --git a/graphics/pstricks/base/doc/pst-news22.pdf b/graphics/pstricks/base/doc/pst-news22.pdf
index 92159f537f..fd93b6e939 100644
--- a/graphics/pstricks/base/doc/pst-news22.pdf
+++ b/graphics/pstricks/base/doc/pst-news22.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news22.tex b/graphics/pstricks/base/doc/pst-news22.tex
index bfc5e2b7a1..9d8c674368 100644
--- a/graphics/pstricks/base/doc/pst-news22.tex
+++ b/graphics/pstricks/base/doc/pst-news22.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-news22.tex 595 2022-08-30 18:08:22Z herbert $
+%% $Id: pst-news21.tex 382 2021-12-29 19:19:18Z herbert $
\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{}
\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
@@ -27,35 +27,43 @@
\part{\texttt{pstricks} -- package}
+This version of the News was run with \verb|lualatex| \emph{without} using Ghostscript.
+The PDF file was created in a direkt way by Lua. If you run \texttt{lualatex} then the
+packahe \texttt{luapstricks} is automatically loaded.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+The optional argument \texttt{gsfonts} can be used to load only the symbol font from GhostScript.
+Otherwise the one from URW or the system is used, which is the default.
+
+
%--------------------------------------------------------------------------------------
-\section{\texttt{pstricks.tex} (v. 3.14 -- 2022/08/30)}
+\section{\texttt{pstricks.tex} (v. 3.17 -- 2022/10/22)}
%--------------------------------------------------------------------------------------
-Bugfix for \Lcs{psdots*}:
-\begin{LTXexample}[width=5cm]
-\begin{pspicture}[showgrid=true](3,2)
- \psdot[dotstyle=pentagon,dotscale=5](1.5,1.5)
- \psdots[dotsize=.4cm,dotstyle=square,
- linecolor=red](0,0)(0.5,0)(1,1)(1.5,1)(2,2)(2.5,2)
- \psdots*(2.5,0.6)\psdot(2.5,0.2)
-\end{pspicture}
-\end{LTXexample}
+\subsection{pgf library}
+This version fixes a problem with the upcoming pgf from which PSTricks uses the \Lcs{foreach}
+command as \Lcs{pgfforeach}.
-\begin{LTXexample}[width=5cm]
-\begin{pspicture}[showgrid=true](3,2)
- \psdot*[dotstyle=pentagon,dotscale=5](1.5,1.5)
- \psdots*[dotsize=.4cm,dotstyle=square,
- linecolor=red](0,0)(0.5,0)(1,1)(1.5,1)(2,2)(2.5,2)
- \psdots*(2.5,0.6)\psdot(2.5,0.2)
-\end{pspicture}
-\end{LTXexample}
+\subsection{Arrows}
+There are new arrow types and a new optional argument \Lkeyword{tipcolor}.
+Checking \Lkeyword{tipcolor} can be suppressed by setting
+\begin{verbatim}
+\makeatletter
+\ps@check@tipcplor{}
+\makeatother
+\end{verbatim}
+This is only needed in some rare cases, e.g. \Lcs{pscustom} with \Lcs{code} and
+color setting on PS level.
\nocite{*}
diff --git a/graphics/pstricks/base/dvips/pstricks.pro b/graphics/pstricks/base/dvips/pstricks.pro
index 47e9fd6631..c25657b9b9 100644
--- a/graphics/pstricks/base/dvips/pstricks.pro
+++ b/graphics/pstricks/base/dvips/pstricks.pro
@@ -1,4 +1,4 @@
-% $Id: pstricks.pro 407 2022-01-12 17:06:33Z herbert $
+% $Id: pstricks.pro 615 2022-09-22 08:39:26Z herbert $
%
%% PostScript prologue for pstricks.tex.
%% Version 1.41, 2021/11/16
@@ -379,7 +379,7 @@ tx@Dict begin
%
%
/TruchetFill { % on stack: scaling factor
- 10 dict begin
+ 20 dict begin
dup dup scale
1 exch div round /penroseFactor ED
a 0 dtransform round exch round exch
@@ -445,7 +445,11 @@ tx@Dict begin
{ 0 h T 1 -1 scale } if
w neg h moveto
0 0 L w h L w neg a neg rlineto
- gsave fill grestore
+ gsave
+% gsave w neg h lineto CLW 0.5 add setlinewidth % test für border beim Pfeil
+% 1 setgray 0 setlinejoin closepath stroke
+% grestore
+ fill grestore
} def
%
/ArrowD { % the sides are drawn as curves (hv 20071211)
diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex
index 244b469e50..9d741d115a 100644
--- a/graphics/pstricks/base/generic/pstricks.tex
+++ b/graphics/pstricks/base/generic/pstricks.tex
@@ -74,15 +74,18 @@
%\@ifnextchar[\ProvidesPackageRCS@i{\ProvidesPackageRCS@i[] }}%$
%\def\ProvidesPackageRCS@i[#1]#2{}
-\ifx\pgfkeysloaded\relax\else
- \input pgfutil-common.tex
- \input pgfkeys.code.tex
- \input pgffor.code.tex
+\ifx\pgfkeysloaded\relax\else
+ \ifdefined\@latexerr % format is latex
+ \RequirePackage{pgffor} % pgffor depends on pgfkeys
+ \else % format is plaintex
+ \input pgffor.tex
+ \fi
\fi
+
\let\pgfforeach\foreach
%
-\def\fileversion{3.16}
-\def\filedate{2022/09/11}
+\def\fileversion{3.17}
+\def\filedate{2022/10/23}
\pst@addfams{pstricks}
%
%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -1486,9 +1489,9 @@
\ignorespaces%
}
\def\begin@OpenObj{%
- \begin@ClosedObj%
- \let\pst@linetype\pst@arrowtype%
- \pst@addarrowdef%
+ \begin@ClosedObj
+ \let\pst@linetype\pst@arrowtype
+ \pst@addarrowdef
}
\def\begin@AltOpenObj{%
\begin@ClosedObj
diff --git a/graphics/pstricks/base/latex/pstricks.sty b/graphics/pstricks/base/latex/pstricks.sty
index 30de94d110..6e256a7e05 100644
--- a/graphics/pstricks/base/latex/pstricks.sty
+++ b/graphics/pstricks/base/latex/pstricks.sty
@@ -1,4 +1,4 @@
-% $Id: pstricks.sty 262 2021-09-24 09:02:54Z herbert $
+% $Id: pstricks.sty 644 2022-10-23 18:29:03Z herbert $
%%
%% This is file `pstricks.sty'.
%%
@@ -17,7 +17,8 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{pstricks}[2021/08/23 v0.71 LaTeX wrapper for `PSTricks' (RN,HV)]
+
+\ProvidesPackage{pstricks}[2022/19/23 v0.72 LaTeX wrapper for `PSTricks' (RN,HV)]
%
\def\documentclass{%
\edef\@tempa{\jobname.tex }%
@@ -99,7 +100,7 @@
\ProvidesFile{pst-fp.tex}[\filedate\space v\fileversion\space `PST-fp' (hv)]
\IfFileExists{pstricks.pro}{%
\ProvidesFile{pstricks.pro}
- [2020/06/09 v. 1.31, PostScript prologue file (hv)]
+ [2020/11/16 v. 1.41, PostScript prologue file (hv)]
\@addtofilelist{pstricks.pro}}{}%
\IfFileExists{pst-algparser.pro}{%
\ProvidesFile{pst-algparser.pro}[2011/10/31 v. 0.04, PostScript prologue file (hv)]