From 1748d1e662c9618cc16f80d5e67669e9e9d6d4be Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 12 Jan 2024 03:01:12 +0000 Subject: CTAN sync 202401120301 --- graphics/pgf/contrib/tikzdotncross/README.md | 7 +- .../contrib/tikzdotncross/doc/tikzdotncross.pdf | Bin 240745 -> 242343 bytes .../contrib/tikzdotncross/doc/tikzdotncross.tex | 65 +++++------ .../contrib/tikzdotncross/latex/tikzdotncross.sty | 123 +++++++++++---------- 4 files changed, 101 insertions(+), 94 deletions(-) (limited to 'graphics/pgf/contrib') diff --git a/graphics/pgf/contrib/tikzdotncross/README.md b/graphics/pgf/contrib/tikzdotncross/README.md index d1a4fdec81..0c4cbfd2de 100644 --- a/graphics/pgf/contrib/tikzdotncross/README.md +++ b/graphics/pgf/contrib/tikzdotncross/README.md @@ -1,11 +1,11 @@ tikzdotncross ========== -Small set of macros for defining/marking coordinates and crossing (jumps) paths. +Set of macros for defining/marking coordinates and crossing paths (with jumps). For more details, see the documentation, -[tikzdotncross.pdf](http://mirrors.ctan.org/macros/latex/contrib/tikzdotncross/doc/tikzdotncross.pdf) +[tikzdotncross.pdf](http://mirrors.ctan.org/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.pdf) -------------- @@ -70,5 +70,8 @@ The Current Maintainer of this work is Alceu Frigeri - documentation in PDF format ------------- +* Version 1.1 (this) + - Documentation typos and improvement. Code cleanup. + * Version 1.0 - Initial release by CTAN. diff --git a/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.pdf b/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.pdf index 7fabaae781..c4bb9648fe 100644 Binary files a/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.pdf and b/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.pdf differ diff --git a/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.tex b/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.tex index 4e51d2daf3..0719876146 100644 --- a/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.tex +++ b/graphics/pgf/contrib/tikzdotncross/doc/tikzdotncross.tex @@ -15,7 +15,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {1.0} {2024/01/03} +%% This is version {1.1} {2024/01/11} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/tikzdotncross @@ -30,18 +30,18 @@ \usepackage[american,siunitx,cuteinductors,smartlabels,arrowmos,EFvoltages,betterproportions]{circuitikz} \usetikzlibrary{math} \usepackage{tikzdotncross} - \RequirePackage[hidelinks,hypertexnames=false]{hyperref} \begin{document} \tstitle{ author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/tikzdotncross}}}, date={\tsdate}, - title={Marking Coordinates and Crossing Paths\break Version \PkgInfo{tikzdotncross}{version}} + title={The tikzdotncross Package\break Marking Coordinates and Crossing Paths\break Version \PkgInfo{tikzdotncross}{version}} } -\begin{typesetabstract} -This is a small package that offers a few alternative ways for declaring and marking coordinates and drawing a line with ``jumps'' over an already given path, which is a quite common issue when drawing, for instace, Electronics Circuits (like with \tsobj[pkg]{CircuiTikZ}). +\begin{typesetabstract} + +This package offers a few alternative ways for declaring and marking coordinates and drawing a line with ``jumps over'' an already given path, which is a quite common issue when drawing, for instance, Electronics Circuits, e.g. \tsobj[pkg]{CircuiTikZ}. \end{typesetabstract} %\tableofcontents @@ -60,7 +60,7 @@ Those are based on some ideas from Redaelli et al. (\tsobj[pkg]{CircuiTikZ}). Ma \tsmacro{\showcoordstrue}{} \tsmacro{\showcoordsfalse}{} \end{codesyntax} -These will affect how \tsobj{\ncoord,\dotcoord,\odotcoord} will behave, with \tsobj{\showcoordstrue} a red pin will also be added to the newly defined coordinate/node. +These will affect how \tsobj{\ncoord,\dotcoord,\odotcoord} will behave, with \tsobj{\showcoordstrue} a red pin will also be added to the newly defined coordinate/node. The initial state is \tsobj{\showcoordsfalse}. It can be turned on/off as needed. \end{codedescribe} \begin{codedescribe}{\ncoord,\pincoord} @@ -73,7 +73,7 @@ These will affect how \tsobj{\ncoord,\dotcoord,\odotcoord} will behave, with \ts \end{codesyntax} The \tsobj{\ncoord} always expects a single parameter \tsobj[parg]{coord}. A coordinate named \tsobj[marg]{coord} and node named n\tsobj[marg]{coord} (a ``n'' is added as a prefix) will be created for later use/reference. If \tsobj{\showcoordstrue} is en force, it will also add a pin. -The \tsobj{\pincoord} expects one to 4 parameters, as listed. If omitted, the default value for distance is 4 (unit: pt), the default value for the angle is -45 (degrees), the default value for color is blue. +The \tsobj{\pincoord} always draws a pin, besides declaring a coordinate and node as \tsobj{\ncoord}. It expects one to 4 parameters, as listed. If omitted, the default value for distance is 4 (unit: pt), the default value for the angle is -45 (degrees), the default value for color is blue. In fact, the \tsobj{\coord(name)} is just a short cut for \tsverb{\pincoord(name,red,45)}, if \tsobj{\showcoordstrue}. \end{codedescribe} @@ -119,7 +119,10 @@ The star version flips the semi-circles. The default \tsobj[oarg]{cross-name} is ``cross''. It may contain only characters, as any valid \TeX\ macro name. The default \tsobj[oarg]{width} of the semi-circle is 7pt. \end{tsremark} \begin{tsremark} - This is based on the \tsobj[pkg]{tikz} library \tsobj[pkg]{intersetions}, inheriting it's limitations. The main one: It only detects crossings over ``soft paths'', this means, if the line defined by \tsobj[marg]{coordA} and \tsobj[marg]{coordB} crosses over a node, it won't detect it. + This is based on the \tsobj[pkg]{tikz} library \tsobj[pkg]{intersetions}, inheriting it's limitations. The main one: It only detects crossings over ``soft paths'', this means, if the line defined by \tsobj[marg]{coordA} and \tsobj[marg]{coordB} crosses over a node, it will, in most cases, miss it (depends on how the node is draw and interacts with the soft path system). +\end{tsremark} +\begin{tsremark} + When using the crossing coordinates, like (\tsobj[oarg]{cross-name}-i), be aware that in some ill-defined cases, \tsobj[pkg]{intersections} might detect a crossing either at the starting and/or ending points. \tsobj{\pathcross} accounts for that, but you will be left with some extra reference coordinates, either the first one, last one or both. \end{tsremark} \end{codedescribe} @@ -137,26 +140,26 @@ A first example with \tsobj{\showcoordstrue} (showing all coordinates defined wi \draw[name path=base circ] (0,0) \dotcoord(A) to[V,invert,l=$v_i(t)$] ++(0,2) -- ++(0,1) \ncoord(Y) to[R=$R_i$] ++(2,0) - to[C] ++(1,0) \pincoord(B1) ++(1,0) \ncoord(B) + to[C] ++(1,0) \pincoord(A1) ++(1,0) \ncoord(B) ++(1,0) node[pnp,anchor=B] (T1){} (A) -- (A -| B) to[R=$R_{b_2}$] ++(0,2) \ncoord(Bb) (B) ++(0,1) \ncoord(Cb) to[R=$R_{b_1}$] ++(0,2) \ncoord(C) - (T1.C) to[R,l=$R_c$] (T1.C |- A) -- (A) - (T1.E) to[R,l_=$R_e$] (T1.E |- C) -- (C -| A) -- ++(-2,0) \ncoord(X) to[V,l=$V_{cc}$] (X |- A) -- (A) + (T1.C) to[R,l_=$R_c$] (T1.C |- A) -- (A) + (T1.E) to[R,l=$R_e$] (T1.E |- C) -- (C -| A) -- ++(-2,0) \ncoord(X) to[V,l=$V_{cc}$] (X |- A) -- (A) (T1.C) -- ++(1,0) node[ocirc]{} \ncoord(k) to[open,v=$v_o(t)$] (k |- A) node[ocirc]{} -- (A) - (Bb) -- (Cb); + (Bb) -- (Cb) ; %% These are just a few, marked, coords (they could be part of the previous path %% - \path (T1.E) ++(1,0) \pincoord(X1) ++(-10,2) \pincoord(X2) - (X1) ++(0,-1) \pincoord(X1b) (X2) ++(0,-1) \pincoord(X2b) - (T1.C) ++(0.5,-0.5) \pincoord(X1a) (T1.C) ++(-9,0) \pincoord(X2a) - (T1.B) \pincoord(B2,blue,225) + \path (T1.E) ++(1,0) \pincoord(B1) ++(-10,2) \pincoord(B2) + (B1) ++(0,-1) \pincoord(D1) (B2) ++(0,-1) \pincoord(D2) + (T1.C) ++(0.5,-0.5) \pincoord(C1) (T1.C) ++(-9,0) \pincoord(C2) + (T1.B) \odotpincoord(A2,blue,225) ; %% And that's all, a few crossing lines %% - \pathcross{B1}{T1.B}{base circ}[4pt] \draw (Y) +(0,1.7) node(){N.cross A:\crossT}; - \pathcross*{X1}{X2}{base circ}[3pt] \draw (Y) +(0,1.3) node(){N.cross B:\crossT}; - \pathcross[sec]{X2a}{X1a}{base circ}[6pt] \draw (Y) +(0,0.9) node(){N.cross C:\secT}; + \pathcross{A1}{A2}{base circ}[4pt] \draw (Y) +(0,1.7) node(){N.cross A:\crossT}; + \pathcross*{B1}{B2}{base circ}[3pt] \draw (Y) +(0,1.3) node(){N.cross B:\crossT}; + \pathcross*[sec]{C1}{C2}{base circ}[6pt] \draw (Y) +(0,0.9) node(){N.cross C:\secT}; \end{tikzpicture} } @@ -170,7 +173,7 @@ And the same with \tsobj{\showcoordsfalse} \tsresult*[emph={draw,node,ncoord,pincoord,dotcoord,odotcoord},emph2={pathcross},emph3={name,path},basicstyle={\scriptsize\ttfamily},numbers=left]{crossdemoA} \newpage -As said, the main limitation (derived from how \tsobj[pkg]{intersections} works) is that crossings between the line and nodes aren't detected at all. So if someone tries to connect the nodes \tsobj[key]{X1b,X2b}, it will result: +As said, the main limitation (derived from how \tsobj[pkg]{intersections} works) is that crossings between the line and nodes might not be detected at all. For example, if someone tries to connect the nodes \tsobj[key]{D1,D2}, it will, unfortunately, fail detecting the node (pnp transistor) entirely: \begin{codestore}[crossdemoC] \resizebox{0.5\textwidth}{!}{ @@ -178,27 +181,27 @@ As said, the main limitation (derived from how \tsobj[pkg]{intersections} works) %% This is the reference, named path %% \draw[name path=base circ] - (0,0) \ncoord(A) to[V,invert,l=$v_i(t)$] ++(0,2) -- ++(0,1) \ncoord(Y) + (0,0) \dotcoord(A) to[V,invert,l=$v_i(t)$] ++(0,2) -- ++(0,1) \ncoord(Y) to[R=$R_i$] ++(2,0) - to[C] ++(1,0) \pincoord(B1) ++(1,0) \ncoord(B) + to[C] ++(1,0) \pincoord(A1) ++(1,0) \ncoord(B) ++(1,0) node[pnp,anchor=B] (T1){} (A) -- (A -| B) to[R=$R_{b_2}$] ++(0,2) \ncoord(Bb) (B) ++(0,1) \ncoord(Cb) to[R=$R_{b_1}$] ++(0,2) \ncoord(C) - (T1.C) to[R,l=$R_c$] (T1.C |- A) -- (A) - (T1.E) to[R,l_=$R_e$] (T1.E |- C) -- (C -| A) -- ++(-2,0) \ncoord(X) to[V,l=$V_{cc}$] (X |- A) -- (A) + (T1.C) to[R,l_=$R_c$] (T1.C |- A) -- (A) + (T1.E) to[R,l=$R_e$] (T1.E |- C) -- (C -| A) -- ++(-2,0) \ncoord(X) to[V,l=$V_{cc}$] (X |- A) -- (A) (T1.C) -- ++(1,0) node[ocirc]{} \ncoord(k) to[open,v=$v_o(t)$] (k |- A) node[ocirc]{} -- (A) - (Bb) -- (B) -- (Cb); + (Bb) -- (Cb) ; %% These are just a few, marked, coords (they could be part of the previous path %% - \path (T1.E) ++(1,0) \pincoord(X1) ++(-10,2) \pincoord(X2) - (X1) ++(0,-1) \pincoord(X1b) (X2) ++(0,-1) \pincoord(X2b) - (T1.C) ++(0.5,-0.5) \pincoord(X1a) (T1.C) ++(-9,0) \pincoord(X2a) - (T1.B) \pincoord(B2,blue,225) + \path (T1.E) ++(1,0) \pincoord(B1) ++(-10,2) \pincoord(B2) + (B1) ++(0,-1) \pincoord(D1) (B2) ++(0,-1) \pincoord(D2) + (T1.C) ++(0.5,-0.5) \pincoord(C1) (T1.C) ++(-9,0) \pincoord(C2) + (T1.B) \pincoord(A2,blue,225) ; %% And that's all, a few crossing lines %% - \pathcross{B1}{T1.B}{base circ}[4pt] \draw (Y) +(0,2) node(){N.cross A:\crossT}; - \pathcross[sec]{X2b}{X1b}{base circ}[6pt] \draw (Y) +(0,1.6) node(){N.cross B:\secT}; + \pathcross{A1}{A2}{base circ}[4pt] \draw (Y) +(0,2) node(){N.cross A:\crossT}; + \pathcross[sec]{D2}{D1}{base circ}[6pt] \draw (Y) +(0,1.6) node(){N.cross D:\secT}; \end{tikzpicture} } \end{codestore} diff --git a/graphics/pgf/contrib/tikzdotncross/latex/tikzdotncross.sty b/graphics/pgf/contrib/tikzdotncross/latex/tikzdotncross.sty index 383d2be49e..2385fb155e 100644 --- a/graphics/pgf/contrib/tikzdotncross/latex/tikzdotncross.sty +++ b/graphics/pgf/contrib/tikzdotncross/latex/tikzdotncross.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {1.0} {2024/01/02} +%% This is version {1.1} {2024/01/11} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/tikzdotncross @@ -24,14 +24,12 @@ %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] - \ProvidesExplPackage {tikzdotncross} - {2024/01/02} - {1.0} + {2024/01/11} + {1.1} {Marking coordinates and crossing paths} -\ExplSyntaxOn %%%%%%% %%% %%% Just an attempt of having my packages info in a regular way @@ -42,32 +40,32 @@ { name .code:n = {tikzdotncross} , prefix .code:n = {tikzdotncross} , - date .code:n = {2024/01/02}, - version .code:n = {1.0} , - description .code:n = {Marking coordinates and crossing paths} - + date .code:n = {2024/01/11}, + version .code:n = {1.1} , + description .code:n = {Marking~ coordinates~ and~ crossing~ paths} } -\cs_if_exist:NF \__codedesc_pkg_info:nn +\cs_if_exist:NF \PkgInfo { - \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 - { \keys_set:nn {#1 / pkg info}{#2} } - } -\cs_if_exist:NF \PkgInfo - { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } -\cs_if_exist:NF \PkgDescription - { + \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } \NewDocumentCommand \PkgDescription {m} - { - \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par - } + { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par } } %%%%%%% %%% End of cut-n-paste %%%%%%% + \ExplSyntaxOff + \makeatletter \usetikzlibrary{intersections} + %% + %% There is no easy and clean way + %% to convert this all to expl3 (for instance underscore, under expl3 code regimè, is a letter) + %% spaces (pgf/tikz) and then ':' (which is an active character under tikz but a letter for expl3) + %% ... and still being expandable + %% + %%%%%%%%%%%%%%%%%%% %%% %%% This will 'calculate' the intersection between a line (defined by the coordinates (#3) and (#4) and the path named #5 @@ -84,29 +82,46 @@ \path[name path=#2 self] (#3) -- (#4); \draw[name intersections={of={#5} and {#2 self},name=#2,total=\CrossTotal,sort by={#2 self}}] \pgfextra{\csxdef{#2T}{\CrossTotal}} - \foreach \aux in {1,...,\CrossTotal}{(#2-\aux) node[minimum size=#6-\pgflinewidth,inner sep=0pt](n#2-\aux){}}; + \foreach \aux in {1,...,\csuse{#2T}}{(#2-\aux) node[minimum size=#6-\pgflinewidth,inner sep=0pt](n#2-\aux){}}; \tikzmath{% - coordinate \Ctmp; real \dx , \dy , \d; + coordinate \Ctmp; real \dx , \dy , \d; int \idx; \Ctmp{from} = (#3); \Ctmp{to} = (#4); \dx{tmp} = \Ctmpx{to} - \Ctmpx{from}; \dy{tmp} = \Ctmpy{to} - \Ctmpy{from}; \d{ang} = atan2(\dy{tmp},\dx{tmp}); + \Ctmp{1st} = (n#2-1); + \Ctmp{last} = (n#2-\csuse{#2T}); + \idx{1st} = 1; + \idx{last} = \csuse{#2T}; + \idx{crossing} = 1; + if \Ctmpx{1st} == \Ctmpx{from} then { + if \Ctmpy{1st} == \Ctmpy{from} then { + \idx{1st} = 2; + }; + }; + if \Ctmpx{last} == \Ctmpx{to} then { + if \Ctmpy{last} == \Ctmpy{to} then { + \idx{last} = \idx{last}-1; + }; + }; } - \draw[line width=1.8\pgflinewidth,white,rotate=\d{ang}] - \foreach \aux in {1,...,\csuse{#2T}}{(#2-\aux) +(-#6/2,0) arc[start angle=\dotncross@@sign180,end angle=0,radius=#6/2]}; - \draw[rotate=\d{ang},line cap=round] - \foreach \aux in {1,...,\csuse{#2T}}{(#2-\aux) +(-#6/2,0) arc[start angle=\dotncross@@sign180,end angle=0,radius=#6/2]}; - - \gdef\dotncross@@tmpA{#3} - \gdef\dotncross@@ListA{} - \foreach \x in {1,...,\csuse{#2T}} {\xappto{\dotncross@@ListA}{\dotncross@@tmpA/n#2-\x,}\xdef\dotncross@@tmpA{n#2-\x}} - \xappto{\dotncross@@ListA}{n#2-\csuse{#2T}/#4} - \foreach \xa/\xb in \dotncross@@ListA {\draw[line cap=round] (\xa) -- (\xb);} + \ifnum\idx{last}<\idx{1st} + \draw (#3) -- (#4); + \else + \draw[line width=1.8\pgflinewidth,white,rotate=\d{ang}] + \foreach \aux in {\idx{1st},...,\idx{last}}{(#2-\aux) +(-#6/2,0) arc[start angle=\dotncross@@sign180,end angle=0,radius=#6/2]}; + \draw[rotate=\d{ang},line cap=round] + \foreach \aux in {\idx{1st},...,\idx{last}}{(#2-\aux) +(-#6/2,0) arc[start angle=\dotncross@@sign180,end angle=0,radius=#6/2]}; + + \gdef\dotncross@@tmpA{#3} + \gdef\dotncross@@ListA{} + \foreach \x in {\idx{1st},...,\idx{last}} {\xappto{\dotncross@@ListA}{\dotncross@@tmpA/n#2-\x,}\xdef\dotncross@@tmpA{n#2-\x}} + \xappto{\dotncross@@ListA}{n#2-\idx{last}/#4} + \foreach \xa/\xb in \dotncross@@ListA {\draw[line cap=round] (\xa) -- (\xb);} + \fi } - - %%%%%%%%%%%%%%%%%%% %%%% %%%% some handy/auxiliary macros to define coordinate/node pairs (and selectively 'pin' them) @@ -115,26 +130,21 @@ %%%% differences: variable number of paramenters (see below) and it always also adds an empty node n %%%% %%%%%%%%%%%%%%%%%%% - - %% - %% There is no easy and clean way - %% to convert this to expl3 (for instance underscore, under expl3 code regimè, is a letter) - %% spaces (pgf/tikz) and then ':' ... and still being expandable - %% \newcommand\showcoordsfalse{\let\ncoord=\dotncross@@coordnode \let\dotcoord=\dotncross@@dotcoordnode \let\odotcoord=\dotncross@@odotcoordnode} \newcommand\showcoordstrue{\let\ncoord=\dotncross@@coordpin \let\dotcoord=\dotncross@@dotcoordpin \let\odotcoord=\dotncross@@odotcoordpin} \def\dotncross@@coordpin(#1){\pincoord(#1,red,45)} -\def\dotncross@@coordnode(#1){coordinate(#1) node(n#1){}} +\def\dotncross@@coordnode(#1){coordinate(#1) node[minimum size=1.2pt,inner sep=1.2pt](n#1){}} \def\dotncross@@dotcoordpin(#1){\dotpincoord(#1,red,45)} \def\dotncross@@dotcoordnode(#1){coordinate(#1) node[circle,minimum size=1.2pt,inner sep=1.2pt,fill](n#1){}} \def\dotncross@@odotcoordpin(#1){\odotpincoord(#1,red,45)} \def\dotncross@@odotcoordnode(#1){coordinate(#1) node[circle,minimum size=1.2pt,inner sep=1.2pt,fill=white,draw](n#1){}} + %%%% %% - %% And some TeX trickery to have a (expandable) variable number of parameters + %% And some TeX to have a (expandable) variable number of parameters %% \pincoord can be used as %% \pincoord(coord-name) That's case D %% \pincoord(coord-name,color) That's case C @@ -142,25 +152,16 @@ %% \pincoord(coord-name,color,angle,lenght) That's case A %% %%%% -\def\dotncross@@pincase#1,#2,#3,#4,#5#6#7#8#9:{#8:#1:#2:#3:#4:} - -\def\pincoord(#1){\dotncross@@pincase#1,,,,\dotncross@@pincaseA\dotncross@@pincaseB\dotncross@@pincaseC\dotncross@@pincaseD:} -\def\dotncross@@pincaseA:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{#3}{#4}{}} -\def\dotncross@@pincaseB:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{#3}{4}{}} -\def\dotncross@@pincaseC:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{-45}{4}{}} -\def\dotncross@@pincaseD:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{blue}{-45}{4}{}} - -\def\dotpincoord(#1){\dotncross@@pincase#1,,,,\dotncross@@dotpincaseA\dotncross@@dotpincaseB\dotncross@@dotpincaseC\dotncross@@dotpincaseD:} -\def\dotncross@@dotpincaseA:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{#3}{#4}{circle,fill,}} -\def\dotncross@@dotpincaseB:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{#3}{4}{circle,fill,}} -\def\dotncross@@dotpincaseC:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{-45}{4}{circle,fill,}} -\def\dotncross@@dotpincaseD:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{blue}{-45}{4}{circle,fill,}} - -\def\odotpincoord(#1){\dotncross@@pincase#1,,,,\dotncross@@odotpincaseA\dotncross@@odotpincaseB\dotncross@@odotpincaseC\dotncross@@odotpincaseD:} -\def\dotncross@@odotpincaseA:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{#3}{#4}{circle,fill=white,draw,}} -\def\dotncross@@odotpincaseB:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{#3}{4}{circle,fill=white,draw,}} -\def\dotncross@@odotpincaseC:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{#2}{-45}{4}{circle,fill=white,draw,}} -\def\dotncross@@odotpincaseD:#1:#2:#3:#4:{\dotncross@@pincoord{#1}{blue}{-45}{4}{circle,fill=white,draw,}} +\def\dotncross@@pincasew#1#2{\dotncross@@pincase#1,,,,\dotncross@@pincaseA\dotncross@@pincaseB\dotncross@@pincaseC\dotncross@@pincaseD;#2:} +\def\dotncross@@pincase#1,#2,#3,#4,#5#6#7#8#9:{#8:#1:#2:#3:#4:#9:} +\def\dotncross@@pincaseA:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{#3}{#4}{#6}} +\def\dotncross@@pincaseB:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{#3}{4}{#6}} +\def\dotncross@@pincaseC:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{-45}{4}{#6}} +\def\dotncross@@pincaseD:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{blue}{-45}{4}{#6}} + +\def\pincoord(#1){\dotncross@@pincasew{#1}{}} +\def\dotpincoord(#1){\dotncross@@pincasew{#1}{circle,fill,}} +\def\odotpincoord(#1){\dotncross@@pincasew{#1}{circle,fill=white,draw,}} \newcommand\dotncross@@pincoord[5]{% coordinate(#1) node[#5minimum size=1.2pt,inner sep=1.2pt](n#1){} -- cgit v1.2.3