texlive[69329] Master: tikzdotncross (6jan24)

commits+karl at tug.org commits+karl at tug.org
Sun Jan 7 22:25:36 CET 2024


Revision: 69329
          https://tug.org/svn/texlive?view=revision&revision=69329
Author:   karl
Date:     2024-01-07 22:25:36 +0100 (Sun, 07 Jan 2024)
Log Message:
-----------
tikzdotncross (6jan24)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikzdotncross/
    trunk/Master/texmf-dist/doc/latex/tikzdotncross/README.md
    trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf
    trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex
    trunk/Master/texmf-dist/tex/latex/tikzdotncross/
    trunk/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
    trunk/Master/tlpkg/tlpsrc/tikzdotncross.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/tikzdotncross/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzdotncross/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikzdotncross/README.md	2024-01-07 21:25:36 UTC (rev 69329)
@@ -0,0 +1,74 @@
+tikzdotncross
+==========
+
+Small set of macros for defining/marking coordinates and crossing (jumps) paths.
+
+
+For more details,  see the documentation,
+[tikzdotncross.pdf](http://mirrors.ctan.org/macros/latex/contrib/tikzdotncross/doc/tikzdotncross.pdf)
+
+--------------
+
+## Requirements
+* none besides a fairly recent LaTeX distribution as recent as 2022/06/01
+(with the new in kernel *\ProcessKeyOptions* and *\NewDocumentCommand*)
+
+That, besides, pgf/TikZ
+
+## Installation
+The stable version is available at [CTAN](https://ctan.org/pkg/tikzdotncross).
+
+## Usage
+### Stable version
+Just place
+```latex
+  \usepackage{tikzdotncross}
+```
+
+in the preamble and compile away.
+
+
+Be aware that options might change between versions, so you have to check them manually.
+
+
+## Contacting Author
+
+For bug reports and enhancement suggestions, the preferred way is to use
+[the project's issue page](https://github.com/alceu-frigeri/tikzdotncross/issues).
+Please be ready to provide an example code showing the bug, if any.
+
+Please do not use the issue page for generic help on how to use the package.
+
+* git: https://github.com/alceu-frigeri/tikzdotncross
+
+-------------
+Copyright 2024-present by Alceu Frigeri
+
+ This work may be distributed and/or modified under the
+ conditions of
+
+ * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), version 1.3c (or later), and/or
+ * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), version 3 (or later)
+
+This work has the LPPL maintenance status *maintained*.
+
+The Current Maintainer of this work is Alceu Frigeri
+
+-------------
+## This work consists of the files
+
+* tikzdotncross.sty
+    - The Package itself
+
+* README.md (this file)
+    - quick introduction
+
+* tikzdotncross.tex
+    - package documentation
+
+* tikzdotncross.pdf
+    - documentation in PDF format
+
+-------------
+* Version 1.0
+    - Initial release by CTAN.


Property changes on: trunk/Master/texmf-dist/doc/latex/tikzdotncross/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf	2024-01-07 11:11:02 UTC (rev 69328)
+++ trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf	2024-01-07 21:25:36 UTC (rev 69329)

Property changes on: trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex	2024-01-07 21:25:36 UTC (rev 69329)
@@ -0,0 +1,209 @@
+% !TEX program = pdflatex
+% !TEX ext =  --interaction=nonstopmode --enable-etex --enable-write18
+% !BIB program = none
+%%%==============================================================================
+%% Copyright 2024-present by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%%   version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%%   version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version {1.0} {2024/01/03}
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/tikzdotncross
+%%
+%%%==============================================================================
+\documentclass[10pt]{article}
+\RequirePackage[verbose,a4paper,marginparwidth=27.5mm,top=2.5cm,bottom=1.5cm,hmargin={40mm,20mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
+\usepackage{codedescribe}
+\RequirePackage[inline]{enumitem}
+\SetEnumitemKey{miditemsep}{parsep=0ex,itemsep=0.4ex}
+
+\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}}
+  }
+  
+\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}).
+\end{typesetabstract}
+
+%\tableofcontents
+
+\section{Introduction}
+One recurring problem when drawing in general is how to interpret a crossing line. There are many conventions, notably, the old school (like the author of this) a jump denotes ``non touching lines'' while a simple cross is a connection, more recently (like the past 25 years), the winning convention has been that a dot marks a connection, whilst a simple cross denotes ``non touching lines''. Many, for the sake of staying in the safe side of the wall are now marking a connection with dots and non touching lines with a jump, which is a bit overkill, but at least there is no margin for error.
+
+And that's it, this package defines some commands to mark/pin a connection, declaring a coordinate and node at the same spot, for later reference, and a command to draw a line jumping over crossing lines of a pre-existent path.
+
+
+
+\section{Declaring and Marking Coordinates/Nodes}\label{coord}
+Those are based on some ideas from Redaelli et al. (\tsobj[pkg]{CircuiTikZ}). Main differences: a variable number of parameters (see below) and it always also adds an empty node n\tsobj[marg]{coord}.
+\begin{codedescribe}{\showcoordstrue,\shoocoordsfalse}
+\begin{codesyntax}%
+\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.
+\end{codedescribe}
+
+\begin{codedescribe}{\ncoord,\pincoord}
+\begin{codesyntax}%
+\tsobj{\ncoord}\tsverb{(}\tsobj[oarg]{coord}\tsverb{)}
+\tsobj{\pincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord}\tsverb{)}
+\tsobj{\pincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color}\tsverb{)}
+\tsobj{\pincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color,angle}\tsverb{)}
+\tsobj{\pincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color,angle,distance}\tsverb{)}
+\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.
+In fact, the \tsobj{\coord(name)} is just a short cut for \tsverb{\pincoord(name,red,45)}, if \tsobj{\showcoordstrue}.
+\end{codedescribe}
+
+\begin{codedescribe}{\dotcoord,\dotpincoord}
+\begin{codesyntax}%
+\tsobj{\dotcoord}\tsverb{(}\tsobj[oarg]{coord}\tsverb{)}
+\tsobj{\dotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord}\tsverb{)}
+\tsobj{\dotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color}\tsverb{)}
+\tsobj{\dotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color,angle}\tsverb{)}
+\tsobj{\dotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color,angle,distance}\tsverb{)}
+\end{codesyntax}
+These are the same as \tsobj{\ncoord} and friends, just adding a dot (a filled in, small circle) at the coordinate.
+\end{codedescribe}
+
+\begin{codedescribe}{\odotcoord,\odotpincoord}
+\begin{codesyntax}%
+\tsobj{\odotcoord}\tsverb{(}\tsobj[oarg]{coord}\tsverb{)}
+\tsobj{\odotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord}\tsverb{)}
+\tsobj{\odotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color}\tsverb{)}
+\tsobj{\odotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color,angle}\tsverb{)}
+\tsobj{\odotpincoord}\tsverb{(}\tsobj[oarg,sep={,}]{coord,color,angle,distance}\tsverb{)}
+\end{codesyntax}
+These are the same as \tsobj{\ncoord} and friends, just adding an open dot (a small circle filled with white) at the coordinate.
+\end{codedescribe}
+
+
+
+\section{Crossing Paths}\label{pathcross}
+
+\begin{codedescribe}{\pathcross}
+\begin{codesyntax}%
+\tsobj{\pathcross*}\tsargs[oarg]{cross-name}\tsargs[marg]{coordA,coordB,path-name}\tsargs[oarg]{width}
+\end{codesyntax}
+This will draw a line from \tsobj[marg]{coordA} to \tsobj[marg]{coordB} ``jumping over'' any pre-existent (soft) path named \tsobj[marg]{path-name}.
+First of, the reference path \tsobj[marg]{path-name} has to be defined using the \tsobj[key]{name path} key (\tsobj[key]{name path}=\tsobj[marg]{path-name}).
+
+Then this will ``calculate'' the intersections between the line (defined by the coordinates (\tsobj[marg]{coordA}) and (\tsobj[marg]{coordB}) and the path named \tsobj[marg]{path-name}. At each intersection a coordinate named (\tsobj[oarg]{cross-name}-i) and a node (n\tsobj[oarg]{cross-name}-i) will be defined (i goes from 1 up to the number of crossings detected.) A macro named \tsobj[oarg]{cross-name}T will have the number of crossings found. 
+
+At each intersection a semi-circle will be drawn, and finally a line will be draw connecting \tsobj[marg]{coordA} to \tsobj[marg]{coordB} over all intermediate nodes.
+
+The  star version flips the semi-circles.
+\begin{tsremark}
+  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.
+\end{tsremark}
+\end{codedescribe}
+
+\newpage
+\section{Some Examples}
+\textbf{\color{red}Note:} In the examples below, the circuit doesn't make much/any sense, it is just a way to show the commands possibilities.
+
+A first example with \tsobj{\showcoordstrue} (showing all coordinates defined with \tsobj{\ncoord}).
+\showcoordstrue
+\begin{codestore}[crossdemoA]
+\resizebox{0.5\textwidth}{!}{
+\begin{tikzpicture}
+      %% This is the reference, named path
+      %%
+  		\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)
+       ++(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) -- ++(1,0) node[ocirc]{} \ncoord(k) to[open,v=$v_o(t)$] (k |- A) node[ocirc]{} -- (A)
+    (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)
+  ;
+  %% 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};
+  
+\end{tikzpicture}
+}
+\end{codestore}
+
+\tsdemo*[emph={draw,node,ncoord,pincoord,dotcoord,odotcoord},emph2={pathcross},emph3={name,path},basicstyle={\scriptsize\ttfamily},numbers=left]{crossdemoA}
+
+And the same with \tsobj{\showcoordsfalse}
+\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:
+
+\begin{codestore}[crossdemoC]
+\resizebox{0.5\textwidth}{!}{
+\begin{tikzpicture}
+      %% 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)
+      to[R=$R_i$] ++(2,0) 
+      to[C] ++(1,0) \pincoord(B1) ++(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) -- ++(1,0) node[ocirc]{} \ncoord(k) to[open,v=$v_o(t)$] (k |- A) node[ocirc]{} -- (A)
+    (Bb) -- (B) -- (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)
+  ;
+  %% 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};
+\end{tikzpicture}
+}
+\end{codestore}
+
+\tsdemo*[emph={draw,node,ncoord,pincoord,dotcoord,odotcoord},emph2={pathcross},emph3={name,path},basicstyle={\scriptsize\ttfamily},numbers=left]{crossdemoC}
+
+
+\end{document} 
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty	2024-01-07 21:25:36 UTC (rev 69329)
@@ -0,0 +1,173 @@
+%%%==============================================================================
+%% Copyright 2024-present by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%%   version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%%   version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version {1.0} {2024/01/02}
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/tikzdotncross
+%%
+%%%==============================================================================
+%% WARNING: These are personal packs/tests
+%%          They might and probably will change at will as needed
+%% 
+%%%==============================================================================
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+
+
+\ProvidesExplPackage
+    {tikzdotncross}
+    {2024/01/02}
+    {1.0}
+    {Marking coordinates and crossing paths}
+
+\ExplSyntaxOn
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { tikzdotncross / pkg info}
+  {
+     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}
+
+  }
+\cs_if_exist:NF \__codedesc_pkg_info:nn 
+  {
+    \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 \PkgDescription {m} 
+      { 
+        \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}
+
+  %%%%%%%%%%%%%%%%%%%
+  %%%
+  %%% This will 'calculate' the intersection between a line (defined by the coordinates (#3) and (#4) and the path named #5
+  %%% at each intersection a coordinate named (#2-i) and a node (n#2-i) will be defined (i stands for a counter from 1 up to the number of crossings)
+  %%% A macro named <#1T> will have the number of crossings found.
+  %%%
+  %%% At each intersection a semi-circle will be drawn.
+  %%%
+  %%% the first parameter #1, star, flips the semi-circle.
+  %%%
+  %%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand{\pathcross}{sO{cross}mmmO{7pt}}{%
+   \IfBooleanTF{#1}{\def\dotncross@@sign{-}}{\def\dotncross@@sign{}}    
+   \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){}};  
+  \tikzmath{%
+    coordinate \Ctmp; real \dx , \dy , \d;
+    \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});
+  }
+  \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);}
+ }
+
+
+
+  %%%%%%%%%%%%%%%%%%%
+  %%%%
+  %%%% some handy/auxiliary macros to define coordinate/node pairs (and selectively 'pin' them)
+  %%%% based on the idea from Redaelli et al. (CircuiTiKz)
+  %%%%
+  %%%% differences: variable number of paramenters (see below) and it always also adds an empty node n<coord>
+  %%%%
+  %%%%%%%%%%%%%%%%%%%
+
+    %%
+    %% 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@@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
+    %%  \pincoord can be used as
+    %%  \pincoord(coord-name) That's case D
+    %%  \pincoord(coord-name,color) That's case C
+    %%  \pincoord(coord-name,color,angle) That's case B
+    %%  \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,}}
+
+\newcommand\dotncross@@pincoord[5]{%
+  coordinate(#1) node[#5minimum size=1.2pt,inner sep=1.2pt](n#1){}
+  node[circle, #2,  inner sep=1.2pt, outer sep=0pt, radius=1pt, fill=#2!20!white, fill opacity=0.2, draw opacity=0.4, draw,
+    pin={[#2, overlay, inner sep=0pt, outer sep=1pt, font=\tiny, pin distance=#4pt,
+    pin edge={#2, overlay}]#3:#1}]{}%
+}
+  
+\showcoordsfalse        
+


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2024-01-07 11:11:02 UTC (rev 69328)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2024-01-07 21:25:36 UTC (rev 69329)
@@ -839,7 +839,8 @@
     tikz-mirror-lens tikz-nef tikz-network tikz-nfold tikz-opm tikz-optics
     tikz-osci tikz-page tikz-palattice tikz-planets tikz-qtree
     tikz-relay tikz-sfc tikz-swigs tikz-timing tikz-trackschematic tikz-truchet
-    tikzbricks tikzcodeblocks tikzducks tikzfill tikzinclude tikzlings
+    tikzbricks tikzcodeblocks tikzdotncross tikzducks
+    tikzfill tikzinclude tikzlings
     tikzmark tikzmarmots tikzorbital
     tikzpackets tikzpagenodes tikzpeople tikzpfeile tikzpingus tikzposter
     tikzquests tikzscale tikzsymbols

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2024-01-07 11:11:02 UTC (rev 69328)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2024-01-07 21:25:36 UTC (rev 69329)
@@ -1868,6 +1868,7 @@
  'tikz3d-fr'		=> '&POST_onelevel',
  'tikz-cd'		=> '&POSTtikz_cd',
  'tikz-ext'		=> '&POSTtikz_ext',
+ 'tikzdotncross'	=> '&POST_onelevel',
  'tikzquests'		=> '&POST_onelevel',
  'tipa-de'		=> '&POST_rmsymlink',
  'tkz-berge'		=> '&POSTtkz_berge',

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2024-01-07 11:11:02 UTC (rev 69328)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2024-01-07 21:25:36 UTC (rev 69329)
@@ -210,6 +210,7 @@
 depend tikz3d-fr
 depend tikzbricks
 depend tikzcodeblocks
+depend tikzdotncross
 depend tikzducks
 depend tikzfill
 depend tikzinclude

Added: trunk/Master/tlpkg/tlpsrc/tikzdotncross.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.