diff options
author | Karl Berry <karl@freefriends.org> | 2022-10-23 20:36:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-10-23 20:36:18 +0000 |
commit | 02b6a167032c7f09e9336401ffe1f2501b881e1d (patch) | |
tree | 550df44acc7aae00d6700b7bfa5d5e04084d9b99 | |
parent | 082beda64173443df9fd678021fcf187a4b053ad (diff) |
tikz-ext (23oct22)
git-svn-id: svn://tug.org/texlive/trunk@64788 c570f23f-e606-0410-a88d-b1316a301751
14 files changed, 731 insertions, 116 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz-ext/README.md b/Master/texmf-dist/doc/latex/tikz-ext/README.md index 33ec46d366e..76ea094357b 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/README.md +++ b/Master/texmf-dist/doc/latex/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex index 163097e6a13..44228a5445c 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-misc.tex +++ b/Master/texmf-dist/doc/latex/tikz-ext/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex index ba78f47dcbe..18264156c98 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-library-paths.ortho.tex +++ b/Master/texmf-dist/doc/latex/tikz-ext/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex index fd071e009ea..41e56c390ec 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-body.tex +++ b/Master/texmf-dist/doc/latex/tikz-ext/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex index 494d63e0129..2ba6defa100 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-main-preamble.tex +++ b/Master/texmf-dist/doc/latex/tikz-ext/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-shapes-uncentered.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-pgf-shapes-uncentered.tex new file mode 100644 index 00000000000..cb79e4ac7b2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-ext/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib index 5a13e91d41b..60cf094472f 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.bib +++ b/Master/texmf-dist/doc/latex/tikz-ext/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/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf Binary files differindex f4a31a8c6ad..51ba04c7d10 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf +++ b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.pdf diff --git a/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex index 90b42a0011d..fae3508e156 100644 --- a/Master/texmf-dist/tex/latex/tikz-ext/pgfcalendar-ext.code.tex +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/pgfkeyslibraryext.pgfkeys-plus.code.tex new file mode 100644 index 00000000000..49aedb64c6c --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.pgfkeys-plus.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.pgfkeys-plus.code.tex new file mode 100644 index 00000000000..6101ca8cad9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/pgflibraryext.shapes.uncenteredrectangle.code.tex new file mode 100644 index 00000000000..630a22da148 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex index 830b3513e5a..a5a982020fd 100644 --- a/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.misc.code.tex +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex index c75f31b60a6..e97bbf939d0 100644 --- a/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.arcto.code.tex +++ b/Master/texmf-dist/tex/latex/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 |