diff options
11 files changed, 444 insertions, 93 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz-ext/README.md b/Master/texmf-dist/doc/latex/tikz-ext/README.md index bee9e3512a8..33ec46d366e 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/README.md +++ b/Master/texmf-dist/doc/latex/tikz-ext/README.md @@ -30,7 +30,7 @@ These are * `ext.shapes.circlecrosssplit` * `ext.shapes.heatmark` * `ext.shapes.rectangleroundedcorners` - * `ext.shapes.superellopse` + * `ext.shapes.superellipse` 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-calendar.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex index 4f2300a4584..09bd261a217 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex +++ b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual-en-calendar.tex @@ -13,7 +13,7 @@ \begin{package}{calendar-ext} This package adds week numbers and more conditionals to the \pgfname\space package |pgfcalendar|. (Despite the code example above, this package is not set up to work with Con\TeX t.) - \inspiration{WeekNum-Q,CalCond-Q}{WeekNum-A,CalCond-A} + \inspiration{WeekNum-Q,CalCond-Q,CalFullWeek-Q}{WeekNum-A,CalCond-A,CalFullWeek-A} \end{package} %This package extends the |pgfcalendar| package. @@ -43,12 +43,30 @@ The following tests are added. This test passes when all \meta{tests} pass. \itemcalendaroption{not}|=|\marg{tests} This test passes when \meta{tests} do not pass. +\itemcalendaroption{week of month}|=|\meta{num} + This test passes when the date is in \meta{num}th week of the month. + The first week of the month start at day~1 and ends with day~7. +\itemcalendaroption{week of month'}|=|\meta{num} + As above but counts from the last day of the month. + For a month with 31~days, this means the ``1st'' week starts at day~25 and ends with day~31. +\itemcalendaroption{calendar week of month}|=|\meta{num} + This test passes when the date is in \meta{num}th calendar week of the month. + The first week starts at the first day of the month and ends at the next Sunday. +\itemcalendaroption{calendar week of month'}|=|\meta{num} + As above but counts from the last day of the month. +\begin{codeexample}[width=5cm,preamble=\usetikzlibrary{ext.calendar-plus}] +\tikz + \calendar[ + dates=2022-10-01 to 2022-10-31, + week list] + if (week of month=2) [red] + if (calendar week of month'=2) [blue]; +\end{codeexample} \itemcalendaroption{yesterday}|=|\marg{tests} This test passes when the previous day passes \meta{tests}. \itemcalendaroption{week}|=|\meta{num} This test passes when the current week of the year equals \marg{num}. \end{itemize} - The shorthands for |d-| and |m-| are slightly changed so that they are expandable. This makes it possible to use these shorthands inside of \pgfname math. The shorthands for the week (see section~\ref{calendar:weeknumbering}) 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 a46f6be0234..ba78f47dcbe 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 @@ -33,7 +33,7 @@ the path operations \verb!|-|! and \verb!-|-!. This operation means ``first horizontal, then vertical and then horizontal again''. \end{pathoperation} } -\begin{key}{/tikz/hvvh/ratio=\meta{ratio} (initially 0.5)} +\begin{key}{/tikz/ortho/ratio=\meta{ratio} (initially 0.5)} This sets the ratio for the middle part of the Zig-Zag connection. For values $\meta{ratio} < 0$ and $\meta{ratio} > 1$ the Zig-Zag lines will @@ -47,7 +47,7 @@ the path operations \verb!|-|! and \verb!-|-!. \end{codeexample} \end{key} %TODO: hvvh/distance needs fixing, maybe? -\begin{key}{/tikz/hvvh/distance=\meta{distance}} +\begin{key}{/tikz/ortho/distance=\meta{distance}} This sets the distance between the start point and the middle part of the Zig-Zag connection. @@ -64,7 +64,7 @@ the path operations \verb!|-|! and \verb!-|-!. \end{tikzpicture} \end{codeexample} \end{key} -\begin{key}{/tikz/hvvh/from center=\opt{\meta{true or false}} (default true)} +\begin{key}{/tikz/ortho/from center=\opt{\meta{true or false}} (default true)} When nodes get connected the placement of the middle part of the Zig-Zag and the Zig-Zig (see below) connections will be calculated from the border of these nodes. @@ -79,7 +79,7 @@ these can be configured through the following keys. foreach \p in {0.0, 0.25, 0.5, 0.75, 1.0}{ node [pos=\p] {\p}}; \end{codeexample} -\begin{key}{/tikz/hvvh/spacing=\meta{number} (initially 4)} +\begin{key}{/tikz/ortho/spacing=\meta{number} (initially 4)} Unless $\meta{number} = 0$ is set \begin{itemize} \item |pos = 0| will be at the start,\indexKeyO{pos} @@ -98,63 +98,59 @@ these can be configured through the following keys. \item |pos = .5| will still be in the middle of the middle part of the connection. \end{itemize} \end{key} -\begin{key}{/tikz/hvvh/middle 0 to 1} +\begin{key}{/tikz/ortho/middle 0 to 1} This is an alias for |spacing = 0|. \end{key} \subsection{Zig-Zig} \begin{pathoperation}{r-ud}{\opt{\oarg{options}}\meta{coordinate or cycle}} This operation means ``first up, then horizontal and then down''. - \begin{key}{/tikz/udlr/ud distance=\meta{length} (initially .5cm)} + \begin{key}{/tikz/ortho/ud distance=\meta{length} (initially .5cm)} This sets the distance between the start and the horizontal line to \meta{length}. \end{key} \end{pathoperation} \begin{pathoperation}{r-du}{\opt{\oarg{options}}\meta{coordinate or cycle}} This operation means ``first down, then horizontal and then up''. - \begin{key}{/tikz/udlr/du distance=\meta{length} (initially .5cm)} + \begin{key}{/tikz/ortho/du distance=\meta{length} (initially .5cm)} This sets the distance between the start and the horizontal line to \meta{length}. \end{key} \end{pathoperation} \begin{pathoperation}{r-lr}{\opt{\oarg{options}}\meta{coordinate or cycle}} This operation means ``left down, then vertical and then right''. - \begin{key}{/tikz/udlr/lr distance=\meta{length} (initially .5cm)} + \begin{key}{/tikz/ortho/lr distance=\meta{length} (initially .5cm)} This sets the distance between the start and the vertical line to \meta{length}. \end{key} \end{pathoperation} \begin{pathoperation}{r-rl}{\opt{\oarg{options}}\meta{coordinate or cycle}} This operation means ``first right, then vertical and then down''. - \begin{key}{/tikz/udlr/rl distance=\meta{length} (initially .5cm)} + \begin{key}{/tikz/ortho/rl distance=\meta{length} (initially .5cm)} This sets the distance between the start and the vertical line to \meta{length}. \end{key} \end{pathoperation} All distances can be set with on key. -\begin{key}{/tikz/udlr/distance=\meta{length}} - Sets all distances in the |/tikz/udlr| namespace. -\end{key} - -\begin{key}{/tikz/udlr/from center=\opt{\meta{true or false}} (initially false, default true)} - This is an alias for |/tikz/hvvh/from center|. +\begin{key}{/tikz/ortho/udlr distance=\meta{length}} + Sets all the previous distances to the same value \meta{length}. \end{key} \subsection{Even more Horizontal and Vertical Lines} The following keys can be used to access vertical and horizontal line path operations. \begin{stylekey}{/tikz/horizontal vertical} - This installs \verb!to path = -| (\tikztotarget) \tikztonodes! that can be used with\indexKeyO{to path} - the path operations |to| or |edge|. + This installs \verb!to path = -| (\tikztotarget) \tikztonodes!\indexKeyO{to path} + that can be used with the path operations |to| or |edge|. \end{stylekey} \begin{stylekey}{/tikz/vertical horizontal} - This installs \verb!to path = |- (\tikztotarget) \tikztonodes! that can be used with - the path operations |to| or |edge|. + This installs \verb!to path = |- (\tikztotarget) \tikztonodes! + that can be used with the path operations |to| or |edge|. \end{stylekey} \begin{stylekey}{/tikz/horizontal vertical horizontal} - This installs \verb!to path = -|- (\tikztotarget) \tikztonodes! that can be used with - the path operations |to| or |edge|. + This installs \verb!to path = -|- (\tikztotarget) \tikztonodes! + that can be used with the path operations |to| or |edge|. \end{stylekey} \begin{stylekey}{/tikz/vertical horizontal vertical} - This installs \verb!to path = |-| (\tikztotarget) \tikztonodes! that can be used with - the path operations |to| or |edge|. + This installs \verb!to path = |-| (\tikztotarget) \tikztonodes! + that can be used with the path operations |to| or |edge|. \end{stylekey} When connecting rectangular nodes, these keys could be useful as well. @@ -183,3 +179,21 @@ it connects to the start point in the center (or at its border in case it is a n The optional \meta{length} can be used to shift the line orthogonally to its direction. \end{stylekey} + +\pagebreak +Since all previous key are rather cumbersome, one can install shortcuts for these. +\begin{stylekey}{/tikz/ortho/install shortcuts} +Installs the following shortcuts:\\ +{\ttfamily +\begin{tabular}{l@{\hspace{.5em}${}\to{}$\hspace{.5em}}l} + \pgfmanualbar- & vertical horizontal \\ + -\pgfmanualbar & horizontal vertical \\ + -\pgfmanualbar- & horizontal vertical horizontal \\ + \pgfmanualbar-\pgfmanualbar & vertical horizontal vertical \\ + \pgfmanualbar* & only vertical first \\ + *\pgfmanualbar & only vertical second \\ + \pgfmanualbar* & only vertical first \\ + *\pgfmanualbar & only vertical 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 1185cdb6d71..fd071e009ea 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.3} +\newcommand*\tikzextversion{0.4} \begin{document} {\colorlet{blue}{black}% links shall be black \title{\bfseries The \tikzextname\space Package\\ @@ -167,6 +167,19 @@ These libraries (should) work with both \pgfname\space and \tikzname. \section*{Changelog}\addcontentsline{toc}{section}{Changelog} \begin{multicols}{2}\raggedright \noindent +Version 0.4 +\begin{itemize} +\item CTAN version of 0.3.1 +\end{itemize} +Version 0.3.1 +\begin{itemize} +\item Fixed |ext.paths.ortho| keys |only vertical first| and |only horizontal first|. +\item Moved all (except the |to path|s) to namespace |/tikz/ortho|. + |/tikz/hvvh| and |/tikz/udlr| are considered deprecated. +\item Fixed |\pgfcalendarjulianyeartoweek|. +\item Added more calendar tests. +\item Added directory structure. +\end{itemize} Version 0.3 \begin{itemize} \item \addShape[circle arrow]{circlearrow} @@ -199,6 +212,17 @@ Version 0.1 \end{multicols} \printindex +\makeatletter +\def\url#1{% + \in@{/16595}{#1}% + \ifin@ + \hyper@linkurl{\expandafter\Hurl\expandafter{\strip@url#1\relax}}{#1}% + \else + \hyper@linkurl{\Hurl{#1}}{#1}% + \fi +} +\def\strip@url#1/16595\relax{#1} +\makeatother \printbibliography[heading=bibintoc] %\typeout{Examples: \the\codeexamplecount}% \end{document}
\ 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 7bb85bf7b24..5a13e91d41b 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 @@ -296,4 +296,27 @@ year = {2013}, } +' +@Online{CalFullWeek-Q, + author = {jd6}, + file = {Snapshot:https\://tex.stackexchange.com/questions/576673/full-weeks-in-tikz-calendar/660335#660335:text/html}, + month = dec, + title = {Full weeks in Tikz Calendar}, + titleaddon = {{TeX} - {LaTeX} Stack Exchange}, + url = {https://tex.stackexchange.com/q/576673/16595}, + urldate = {2022-10-09}, + year = {2020}, +} + +@Online{CalFullWeek-A, + author = {Qrrbrbirlbel}, + file = {Snapshot:https\://tex.stackexchange.com/questions/576673/full-weeks-in-tikz-calendar/660335#660335:text/html}, + month = oct, + title = {Answer to \enquote{Full weeks in Tikz Calendar}}, + titleaddon = {{TeX} - {LaTeX} Stack Exchange}, + url = {https://tex.stackexchange.com/a/660335/16595}, + urldate = {2022-10-09}, + 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 afeef21a22c..f4a31a8c6ad 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/doc/latex/tikz-ext/tikz-ext-manual.tex b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex index 1f2400847a8..253944ca7db 100644 --- a/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex +++ b/Master/texmf-dist/doc/latex/tikz-ext/tikz-ext-manual.tex @@ -11,12 +11,8 @@ % \documentclass[a4paper,doc2,landscape]{ltxdoc} - \input{tikz-ext-manual-en-main-preamble.tex} \usetikzlibrary{external} -%\newif\iftikzextmanualexternalize -%\tikzextmanualexternalizetrue -%\iftikzextmanualexternalize \tikzexternalize[ prefix=tikz/, % mode=convert with system call, @@ -24,9 +20,9 @@ %mode=list only,export=true,% simply skips EVERY picture -> good for debugging the text. ] \tikzexternalenable - \tikzifexternalizing{% - \pgfkeys{/pdflinks/codeexample links=false}% - }{}% -%\fi +% \tikzexternaldisable + \tikzifexternalizing{ + \pgfkeys{/pdflinks/codeexample links=false} + }{} \input{tikz-ext-manual-en-main-body.tex} 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 b32ac9a3a68..90b42a0011d 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 @@ -26,6 +26,24 @@ \expandafter \endgroup\pgf@cal@temp }, + relative/.code 2 args={% + \begingroup + \pgfutil@tempcnta=\pgfcalendarifdatejulian\relax + \advance\pgfutil@tempcnta by #1\relax + \pgfcalendarjuliantodate{\pgfutil@tempcnta}{\pgfcalendarifdateyear}{\pgfcalendarifdatemonth}{\pgfcalendarifdateday}% + \edef\pgfcalendarifdatejulian{\the\pgfutil@tempcnta}% + \pgfcalendarjuliantoweekday\pgfutil@tempcnta\pgfutil@tempcntb + \edef\pgfcalendarifdateweekday{\the\pgfutil@tempcntb}% + \pgfcalendarjulianyeartoweek\pgfutil@tempcnta\pgfcalendarifdateyear\pgfutil@tempcntb + \edef\pgfcalendarifdateweek{\the\pgfutil@tempcntb}% + \pgfcalendar@launch@ifdate{#2}{% + \def\pgf@cal@temp{\pgfcalendarmatchestrue}% + }{% + \let\pgf@cal@temp\pgfutil@empty + }% + \expandafter + \endgroup\pgf@cal@temp + }, Jan/.code={\ifnum\pgfcalendarifdatemonth=1 \expandafter\pgfcalendarmatchestrue\fi},Jan/.value forbidden, Feb/.code={\ifnum\pgfcalendarifdatemonth=2 \expandafter\pgfcalendarmatchestrue\fi},Feb/.value forbidden, Mar/.code={\ifnum\pgfcalendarifdatemonth=3 \expandafter\pgfcalendarmatchestrue\fi},Mar/.value forbidden, @@ -39,20 +57,6 @@ Nov/.code={\ifnum\pgfcalendarifdatemonth=11 \expandafter\pgfcalendarmatchestrue\fi},Nov/.value forbidden, Dec/.code={\ifnum\pgfcalendarifdatemonth=12 \expandafter\pgfcalendarmatchestrue\fi},Dec/.value forbidden, % - difference between/.code args={#1and#2 #3 #4}{% - \pgfcalendardatetojulian{#1}\pgfutil@tempcnta - \pgfcalendardatetojulian{#2}\pgfutil@tempcntb - \advance\pgfutil@tempcntb by -\pgfutil@tempcnta - \ifnum\pgfutil@tempcntb#3#4\relax - \pgfcalendarmatchestrue - \fi}, - weekday before or same/.code args={#1and#2}{% - \pgfcalendarjuliantoweekday{#1}\pgfutil@tempcnta - \pgfcalendarjuliantoweekday{#2}\pgfutil@tempcntb - \ifnum\pgfutil@tempcntb<\pgfutil@tempcnta - \pgfcalendarmatchestrue - \fi - }, leap year/.code={% \pgfutil@tempcnta=#1\relax \divide\pgfutil@tempcnta4 @@ -71,6 +75,7 @@ \fi \fi}, leap year/.default=\pgfcalendarifdateyear, + between days/.value required, between days/.code args={#1and#2}{% \pgfutil@tempcnta=#1\relax \ifnum\pgfcalendarifdateday<\pgfutil@tempcnta\else @@ -135,8 +140,31 @@ \pgfcalendar@launch@ifdate{\pgfkeyscurrentname={#1}}% {\let\pgf@cal@temp\pgfutil@empty}{\def\pgf@cal@temp{\pgfcalendarmatchesfalse}} \expandafter\endgroup\pgf@cal@temp - }% -} + },% + calendar week of month/.default=1, + calendar week of month'/.default=1, + calendar week of month/.code={% + \begingroup + \pgfutil@tempcnta=\pgfcalendarifdateday\relax + \advance\pgfutil@tempcnta by 5 + \advance\pgfutil@tempcnta by -\pgfcalendarifdateweekday\relax + \divide\pgfutil@tempcnta by 7 + \advance\pgfutil@tempcnta by -#1\relax + \expandafter\endgroup\expandafter + \ifnum\the\pgfutil@tempcnta=-1 + \pgfcalendarmatchestrue + \fi}, + calendar week of month'/.code={% + \begingroup + \pgfcalendar@getlastYMX\pgfcalendarifdateyear\pgfcalendarifdatemonth\pgfutil@tempcnta + \advance\pgfutil@tempcnta by -\pgfcalendarifdateday\relax + \edef\pgfcalendarifdateday{\the\pgfutil@tempcnta}% + \pgfutil@tempcnta=-\pgfcalendarifdateweekday\relax + \advance\pgfutil@tempcnta by 5 + \edef\pgfcalendarifdateweekday{\the\pgfutil@tempcnta}% + \let\pgf@cal@temp\pgfutil@empty + \pgfcalendar@launch@ifdate{calendar week of month={#1}}{\def\pgf@cal@temp{\pgfcalendarmatchestrue}}{}% + \expandafter\endgroup\pgf@cal@temp}} \def\pgfcalendar@ifdate@first#1#2:#3\pgf@stop{% \pgfqkeys{/pgf/calendar}{and={#3, week of month#1={#2}}}} @@ -178,9 +206,8 @@ \advance\pgfutil@tempcnta by 7\relax \fi % setup macro for year with {Julian number for day of first week}{weekday of -01-01} - \edef\pgf@cal@temp{\def\expandafter\noexpand\csname pgfcalendar@week@#1\endcsname - {{\the\pgfutil@tempcnta}{\the\pgfutil@tempcntb}}}% - \expandafter\endgroup\pgf@cal@temp + \expandafter\xdef\csname pgfcalendar@week@#1\endcsname{{\the\pgfutil@tempcnta}{\the\pgfutil@tempcntb}}% + \endgroup }{}% } @@ -211,12 +238,12 @@ {% we need to check the week of the previous year #3=#2\relax \advance#3 by -1 - \edef\pgf@cal@temp{\noexpand\pgfcalendarjulianyeartoweek@#1{\the#3}#3\noexpand\iffalse}% + \edef\pgf@cal@temp{\noexpand\pgfcalendarjulianyeartoweek@{#1}{\the#3}{#3}\noexpand\iffalse}% \pgf@cal@temp }{% yeah, it's weird \divide#3 by 7 \advance#3 by 1 - } + }% }{% \divide#3 by 7 \advance#3 by 1 @@ -315,6 +342,22 @@ \let\pgfcalendarifdateweek=\pgfcalendarcurrentweek \pgfcalendar@launch@ifdate% } +% +% Overwritigin original \pgfcalendarifdate +% +\def\pgfcalendarifdate#1#2#3#4{% + \pgfcalendardatetojulian{#1}{\pgfutil@tempcnta}% + \pgfcalendarjuliantodate{\pgfutil@tempcnta} + {\pgfcalendarifdateyear}{\pgfcalendarifdatemonth}{\pgfcalendarifdateday}% + \edef\pgfcalendarifdatejulian{\the\pgfutil@tempcnta}% + % Compute info about date + \pgfcalendarjuliantoweekday{\pgfutil@tempcnta}{\pgfutil@tempcntb}% + \edef\pgfcalendarifdateweekday{\the\pgfutil@tempcntb}% + \pgfcalendarjulianyeartoweek{\pgfcalendarifdatejulian}{\pgfcalendarifdateyear}{\pgfutil@tempcntb}% + \edef\pgfcalendarifdateweek{\ifnum\pgfutil@tempcntb<10 0\fi\the\pgfutil@tempcntb}% + % + \pgfcalendar@launch@ifdate{#2}{#3}{#4}% +} \pgfqkeys{/pgf/calendar/week}{.value required,.code=\ifnum#1=\pgfcalendarifdateweek\relax\expandafter\pgfcalendarmatchestrue\fi} diff --git a/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex index 699170d178d..c0ecda441ac 100644 --- a/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.node-families.code.tex @@ -290,7 +290,7 @@ \ifdim\wd\pgfnodeparttextbox<\pgfutil@tempdima \pgfutil@tempdimb=\pgfutil@tempdima \advance\pgfutil@tempdimb-\wd\pgfnodeparttextbox - \setbox\pgfnodeparttextbox=\hbox to \pgfutil@tempdima{\tikzext@nf@align@action\pgfutil@tempdimb\box\pgfnodeparttextbox}% + \setbox\pgfnodeparttextbox=\hbox to \pgfutil@tempdima{\tikzext@nf@align@action\pgfutil@tempdimb\unhbox\pgfnodeparttextbox}% \fi \tikzext@nf@getandset{\the\dp\pgfnodeparttextbox}{text depth}{\pgfutil@tempdima}% \ifdim\dp\pgfnodeparttextbox<\pgfutil@tempdima 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 213fc1b74aa..c75f31b60a6 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 @@ -55,7 +55,7 @@ \ifpgfmathunitsdeclared \pgfmathsetmacro\tikz@arc@y{\pgfkeysvalueof{/tikz/y radius}}% \ifpgfmathunitsdeclared - \pgfpatharcto{\tikz@arc@x pt}{\tikz@arc@y pt} + \tikzext@pgfpatharcto{\tikz@arc@x pt}{\tikz@arc@y pt} {\pgfkeysvalueof{/tikz/arc to/rotate}}{\pgfkeysvalueof{/tikz/arc to/large flag}} {\pgfkeysvalueof{/tikz/arc to/ccw flag}}{#1}% \else @@ -72,7 +72,7 @@ \pgf@process{\pgfpointxy{0}{\tikz@arc@y}}% \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}% \let\tikz@arc@y\pgfmathresult - \pgfpatharcto{+\tikz@arc@x pt}{+\tikz@arc@y pt} + \tikzext@pgfpatharcto{+\tikz@arc@x pt}{+\tikz@arc@y pt} {\pgfkeysvalueof{/tikz/arc to/rotate}}{\pgfkeysvalueof{/tikz/arc to/large flag}} {\pgfkeysvalueof{/tikz/arc to/ccw flag}}{#1}% \fi @@ -101,4 +101,226 @@ \def\pgfutil@secondoffour#1#2#3#4{#2} \def\pgfutil@thirdoffour#1#2#3#4{#3} \def\pgfutil@fourthoffour#1#2#3#4{#4} -\def\pgfutil@firstgobblerest#1#2\relax{#1}
\ No newline at end of file +\def\pgfutil@firstgobblerest#1#2\relax{#1} + +% original from pgfcorepathconstruct.code.tex +\def\tikzext@pgfpatharcto#1#2#3#4#5#6{% + {% + % The following code is based on the transformation described in svg + % 1.1 specification Section F.6.5 + % + % Step 1: store the simple parameters (xa=x1 since TeX does not + % allow numbers in names) + % + \pgfmathsetmacro\pgf@arcto@rx{abs(#1)}% + \pgfmathsetmacro\pgf@arcto@ry{abs(#2)}% + \ifdim\pgf@arcto@rx pt=0pt% special rule: zero radius=straight line + \gdef\pgf@marshal{\pgfpathlineto{#6}}% + \else + \ifdim\pgf@arcto@ry pt=0pt% special rule: zero radius=straight line + \gdef\pgf@marshal{\pgfpathlineto{#6}}% + \else + \pgfmathsetmacro\pgf@arcto@phi{#3}% + \pgfmathsetmacro\pgf@arcto@fA{#4}% + \ifdim\pgf@arcto@fA pt=0pt + \else + \pgfmathsetmacro\pgf@arcto@fA{1.0}% Special rule: every non-zero value is 1. + \fi + \pgfmathsetmacro\pgf@arcto@fS{#5}% + \ifdim\pgf@arcto@fS pt=0pt + \else + \pgfmathsetmacro\pgf@arcto@fS{1.0}% Special rule: every non-zero value is 1. + \fi + \pgf@process{#6}% + \edef\pgf@arcto@xb{\the\pgf@x}% + \edef\pgf@arcto@yb{\the\pgf@y}% + % + % Step 2: x1,y1 is more complicated to compute: It is given by lastx + % and lasty, but these are transformed coordinates, we need the + % untransformed ones. So, we inverse the transformation (arghh...) + % + \pgftransforminvert% + \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}% + \edef\pgf@arcto@xa{\the\pgf@x}% + \edef\pgf@arcto@ya{\the\pgf@y}% + \edef\pgf@temp@a{\pgf@arcto@xa,\pgf@arcto@ya}% + \edef\pgf@temp@b{\pgf@arcto@xb,\pgf@arcto@yb}% + \ifx\pgf@temp@a\pgf@temp@b% special rule: skip! + \global\let\pgf@marshal\pgfutil@empty + \else + % + % Ok, now we got all the parameters setup. Now comes the + % computation... + % + % + % Step 3: Start with a new coordinate system and rotate everything + % by the negated phi. + % + \pgftransformreset + \pgftransformrotate{-\pgf@arcto@phi}% + % Ok, using \pgfpointtransformed we now get transformed points... + % + % Step 4: Compute x1' and y1' (xaprime and yaprime) + % + \pgf@process{% + \pgfpointtransformed{\pgfpointscale{.5}{\pgfpointdiff + {\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}} + {\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}% + }% + }% + }% + \edef\pgf@arcto@xaprime{\pgf@sys@tonumber\pgf@x}% + \edef\pgf@arcto@yaprime{\pgf@sys@tonumber\pgf@y}% + % + % Compute Lambda + % + \pgfmathsetmacro\pgf@arcto@frac@x{\pgf@arcto@xaprime/\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@frac@y{\pgf@arcto@yaprime/\pgf@arcto@ry}% + \pgfmathsetmacro\pgf@arcto@lambda{ + \pgf@arcto@frac@x*\pgf@arcto@frac@x+\pgf@arcto@frac@y*\pgf@arcto@frac@y + }% + \ifdim\pgf@arcto@lambda pt>1pt + \pgfmathsetmacro\pgf@arcto@sqrt@lambda{sqrt(\pgf@arcto@lambda)}% + \pgfmathsetmacro\pgf@arcto@rx{\pgf@arcto@sqrt@lambda*\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@ry{\pgf@arcto@sqrt@lambda*\pgf@arcto@ry}% + \fi + % + % Do some scaling + % + \pgfmathsetmacro\pgf@arcto@xaprime@abs{abs(\pgf@arcto@xaprime)}% + \pgfmathsetmacro\pgf@arcto@yaprime@abs{abs(\pgf@arcto@yaprime)}% + \pgfmathmax@{\pgf@arcto@rx,\pgf@arcto@ry,\pgf@arcto@xaprime@abs,\pgf@arcto@yaprime@abs}% + \pgfmathsetmacro\pgf@arcto@scaling{20/\pgfmathresult}% + \pgfmathsetmacro\pgf@arcto@rx@scaled{\pgf@arcto@scaling*\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@ry@scaled{\pgf@arcto@scaling*\pgf@arcto@ry}% + \pgfmathsetmacro\pgf@arcto@xaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@xaprime}% + \pgfmathsetmacro\pgf@arcto@yaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@yaprime}% + % + % Step 5: Now comes the messy computation of c1' and c2'. + % + \ifdim\pgf@arcto@rx pt>\pgf@arcto@ry pt + \pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}% + \pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime@scaled}% + \pgfmathsetmacro\pgf@arcto@numerator{ + \pgf@arcto@ry@scaled*\pgf@arcto@ry@scaled- + \pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled- + \pgf@arcto@temp*\pgf@arcto@temp + }% + \pgfmathsetmacro\pgf@arcto@denominator{ + \pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled+ + \pgf@arcto@temp*\pgf@arcto@temp + }% + \else + \pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}% + \pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime@scaled}% + \pgfmathsetmacro\pgf@arcto@numerator{ + \pgf@arcto@rx@scaled*\pgf@arcto@rx@scaled- + \pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled- + \pgf@arcto@temp*\pgf@arcto@temp + }% + \pgfmathsetmacro\pgf@arcto@denominator{ + \pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled+ + \pgf@arcto@temp*\pgf@arcto@temp + }% + \fi + \pgfmathsetmacro\pgf@arcto@frac{ + \pgf@arcto@numerator/\pgf@arcto@denominator + }% + \ifdim\pgf@arcto@frac pt<0pt + \pgfmathsetmacro\pgf@arcto@factor{0}% + \else + \pgfmathsetmacro\pgf@arcto@factor{sqrt(\pgf@arcto@frac)}% + \fi + \ifx\pgf@arcto@fA\pgf@arcto@fS + \pgfmathsetmacro\pgf@arcto@factor{-\pgf@arcto@factor}% + \fi + \pgfmathsetmacro\pgf@arcto@cxprime{ + \pgf@arcto@factor*\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime + }% + \pgfmathsetmacro\pgf@arcto@cyprime{ + -\pgf@arcto@factor*\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime + }% + % + % Step 6: Ok, now compute cx,cy + % + \pgftransformreset + \pgftransformrotate{\pgf@arcto@phi}% + \pgf@process{% + \pgfpointtransformed{\pgfqpoint{\pgf@arcto@cxprime pt}{\pgf@arcto@cyprime pt}}% + }% + \edef\pgf@arcto@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% + \pgf@process{\pgfpointadd{\pgf@arcto@temp}{% + \pgfpointscale{.5}{% + \pgfpointadd + {\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}} + {\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}}}% + }% + }% + \edef\pgf@arcto@cx{\the\pgf@x}% + \edef\pgf@arcto@cy{\the\pgf@y}% + % + % Step 7: Compute start angle: + % + \pgfmathsetmacro\pgf@arcto@vec@x{(\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@vec@y{(\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}% + \pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}% + \pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}% + \pgfmathsetmacro\pgf@arcto@theta@start{acos(\pgf@arcto@frac)}% + \ifdim\pgf@arcto@vec@y pt<0pt + \pgfmathsetmacro\pgf@arcto@theta@start{-\pgf@arcto@theta@start}% + \fi + % + % Step 8: Compute end angle: + % + \pgfmathsetmacro\pgf@arcto@vec@x{(-\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}% + \pgfmathsetmacro\pgf@arcto@vec@y{(-\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}% + \pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}% + \pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}% + \pgfmathsetmacro\pgf@arcto@theta@end{acos(\pgf@arcto@frac)}% + \ifdim\pgf@arcto@vec@y pt<0pt + \pgfmathsetmacro\pgf@arcto@theta@end{-\pgf@arcto@theta@end}% + \fi + \pgfmathsetmacro\pgf@arcto@delta@theta{abs(\pgf@arcto@theta@start-\pgf@arcto@theta@end)}% + \ifdim\pgf@arcto@fA pt=0pt + \ifdim\pgf@arcto@delta@theta pt>180pt + % Ok, we need to adjust the angle! + \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt + \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}% + \else + \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}% + \fi + \fi + \else + \ifdim\pgf@arcto@delta@theta pt<180pt + % Ok, we need to adjust the angle! + \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt + \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}% + \else + \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}% + \fi + \fi + \fi + % Qrr: + % 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 + \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}% + \fi + \else + % clockwise + \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start path + \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}% + \fi + \fi + \xdef\pgf@marshal{\noexpand + \pgfpatharcaxes{\pgf@arcto@theta@start}{\pgf@arcto@theta@end} + {\noexpand\pgfpointpolar{\pgf@arcto@phi}{\pgf@arcto@rx}} + {\noexpand\pgfpointpolar{\pgf@arcto@phi+90}{\pgf@arcto@ry}}% + }% + \fi\fi\fi + }% + \pgf@marshal +}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex b/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex index e7a3b02ed7d..9740c39cc21 100644 --- a/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-ext/tikzlibraryext.paths.ortho.code.tex @@ -51,14 +51,13 @@ %%% HVVH/UDLR \tikzset{% - hvvh/.code={\pgfqkeys{/tikz/hvvh}{#1}},% - udlr/.code={\pgfqkeys{/tikz/udlr}{#1}},% - hvvh/.search also=/tikz,% - udlr/.search also=/tikz,% - hvvh/middle 0 to 1/.style={hvvh/spacing=0},% - hvvh/from center/.is if=tikzext@tikz@hvvh@fromcenter,% - udlr/from center/.style={/tikz/hvvh/from center={#1}}, - hvvh/spacing/.code=% spacing = 0 means that the middle part are the pos-itions 0 to 1, + ortho/.code=\pgfqkeys{/tikz/ortho}{#1}, + hvvh/.code=\pgfqkeys{/tikz/ortho}{#1},% + udlr/.code=\pgfqkeys{/tikz/ortho}{#1},% + ortho/.search also=/tikz, + ortho/middle 0 to 1/.style={/tikz/ortho/spacing=0},% + ortho/from center/.is if=tikzext@tikz@hvvh@fromcenter,% + ortho/spacing/.code=% spacing = 0 means that the middle part are the pos-itions 0 to 1, % the first part is -1 to 0, the last part is to 2 \pgfmathint{#1}\let\tikzext@tikz@hvvh@timing@parts\pgfmathresult% in case they are calculations to be done \ifcase\tikzext@tikz@hvvh@timing@parts\relax @@ -76,20 +75,20 @@ \let\tikzext@tikz@hvvh@timing@subtr\pgfmathresult \pgfmathsetmacro\tikzext@tikz@hvvh@timing@factor{1+2*\pgfmathresult}% \fi,% - hvvh/ratio/.code=\pgfmathsetmacro\tikzext@tikz@hvvh@ratio{#1},% + ortho/ratio/.code=\pgfmathsetmacro\tikzext@tikz@hvvh@ratio{#1},% % TODO: not possible to do distance in TikZ coordinate system - hvvh/distance/.code=\pgfmathsetlength\tikzext@tikz@hvvh@distance{#1}\let\tikzext@tikz@hvvh@ratio\pgfutil@empty,% - udlr/distance/.style={% - /tikz/udlr/ud distance={#1},% - /tikz/udlr/du distance={#1},% - /tikz/udlr/lr distance={#1},% - /tikz/udlr/rl distance={#1}},% - udlr/ud distance/.initial=+.5cm,% - udlr/du distance/.initial=+.5cm,% - udlr/lr distance/.initial=+.5cm,% - udlr/rl distance/.initial=+.5cm,% - hvvh/ratio=.5,% default value - hvvh/spacing=4,% default value + ortho/distance/.code=\pgfmathsetlength\tikzext@tikz@hvvh@distance{#1}\let\tikzext@tikz@hvvh@ratio\pgfutil@empty,% + ortho/udlr distance/.style={% + /tikz/ortho/ud distance={#1},% + /tikz/ortho/du distance={#1},% + /tikz/ortho/lr distance={#1},% + /tikz/ortho/rl distance={#1}},% + ortho/ud distance/.initial=+.5cm,% + ortho/du distance/.initial=+.5cm,% + ortho/lr distance/.initial=+.5cm,% + ortho/rl distance/.initial=+.5cm,% + ortho/ratio=.5,% default value + ortho/spacing=4,% default value }% %BEGIN_FOLD Timer @@ -207,7 +206,7 @@ \tikz@make@last@position{#1}% \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\pgf@yc}}\pgf@xc\pgf@yc \begingroup - \pgfqkeys{/tikz/hvvh}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% + \pgfqkeys{/tikz/ortho}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% \iftikz@shapeborder \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@xb}{\tikz@lasty}}}% \iftikzext@tikz@hvvh@fromcenter @@ -277,7 +276,7 @@ \tikz@make@last@position{#1}% \tikz@flush@moveto@toward{\pgfqpoint{\pgf@xc}{\tikz@lasty}}\pgf@xc\pgf@yc \begingroup - \pgfqkeys{/tikz/hvvh}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% + \pgfqkeys{/tikz/ortho}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% \iftikz@shapeborder \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\tikz@lastx}{\pgf@yb}}}% \iftikzext@tikz@hvvh@fromcenter @@ -348,8 +347,8 @@ \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}\pgf@xc\pgf@yc \tikz@make@last@position{#1}% \begingroup - \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% - \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/udlr/ud distance}}% + \pgfqkeys{/tikz/ortho}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% + \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/ortho/ud distance}}% \iftikz@shapeborder \advance\pgf@y1pt% \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@x}{\pgf@y}}}% @@ -399,8 +398,8 @@ \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}\pgf@xc\pgf@yc \tikz@make@last@position{#1}% \begingroup - \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% - \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/udlr/du distance}}% + \pgfqkeys{/tikz/ortho}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% + \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/ortho/du distance}}% \iftikz@shapeborder \advance\pgf@y-1pt% \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@x}{\pgf@y}}}% @@ -450,8 +449,8 @@ \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}\pgf@xc\pgf@yc \tikz@make@last@position{#1}% \begingroup - \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% - \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/udlr/lr distance}}% + \pgfqkeys{/tikz/ortho}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% + \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/ortho/lr distance}}% \iftikz@shapeborder \advance\pgf@x-1pt% \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@x}{\pgf@y}}}% @@ -501,8 +500,8 @@ \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}\pgf@xc\pgf@yc \tikz@make@last@position{#1}% \begingroup - \pgfqkeys{/tikz/udlr}{/tikz/style/.expand once=\tikz@hvvh@currentoption}% - \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/udlr/rl distance}}% + \pgfqkeys{/tikz/udlr}{/tikz/ortho/.expand once=\tikz@hvvh@currentoption}% + \pgfmathsetlength\tikzext@tikz@udlr@distance{\pgfkeysvalueof{/tikz/ortho/rl distance}}% \iftikz@shapeborder% \advance\pgf@x1pt% \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@x}{\pgf@y}}}% @@ -546,6 +545,16 @@ \tikzset{ node as new start/.is if=tikzext@ortho@preflush, node as new start, + ortho/install shortcuts/.style={ + *|/.style={only vertical second={#1}}, *|/.default=, + |*/.style={only vertical first={#1}}, |*/.default=, + *-/.style={only horizontal second={#1}}, *-/.default=, + -*/.style={only horizontal first={#1}}, -*/.default=, + |-/.style={to path={|-(\tikztotarget)\tikztonodes}}, + -|/.style={to path={-|(\tikztotarget)\tikztonodes}}, + -|-/.style=/tikz/horizontal vertical horizontal, + |-|/.style=/tikz/vertical horizontal vertical, + }, horizontal vertical/.style={to path={-| (\tikztotarget) \tikztonodes}}, vertical horizontal/.style={to path={|- (\tikztotarget) \tikztonodes}}, horizontal vertical horizontal/.style={to path={-|- (\tikztotarget) \tikztonodes}}, @@ -611,10 +620,11 @@ \let\tikzext@ortho@anchor\pgfutil@empty \let\tikzext@origtotarget\pgfutil@empty \tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax + \pgf@ya=\pgf@y \iftikz@shapeborder \let\tikzext@origtotarget\tikztotarget \tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax - \ifdim\pgf@y>\tikz@lasty\relax + \ifdim\pgf@ya>\tikz@lasty\relax \edef\tikztotarget{\tikztotarget.south}% \iftikz@shapeborder\def\tikzext@ortho@anchor{.north}\fi \else @@ -640,10 +650,11 @@ \let\tikzext@ortho@anchor\pgfutil@empty \let\tikzext@origtotarget\pgfutil@empty \tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax + \pgf@xa=\pgf@x \iftikz@shapeborder \let\tikzext@origtotarget\tikztotarget \tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax - \ifdim\pgf@x>\tikz@lastx\relax + \ifdim\pgf@xa>\tikz@lastx\relax \edef\tikztotarget{\tikztotarget.west}% \iftikz@shapeborder\def\tikzext@ortho@anchor{.east}\fi \else |