diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/tikzdotncross/README.md | 74 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf | bin | 0 -> 240745 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex | 209 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty | 173 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 3 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-pictures.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/tikzdotncross.tlpsrc | 0 |
8 files changed, 460 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/tikzdotncross/README.md b/Master/texmf-dist/doc/latex/tikzdotncross/README.md new file mode 100644 index 00000000000..d1a4fdec811 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzdotncross/README.md @@ -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. diff --git a/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf b/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf Binary files differnew file mode 100644 index 00000000000..7fabaae7812 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.pdf diff --git a/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex b/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex new file mode 100644 index 00000000000..4e51d2daf38 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzdotncross/tikzdotncross.tex @@ -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 diff --git a/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty b/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty new file mode 100644 index 00000000000..383d2be49e2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty @@ -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 + diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 74ed9e336ae..a34ecdaa7bb 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -839,7 +839,8 @@ my @TLP_working = qw( 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 diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 735845816ed..68c16ae98ba 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1868,6 +1868,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`); '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', diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc index 8c6477adfc9..0f7e29fb94f 100644 --- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc @@ -210,6 +210,7 @@ depend tikz2d-fr depend tikz3d-fr depend tikzbricks depend tikzcodeblocks +depend tikzdotncross depend tikzducks depend tikzfill depend tikzinclude diff --git a/Master/tlpkg/tlpsrc/tikzdotncross.tlpsrc b/Master/tlpkg/tlpsrc/tikzdotncross.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/tikzdotncross.tlpsrc |