texlive[71178] Master/texmf-dist: circuitikz (5may24)

commits+karl at tug.org commits+karl at tug.org
Sun May 5 21:41:50 CEST 2024


Revision: 71178
          https://tug.org/svn/texlive?view=revision&revision=71178
Author:   karl
Date:     2024-05-05 21:41:50 +0200 (Sun, 05 May 2024)
Log Message:
-----------
circuitikz (5may24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
    trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md
    trunk/Master/texmf-dist/doc/generic/circuitikz/README.md
    trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex
    trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf
    trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex
    trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
    trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty

Modified: trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md	2024-05-05 19:41:50 UTC (rev 71178)
@@ -1,6 +1,17 @@
 <!--- CircuiTikz - Changelog --->
 The major changes among the different CircuiTikZ versions are listed here. See <https://github.com/circuitikz/circuitikz/commits> for a full list of changes.
 
+* Version 1.6.8 (2024-05-05)
+
+    Several new components, more anchors, a bit of documentation enhancement; maybe the biggest change is the new "flexible" tube.
+
+    - Added `mid` anchor to all traditional switches
+    - Added a slashed generic European-style resistor (thanks to [Jana](https://tex.stackexchange.com/q/711702/38080))
+    - Added a multi-anode tube for implementing nixies and vfd (thanks to [GitHub user nogger33](https://github.com/circuitikz/circuitikz/issues/785))
+    - Switch the default compiler to pdflatex (see https://tex.stackexchange.com/q/709273/38080)
+    - Added a warning about color and engine in the documentation
+    - Enhanced the documentation for instruments (thanks to [Github user mxxmxm](https://github.com/circuitikz/circuitikz/issues/787))
+
 * Version 1.6.7 (2024-02-09)
 
     Several new blocks, more flexible generic anchors for blocks, and a new option to align the signs on american-style voltage sources.

Modified: trunk/Master/texmf-dist/doc/generic/circuitikz/README.md
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex	2024-05-05 19:41:50 UTC (rev 71178)
@@ -5,6 +5,33 @@
 
 \begin{itemize}
 \item
+  Version 1.6.8 (2024-05-05)
+
+  Several new components, more anchors, a bit of documentation
+  enhancement; maybe the biggest change is the new ``flexible'' tube.
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Added \texttt{mid} anchor to all traditional switches
+  \item
+    Added a slashed generic European-style resistor (thanks to
+    \href{https://tex.stackexchange.com/q/711702/38080}{Jana})
+  \item
+    Added a multi-anode tube for implementing nixies and vfd (thanks to
+    \href{https://github.com/circuitikz/circuitikz/issues/785}{GitHub
+    user nogger33})
+  \item
+    Switch the default compiler to pdflatex (see
+    https://tex.stackexchange.com/q/709273/38080)
+  \item
+    Added a warning about color and engine in the documentation
+  \item
+    Enhanced the documentation for instruments (thanks to
+    \href{https://github.com/circuitikz/circuitikz/issues/787}{Github
+    user mxxmxm})
+  \end{itemize}
+\item
   Version 1.6.7 (2024-02-09)
 
   Several new blocks, more flexible generic anchors for blocks, and a
@@ -325,7 +352,7 @@
     B. Cameron, user \texttt{@cameroncb1} on GitHub)
   \item
     Added Shockley diode (suggested by
-    {[}@dauph{]}(https://tex.stackexchange.com/questions/646039/creating-a-shockley-diode-in-circuitikz))
+    \href{https://tex.stackexchange.com/questions/646039/creating-a-shockley-diode-in-circuitikz}{@dauph})
   \end{itemize}
 \item
   Version 1.5.2 (2022-05-08)
@@ -439,7 +466,7 @@
     Robustify some shapes: do not let arrows option pass to the inner
     drawing (see
     \href{https://tex.stackexchange.com/a/632084/38080}{here} and
-    \href{https://matrix.to/\#/!NuxCISwYQJuyWwNsEI:matrix.org/$vQO6luq1F66LJ79dERmaqKI46qMBcjStqYCPi725uZE?via=matrix.org\&via=2krueger.de\&via=im.f3l.de}{here})
+    \href{https://matrix.to/\#/!NuxCISwYQJuyWwNsEI:matrix.org/$vQO6luq1F66LJ79dERmaqKI46qMBcjStqYCPi725uZE?via=matrix.org&via=2krueger.de&via=im.f3l.de}{here})
   \item
     Add warning about global draw options in the manual
   \item
@@ -1503,7 +1530,7 @@
   \item
     Fixed varcap symbol at small scalings
   \item
-    New packet-option "straightvoltages, to draw straight(no curved)
+    New packet-option ``straightvoltages, to draw straight(no curved)
     voltage arrows
   \item
     New option ``invert'' to revert the node direction at paths

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex	2024-05-05 19:41:50 UTC (rev 71178)
@@ -193,6 +193,13 @@
 
 \subsection{Related and extension packages}
 
+\subsubsection{Related packages}
+
+At the Friedrich-Alexander-Universität, a group of developers are implementing a graphical interface to draw circuits with \Circuitikz{}.
+You can find more information \href{https://github.com/circuitikz/circuitikz/issues/782}{in this GitHub issue} or, better, in their \href{https://ussi.e-technik.uni-erlangen.de/}{main site}.
+
+\subsubsection{Extension packages}
+
 \Circuitikz{} is meant to be, as much as possible, format-agnostic (which means that it can be used from \LaTeX{}, plain \TeX{} and~\ConTeXt). It is growing in functionality and components, but not everything can be added to the package. In this section, there is a list of packages, available at CTAN, that extend or enhance \Circuitikz{} but are distributed separately.\footnote{If you have a package or know a package that should be listed here, please contact the \Circuitikz{} authors, or, better, send a pull request to the project and it will be added.}
 
 \begin{description}
@@ -212,6 +219,7 @@
 
 Also, notice that several components will interact in a funny way with global path options. Depending on the specific component, some parameters are inherited by the internal shape, and some others are reset. This is not easy to fix in general. We want some options to go through --- fill color, dashed pattern for example --- and some others to stay only in the outer path; and if the background shape needs some option for drawing the internal shape, like for example a rounded corner, it \emph{must} reset the external option. So there is no perfect solution, although since \texttt{v1.5.0} the shapes have been ``robustified'', so that by default arced corners and arrows parameters will \emph{not} be propagated into the shape.
 Arrows with \texttt{to[]} components don't work, anyway, so basically avoid this situation.
+In some cases, also the engine you are using (as \texttt{pdflatex}, \texttt{xelatex}, and so on) can impact coloring in corner cases (or even not so in the corner, like in \href{https://tex.stackexchange.com/q/709273/38080}{american-style voltage source signs}).
 
 \begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
 \begin{circuitikz}[]
@@ -2049,6 +2057,7 @@
     \circuitdescbip{open}{Open circuit}{}
     \circuitdescbip*{generic}{Generic (symmetric) bipole}{}
     \circuitdescbip*{xgeneric}{Crossed generic (symmetric) bipole}{}
+    \circuitdescbip*{sgeneric}{Slashed generic bipole}{}
     \circuitdescbip*{tgeneric}{Tunable generic bipole}{}
     \circuitdescbip*{ageneric}{Generic asymmetric bipole}{}
     \circuitdescbip*{memristor}{Memristor}{Mr}
@@ -2961,16 +2970,50 @@
 
 
 \subsection{Instruments}
+\subsubsection{Basic round instruments}
+
 \begin{groupdesc}
-    \circuitdescbip*{ammeter}{Ammeter}{}
-    \circuitdescbip*{voltmeter}{Voltmeter}{}
-    \circuitdescbip*{ohmmeter}{Ohmmeter}{}
     \circuitdescbip*{rmeter}{Round meter (use \texttt{t=...} for the symbol)}{}(left/135/0.2, right/45/0.2, center/-90/0.3)
     \circuitdescbip*{rmeterwa}{Round meter with arrow (use \texttt{t=...} for the symbol)}{}(left/135/0.2, right/45/0.2, center/-90/0.3)
+    \circuitdescbip*{ammeter}{Legacy ammeter}{}
+    \circuitdescbip*{voltmeter}{Legacy voltmeter}{}
+    \circuitdescbip*{ohmmeter}{Legacy ohmmeter}{}
+\end{groupdesc}
+
+You can define styles if you want to use the new shapes for round instrument similarly to the legacy ones:%
+\footnote{Suggested by \href{https://github.com/circuitikz/circuitikz/issues/787}{user mxxmxn on GitHub}.}
+
+\begin{LTXexample}[varwidth=true]
+\tikzset{vmeter/.style={rmeterwa, t=V}}
+\tikzset{ameter/.style={rmeterwa, t=A}}
+\tikzset{ometer/.style={rmeterwa, t=$\Omega$}}
+
+\begin{tikzpicture}
+    % Old meter style
+    \draw (0,2) to[voltmeter] ++(2,0)
+        to[ammeter] ++(2,0)
+        to[ohmmeter] ++(2,0);
+    % New meter style
+    \draw (0,0) to[vmeter] ++(2,0)
+        to[ameter] ++(2,0)
+        to[ometer] ++(2,0);
+\end{tikzpicture}
+\end{LTXexample}
+
+\subsubsection{Square instruments}
+
+Sometimes it is better to use a shape for instruments which is very different from the round symbols used for sources.
+
+\begin{groupdesc}
     \circuitdescbip*{smeter}{Square meter (use \texttt{t=...} for the symbol)}{}(left/135/0.2, right/45/0.2, center/-90/0.3, in 1/-135/.5, in 2/-45/.5)
     \circuitdescbip*{qiprobe}{QUCS-style current probe}{}(left/135/0.2, right/45/0.2, center/-90/0.3)
     \circuitdescbip*{qvprobe}{QUCS-style voltage probe}{}(left/135/0.2, right/45/0.2, center/-90/0.3)
     \circuitdescbip*{qpprobe}{QUCS-style power probe}{}(left/135/0.2, right/45/0.2, center/-90/0.3, v+/-135/.5, v-/-45/.5)
+\end{groupdesc}
+
+\subsubsection{Oscilloscopes and current probes}
+
+\begin{groupdesc}
     \circuitdescbip*[oscope]{oscope}{Oscilloscope\footnotemark}{}(left/135/0.2, right/45/0.2,
     in 1/-135/0.4, in 2/-45/0.4)
     \footnotetext{Suggested by \texttt{@nobrl} on GitHub}
@@ -4947,7 +4990,61 @@
 \end{LTXexample}
 
 
+\subsubsection{Multi-anode tube}
 
+The multi-anode tube (\texttt{matube}) is a component thought to be tailored for several different usages,\footnote{It was added in \texttt{v1.6.8} after suggestions by user \texttt{bogger33} on GitHub \href{https://github.com/circuitikz/circuitikz/issues/781}{here} and \href{https://github.com/circuitikz/circuitikz/issues/785}{here}.} as shown in the examples below.
+
+The anchors for the multiple anodes have also alias names to ease the use in the case of implementing nixie tubes, because in that case the anode/cathode roles are swapped.
+
+\begin{groupdesc}
+    \circuitdesc*{matube}{Multi-anode tube}{}(anode 1/110/0.2, anode 2/60/0.2, anode 3/-30/0.2, cathode/-90/0.2, control/180/0.2 )
+    \circuitdesc*{matube, nixieanode, anodedot, nogrid}{Multi-anode tube used for nixie tubes}{}(nixie k1/110/0.2, nixie k2/60/0.2, nixie k3/-30/0.2, nixie a/-90/0.2)
+\end{groupdesc}
+
+Basically all the parameters available for triodes are available. The main difference is that the \texttt{anode width} parameter define the length of \emph{all} the anodes; those tubes are normally used with a \texttt{width} parameter bigger than \texttt{height}, to have an elongated device.
+
+The additional parameters/flags available only for \texttt{matube}s are the following.
+
+\begin{tabular}{l | l | l}
+  Key/Flag & Default value & Description\\
+  \hline
+  \texttt{anodes} & 3 & number of anodes \\
+  \texttt{anodedot} & false & substitute anodes bar for dots \\
+  \texttt{nixieanode} & false & substitute the cathode for the nixie-style anode \\
+  \texttt{nogrid} & false & suppresses the drawing of the grid \\
+\end{tabular}
+
+In the next example, we define a 10-anodes VFD tube:
+
+\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\tikzset{vfd 10/.style={matube, filament, nocathode,
+        circuitikz/tubes/.cd,
+        width=3.6, height=1, anodes=10, anode width=0.6,
+        cathode width=0.1,
+}}
+\begin{circuitikz}[european]
+   \draw (0,0) node[vfd 10](A){};
+   \foreach \i in {1,...,10} \path (A.anode \i)
+        node[red, ocirc]{} node[above]{\tiny \i};
+\end{circuitikz}
+\end{LTXexample}
+
+And a 10-cathodes nixie tube:
+
+
+\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\tikzset{nixie/.style={matube, nogrid, nixieanode,
+        anodedot, circuitikz/tubes/.cd, cathode width=0.6,
+        width=3.6, height=1, anodes=10, anode width=0.6,
+}}
+\begin{circuitikz}[european]
+\draw (0,0) node[nixie](A){};
+\foreach \i in {1,...,10} \path (A.nixie k\i)
+    node[red, ocirc]{} node[above]{\tiny \i};
+    \path (A.nixie a) node[red, ocirc]{};
+\end{circuitikz}
+\end{LTXexample}
+
 \subsubsection{Other tubes-like components}
 
 The \texttt{magnetron} and \texttt{dynode} shapes will also scale with \texttt{tubes/scale}.
@@ -5831,10 +5928,10 @@
 These are all of the to-style type:
 
 \begin{groupdesc}
-    \circuitdescbip[cspst]{switch}{Switch}{spst}
+    \circuitdescbip[cspst]{switch}{Switch}{spst}(left/135/0.1, right/45/0.1, mid/90/0.3)
     \circuitdescbip[cspst]{closing switch}{Closing switch}{cspst}
     \circuitdescbip[ospst]{opening switch}{Opening switch}{ospst}
-    \circuitdescbip[nos]{normal open switch}{Normally open switch}{nos}
+    \circuitdescbip[nos]{normal open switch}{Normally open switch}{nos}(left/135/0.1, right/45/0.1, mid/90/0.3)
     \circuitdescbip[ncs]{normal closed switch}{Normally closed switch}{ncs}
     \circuitdescbip[oncs]{opening normal closed switch}{Opening normally closed switch}{oncs}
     \circuitdescbip[cncs]{closing normal closed switch}{Closing normally closed switch}{cncs}
@@ -5841,18 +5938,18 @@
     \circuitdescbip[onos]{opening normal open switch}{Opening normally open switch}{onos}
     \circuitdescbip[cnos]{closing normal open switch}{Closing normally open switch\footnotemark}{cnos}
     \footnotetext{These last four were contributed by \href{https://tex.stackexchange.com/questions/693446/new-switch-components-for-circuitikz}{Jakob «DraUX»}}
-    \circuitdescbip[pushbutton]{push button}{Normally open push button}{normally open push button, nopb}(tip/0/0.2)
-    \circuitdescbip[ncpushbutton]{normally closed push button}{Normally closed push button}{ncpb}(tip/0/0.2)
-    \circuitdescbip[pushbuttonc]{normally open push button closed}{Normally open push button (in closed position)}{nopbc}(tip/0/0.2)
-    \circuitdescbip[ncpushbuttono]{normally closed push button open}{Normally closed push button (in open position)}{ncpbo}(tip/0/0.2)
-    \circuitdescbip[toggleswitch]{toggle switch}{Toggle switch}{}
-    \circuitdescbip*{reed}{Reed switch}{}
+    \circuitdescbip[pushbutton]{push button}{Normally open push button}{normally open push button, nopb}(tip/0/0.2, mid/-90/0.2)
+    \circuitdescbip[ncpushbutton]{normally closed push button}{Normally closed push button}{ncpb}(tip/0/0.2, mid/-90/0.2)
+    \circuitdescbip[pushbuttonc]{normally open push button closed}{Normally open push button (in closed position)}{nopbc}(tip/0/0.2, mid/-90/0.2)
+    \circuitdescbip[ncpushbuttono]{normally closed push button open}{Normally closed push button (in open position)}{ncpbo}(tip/0/0.2, mid/-90/0.2)
+    \circuitdescbip[toggleswitch]{toggle switch}{Toggle switch}{}(out 1/0/0.2, out 2/0/0.2, in/135/0.1, mid/-90/0.2)
+    \circuitdescbip*{reed}{Reed switch}{}(left/135/0.1, right/45/0.1, mid/90/0.3)
 \end{groupdesc}
 
 while this is a node-style component:
 
 \begin{groupdesc}
-        \circuitdesc{spdt}{spdt}{}( in/180/0.2, out 1/0/0.2, out 2/0/0.2 )
+        \circuitdesc{spdt}{spdt}{}(in/180/0.2, out 1/0/0.2, out 2/0/0.2, mid/90/0.2)
 \end{groupdesc}
 
 \begin{LTXexample}[varwidth=true]
@@ -9610,6 +9707,7 @@
 
 Before 1.5.0, \Circuitikz{} used black as the default color. Now it tries to follow the current color, as \TikZ{} does normally; but notice that there is a difference with the fill strategy:
 
+
 \begin{LTXexample}[pos=t]
 \color{red}
 Red text
@@ -9639,6 +9737,8 @@
 
 Nevertheless, if you really need to do strange things with colors you can read on; you can do almost everything but there are several glitches to take into account.
 
+Moreover, in some cases, also the engine you are using (as \texttt{pdflatex}, \texttt{xelatex}, and so on) can impact corner cases (or even not so corner, like in \href{https://tex.stackexchange.com/q/709273/38080}{american-style voltage source signs}).
+
 \subsection{Shape colors}
 
 The color of the components is stored in the key \verb!\circuitikzbasekey/color!. Circui\TikZ\ tries to follow the color set in \TikZ, although sometimes it fails. The following circuit will fail to draw the circuit in red if the patching of the inner commands of \TikZ{} fails, like for example in \ConTeXt{}.

Modified: trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex	2024-05-05 19:41:50 UTC (rev 71178)
@@ -16,8 +16,8 @@
 \startmodule[circuitikz]
 \usemodule[tikz]
 
-\def\pgfcircversion{1.6.7}
-\def\pgfcircversiondate{2024/02/09}
+\def\pgfcircversion{1.6.8}
+\def\pgfcircversiondate{2024/05/05}
 \writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
 
 

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex	2024-05-05 19:41:50 UTC (rev 71178)
@@ -282,6 +282,26 @@
     \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
     \pgfusepath{draw}
 }
+%
+% generic slashed, suggested by Jana on TeX.stackexchange.com
+% https://tex.stackexchange.com/questions/711702/european-relay-with-circuitikz
+% inherit "generic" properties
+%
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{sgeneric}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+    \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+    \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+    \pgf at circ@draworfill
+    % slash it
+    \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+    \pgfusepath{draw}
+}
 %% Generic empty tunable
 \pgfcircdeclarebipolescaled{resistors}
 {
@@ -805,6 +825,7 @@
 \pgfcirc at activate@bipole at simple{l}{ageneric}
 \pgfcirc at activate@bipole at simple{l}{tgeneric}
 \pgfcirc at activate@bipole at simple{l}{xgeneric}
+\pgfcirc at activate@bipole at simple{l}{sgeneric}
 \pgfcirc at activate@bipole at simple{l}{fullgeneric}
 \pgfcirc at activate@bipole at simple{l}{tfullgeneric}
 \pgfcirc at activate@bipole at simple{l}{short}
@@ -4809,12 +4830,22 @@
     \pgf at circ@subset at color@dash{switch arrows}
     \pgfcirc at set@arrows{switch}{}{latexslim}
     }
+\def\pgf at circ@savedanchor at trad@midlever#1#2{% #1 -> name #2 -> relative height
+    \savedanchor\midlever{% this is the full height of the "handle" of switch
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at y=\ctikzvalof{bipoles/#1/height}\pgf at circ@scaled at Rlen
+        \pgf at x=0pt\pgf at y=0.5\pgf at y
+    }
+    \anchor{mid}{\midlever\pgf at y=#2\pgf at y}
+}
 %%>>>
 
 %% Shapes Node for bipoles switches and similar things%<<<
 %% (Closing) SPST
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+    \pgf at circ@savedanchor at trad@midlever{spst}{0.6}
+}
 {\ctikzvalof{bipoles/spst/depth}}
 {cspst}
 {\ctikzvalof{bipoles/spst/height}}
@@ -4836,7 +4867,9 @@
 
 %% Opening SPST
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+    \pgf at circ@savedanchor at trad@midlever{spst}{0.6}
+}
 {\ctikzvalof{bipoles/spst/depth}}
 {ospst}
 {\ctikzvalof{bipoles/spst/height}}
@@ -4858,7 +4891,9 @@
 
 %% Normal open Switch
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{nos}{0.5}
+}
 {\ctikzvalof{bipoles/nos/depth}}
 {nos}
 {\ctikzvalof{bipoles/nos/height}}
@@ -4873,7 +4908,9 @@
 
 %% Normal closed Switch
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{ncs}{0.5}
+}
 {\ctikzvalof{bipoles/ncs/depth}}
 {ncs}
 {\ctikzvalof{bipoles/ncs/height}}
@@ -4892,7 +4929,9 @@
 
 % Opening normal closed Switch
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{ncs}{0.5}
+}
 {\ctikzvalof{bipoles/ncs/depth}}
 {oncs}
 {\ctikzvalof{bipoles/ncs/height}}
@@ -4920,7 +4959,9 @@
 
 %% Closing normal closed Switch
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{ncs}{0.5}
+}
 {\ctikzvalof{bipoles/ncs/depth}}
 {cncs}
 {\ctikzvalof{bipoles/ncs/height}}
@@ -4948,7 +4989,9 @@
 
 %% Opening normal open Switch
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{ncs}{0.5}
+}
 {\ctikzvalof{bipoles/ncs/depth}}
 {onos}
 {\ctikzvalof{bipoles/ncs/height}}
@@ -4976,7 +5019,9 @@
 
 %% Closing normal open Switch
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{ncs}{0.5}
+}
 {\ctikzvalof{bipoles/ncs/depth}}
 {cnos}
 {\ctikzvalof{bipoles/ncs/height}}
@@ -5006,6 +5051,8 @@
 \pgfcircdeclarebipolescaled{switches}
 {
     \anchor{tip}{\northeast\pgf at x=0pt\relax}
+    % we can use the generic here, the "bar" is related to bipoles/*/height
+    \pgf at circ@savedanchor at trad@midlever{pushbutton}{0.5}
 }
 {\ctikzvalof{bipoles/pushbutton/height 2}}
 {pushbutton}
@@ -5029,6 +5076,11 @@
 \pgfcircdeclarebipolescaled{switches}
 {
     \anchor{tip}{\northeast\pgf at x=0pt\relax}
+    \savedanchor{\nodeheight}{
+        \pgf at x=0pt\pgf at y=\ctikzvalof{nodes width}\pgf at circ@Rlen
+    }
+    \anchor{mid}{\nodeheight\pgf at y=-\pgf at y}
+    % \pgf at circ@savedanchor at trad@midlever{pushbutton}{0.5}
 }
 {\ctikzvalof{bipoles/pushbutton/height 2}}
 {ncpushbutton}
@@ -5054,11 +5106,15 @@
 %% https://github.com/circuitikz/circuitikz/issues/128#issuecomment-731771299
 \pgfcircdeclarebipolescaled{switches}
 {
+    \savedanchor{\nodeheight}{
+        \pgf at x=0pt\pgf at y=\ctikzvalof{nodes width}\pgf at circ@Rlen
+    }
     \anchor{tip}{
-        \pgf at circ@res at temp=\ctikzvalof{nodes width}\pgf at circ@Rlen
+        \nodeheight\pgf at circ@res at temp=\pgf at y
         \northeast\divide\pgf at y by 2\advance\pgf at y by \pgf at circ@res at temp
         \pgf at x=0pt\relax
     }
+    \anchor{mid}{\nodeheight}
 }
 {\ctikzvalof{bipoles/pushbutton/height 2}}
 {pushbuttonc}
@@ -5082,11 +5138,15 @@
 %% Normally closed Push Button now open
 \pgfcircdeclarebipolescaled{switches}
 {
+    \savedanchor{\nodeheight}{
+        \pgf at x=0pt\pgf at y=\ctikzvalof{nodes width}\pgf at circ@Rlen
+    }
     \anchor{tip}{
-        \pgf at circ@res at temp=\ctikzvalof{nodes width}\pgf at circ@Rlen
+        \nodeheight\pgf at circ@res at temp=\pgf at y
         \northeast\divide\pgf at y by 2\advance\pgf at y by \pgf at circ@res at temp
         \pgf at x=0pt\relax
     }
+    \anchor{mid}{\northeast\pgf at x=0pt\pgf at y=-0.5\pgf at y}
 }
 {\ctikzvalof{bipoles/pushbutton/height 2}}
 {ncpushbuttono}
@@ -5110,7 +5170,9 @@
 }
 %%% reed switches
 \pgfcircdeclarebipolescaled{switches}
-{}
+{
+        \pgf at circ@savedanchor at trad@midlever{nos}{0.5}
+}
 {\ctikzvalof{bipoles/reed/depth}}
 {reed}
 {\ctikzvalof{bipoles/reed/height}}
@@ -5237,14 +5299,10 @@
     }
 
 \pgfcircdeclarebipole{
-    \anchor{out 1}{
-        \northeast
-        \pgf at y=0cm
-    }
-    \anchor{out 2}{
-        \northeast
-        \pgf at y=.8\pgf at y
-    }
+    \anchor{out 1}{\northeast\pgf at y=0pt\relax}
+    \anchor{out 2}{\northeast\pgf at y=.8\pgf at y}
+    \anchor{in}{\northeast\pgf at y=0pt\pgf at x=-\pgf at x}
+    \anchor{mid}{\northeast\pgf at x=0.2\pgf at x\pgf at y=0.25\pgf at y}
 }
 {\ctikzvalof{tripoles/toggleswitch/height 2}}
 {toggleswitch}
@@ -5304,64 +5362,15 @@
         \pgf at x=-\ctikzvalof{tripoles/spdt/width}\pgf at circ@scaled at Rlen
         \pgf at x=.5\pgf at x
     }
-    \anchor{left}{%
-        \northwest
-        \pgf at y=0pt
-    }
-    \anchor{in}{
-        \northwest
-        \pgf at y=0pt
-    }
-    \anchor{out 1}{
-        \northwest
-        \pgf at x=-\pgf at x
-    }
-    \anchor{out 2}{
-        \northwest
-        \pgf at x=-\pgf at x
-        \pgf at y=-\pgf at y
-    }
-    \anchor{center}{
-        \pgf at y=0pt
-        \pgf at x=0pt
-    }
-    \anchor{east}{
-        \northwest
-        \pgf at y=0pt
-        \pgf at x=-\pgf at x
-    }
-    \anchor{west}{
-        \northwest
-        \pgf at y=0pt
-    }
-    \anchor{south}{
-        \northwest
-        \pgf at x=0pt
-        \pgf at y=-\pgf at y
-    }
-    \anchor{north}{
-        \northwest
-        \pgf at x=0pt
-    }
-    \anchor{south west}{
-        \northwest
-        \pgf at y=-\pgf at y
-    }
-    \anchor{north east}{
-        \northwest
-        \pgf at x=-\pgf at x
-    }
-    \anchor{north west}{
-        \northwest
-    }
-    \anchor{south east}{
-        \northwest
-        \pgf at x=-\pgf at x
-        \pgf at y=-\pgf at y
-    }
+    \pgfcirc at northwest@symmetric at geoanchors
+    \anchor{in}{\northwest\pgf at y=0pt}
+    \anchor{out 1}{\northwest\pgf at x=-\pgf at x}
+    % this is "by eye", it'll be wrong with non-standard ocirc
+    \anchor{mid}{\northwest\pgf at x=0pt\pgf at y=0.37\pgf at y}
+    \anchor{out 2}{\northwest\pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+    \anchor{center}{\pgf at y=0pt\pgf at x=0pt}
     \pgf at circ@draw at component{
         \pgf at circ@setcolor
-
         \northwest
         \pgf at circ@res at up = \pgf at y
         \pgf at circ@res at down = -\pgf at y
@@ -5368,18 +5377,15 @@
         \pgf at circ@res at right = -\pgf at x
         \pgf at circ@res at left = \pgf at x
         \pgf at circ@res at other = \ctikzvalof{tripoles/spdt/margin}\pgf at circ@res at left
-
-
+        %
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
         \pgfpathlineto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
-
+        %
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
         \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{0pt}}
-
         \pgfusepath{draw}
-
         \pgfscope
             \pgftransformshift{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
             \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
@@ -5392,7 +5398,6 @@
             \pgftransformshift{\pgfpoint{\pgf at circ@res at other}{0pt}}
             \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
         \endpgfscope
-
         \pgfscope
             \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
             \pgfpathlineto{

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex	2024-05-05 19:41:50 UTC (rev 71178)
@@ -8547,11 +8547,34 @@
     \fi
 }
 
-%% The diode (tube), triode, tetrode and pentode only differ in the
-%% number of grids. So we construct a generic declare function in
-%% which we can put code for the grid anchors and grid drawing code
-%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
-\long\def\pgfcircdeclaretube#1#2#3{%
+\long\def\pgfcirctubedrawanodestd{% Standard anode code (one anode)
+    % Anode (or plate)
+    \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}} % north
+    \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
+    \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf at circ@res at right}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
+    \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf at circ@res at right}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
+}
+\long\def\pgfcirctubedrawcathodestd{% Standard cathode code (one cathode)
+    % Cathode
+    \ifpgf at circuit@tubes at nocathode
+        \pgf at circuit@tubes at nocathodefalse
+    \else
+        \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}{\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}}
+        \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
+        \ifpgf at circuit@tubes at fullcathode
+            \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\pgf at circ@res at up}}
+            \pgf at circuit@tubes at fullcathodefalse
+        \else
+            \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up-\ctikzvalof{tubes/cathode right extend}\pgf at circ@res at up}}
+        \fi
+    \fi
+}
+
+%% generic macro to create a tube. Most of them will use the standard macro for
+%% anode and cathode (see above)
+\long\def\pgfcircdeclaretubegeneric#1#2#3#4#5#6{% name, anchors, grid, anode, cathode variable anchors
     \pgfdeclareshape{#1}{
         \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
         \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf at x}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}}
@@ -8693,33 +8716,24 @@
                 \fi
 
                 % Anode (or plate)
-                \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}} % north
-                \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
-                \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf at circ@res at right}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
-                \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf at circ@res at right}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
-
+                #4
                 % Cathode
-                \ifpgf at circuit@tubes at nocathode
-                    \pgf at circuit@tubes at nocathodefalse
-                \else
-                    \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}{\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}}
-                    \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\pgf at circ@res at up}}
-                    \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
-                    \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
-                    \ifpgf at circuit@tubes at fullcathode
-                        \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\pgf at circ@res at up}}
-                        \pgf at circuit@tubes at fullcathodefalse
-                    \else
-                        \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up-\ctikzvalof{tubes/cathode right extend}\pgf at circ@res at up}}
-                    \fi
-                \fi
-
+                #5
                 % Draw the background
                 \pgfusepath{draw}
         }
+        #6
     }
 }
 
+%% The diode (tube), triode, tetrode and pentode only differ in the
+%% number of grids. So we construct a generic declare function in
+%% which we can put code for the grid anchors and grid drawing code
+%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
+\long\def\pgfcircdeclaretube#1#2#3{% name, anchors, grid
+    \pgfcircdeclaretubegeneric{#1}{#2}{#3}{\pgfcirctubedrawanodestd}{\pgfcirctubedrawcathodestd}{}
+}
+
 \pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
 
 \pgfcircdeclaretube{triode}
@@ -8951,7 +8965,143 @@
 	\pgfpathlineto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdima-2*\ctikzvalof{tubes/grid separation}\pgf at circ@res at up}}
 	\pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}}
 
-}% %>>>
+}%
+%
+% multi-anode tube, added by Romano for version 1.6.8, suggested by @bogger33 on GitHub
+% see https://github.com/circuitikz/circuitikz/issues/785
+%
+\ctikzset{tubes/anodes/.initial=3}  % number of anodes. Ignored in most tubes.
+\newif\ifpgf at circuit@tubes at anodedot\pgf at circuit@tubes at anodedotfalse
+\pgfkeys{/tikz/anodedot/.add code={}{\pgf at circuit@tubes at anodedottrue}}
+\ctikzset{tubes/anodedot/.add code={}{\pgf at circuit@tubes at anodedottrue}}
+\newif\ifpgf at circuit@tubes at nogrid\pgf at circuit@tubes at nogridfalse
+\pgfkeys{/tikz/nogrid/.add code={}{\pgf at circuit@tubes at nogridtrue}}
+\ctikzset{tubes/nogrid/.add code={}{\pgf at circuit@tubes at nogridtrue}}
+\newif\ifpgf at circuit@tubes at nixieanode\pgf at circuit@tubes at nixieanodefalse
+\pgfkeys{/tikz/nixieanode/.add code={}{\pgf at circuit@tubes at nixieanodetrue}}
+\ctikzset{tubes/nixieanode/.add code={}{\pgf at circuit@tubes at nixieanodetrue}}
+\long\def\pgfcirctubedraw at multi@anode{% Separate to override in matubes
+    % Anodes (or plates)
+    % Use saved len/anchors to find the first drawn position.
+    \pgf at circ@res at temp=\anodelen\divide\pgf at circ@res at temp by 2 % half the anode length
+    \firstanodepos\pgf at circ@res at other=\pgf at x
+    \advance\pgf at circ@res at other by \pgf at circ@res at temp
+    \pgf at circ@count at a=0
+    \loop
+        \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}} % north
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
+        \ifpgf at circuit@tubes at anodedot
+            \pgfpathcircle{\pgfpoint{\pgf at circ@res at other}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up-0.5*\circlelen}}{\circlelen}
+        \else
+            % this is the horizontal line of the anode
+            \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at temp}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
+            \pgfpathlineto{\pgfpoint{\pgf at circ@res at other+\pgf at circ@res at temp}{\ctikzvalof{tubes/anode distance}\pgf at circ@res at up}}
+        \fi
+        \advance\pgf at circ@res at other by 4\pgf at circ@res at temp
+        \advance\pgf at circ@count at a by 1
+    \ifnum\pgf at circ@count at a<\Nanodes\relax
+    \repeat
+}
+\long\def\pgfcirctubedraw at cathode@or at nixie{%
+    \ifpgf at circuit@tubes at nixieanode
+        \pgfpathmoveto{\pgfpoint{0pt}{-\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{0pt}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
+        \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right}{-\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up}}
+    \else
+        \pgfcirctubedrawcathodestd
+    \fi
+}
+\pgfcircdeclaretubegeneric{matube}
+{% anchors
+    \savedmacro{\Nanodes}{\edef\Nanodes{\ctikzvalof{tubes/anodes}}}
+    \savedanchor\firstanodepos{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@scaled at Rlen
+        \pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@scaled at Rlen
+        \pgf at circ@res at right=\ctikzvalof{tubes/anode width}\pgf at circ@res at right
+        % x and y are one half
+        \pgf at y=\pgf at circ@res at up
+        \pgf at y=.5\pgf at y
+        \pgf at x=-\pgf at circ@res at right
+        \pgf at x=.5\pgf at x
+    }
+    \saveddimen\anodelen{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@scaled at Rlen % full width, left to right
+        % the length of one of the N anodes is the full width divided by 2*N+1
+        \pgfmathsetlength\pgf at x{\ctikzvalof{tubes/anode width}*\pgf at circ@res at right/(2*\Nanodes-1)}
+    }
+    \saveddimen\circlelen{%
+        \pgf at x=\ctikzvalof{nodes width}\pgf at circ@Rlen
+    }
+    \anchor{grid} {% should not be used
+        \northwest
+        \pgf at y=\ctikzvalof{tubes/grid shift}\pgf at y
+    }
+    \anchor{control} {%
+        \northwest
+        \pgf at y=\ctikzvalof{tubes/grid shift}\pgf at y
+    }
+    \anchor{nixie a}{%
+        \northwest\pgf at x=0pt\pgf at y=-\pgf at y
+    }
+}
+{% grid
+    \ifpgf at circuit@tubes at nogrid\else
+    % Grid protrusion
+    \pgf at xa=-\ctikzvalof{tubes/tube radius}\pgf at circ@res at right
+    \advance\pgf at xa by -\ctikzvalof{tubes/grid protrusion}\pgf at circ@res at right
+    \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at right}{\ctikzvalof{tubes/grid shift}\pgf at circ@res at up}}
+    \pgfpathlineto{\pgfpoint{\pgf at xa}{\ctikzvalof{tubes/grid shift}\pgf at circ@res at up}}
+    % Grid dashes: calculations
+    \pgf at xb=2\pgf at circ@res at right
+    \pgf at circ@res at step=\ctikzvalof{tubes/tube radius}\pgf at xb
+    \pgf at circ@count at a=\ctikzvalof{tubes/grid dashes}  % dashes*2+1
+    \multiply\pgf at circ@count at a by 2\relax
+    \advance\pgf at circ@count at a by 1\relax
+    \advance\pgf at circ@res at step by -\pgf at xa
+    \divide\pgf at circ@res at step by \pgf at circ@count at a
+    % Grid dashes: draw
+    \pgf at circ@res at temp=\pgf at xa
+    \pgf at circ@count at a=\ctikzvalof{tubes/grid dashes}
+    \loop
+    \advance\pgf at circ@res at temp by\pgf at circ@res at step
+    \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\ctikzvalof{tubes/grid shift}\pgf at circ@res at up}}
+    \advance\pgf at circ@res at temp by\pgf at circ@res at step
+    \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp}{\ctikzvalof{tubes/grid shift}\pgf at circ@res at up}}
+    \advance\pgf at circ@count at a by-1
+    \ifnum\pgf at circ@count at a>0\relax
+    \repeat
+    \fi
+}
+{\pgfcirctubedraw at multi@anode}% anodes
+{\pgfcirctubedraw at cathode@or at nixie}% cathode
+{% extra dynamics anchors
+    \pgfutil at g@addto at macro\pgf at sh@s at matube{%
+        % Start with the maximum pin number and go backwards.
+        \pgf at circ@count at a=\Nanodes\relax
+        \pgfmathloop%
+        \ifnum\pgf at circ@count at a>0
+        \expandafter\xdef\csname pgf at anchor@matube at anode\space\the\pgf at circ@count at a\endcsname{%
+            \noexpand\pgf at circ@ma at anode@anchor{\the\pgf at circ@count at a}%
+        }
+        \expandafter\xdef\csname pgf at anchor@matube at nixie\space k\the\pgf at circ@count at a\endcsname{%
+            \noexpand\pgf at circ@ma at anode@anchor{\the\pgf at circ@count at a}%
+        }
+        \advance\pgf at circ@count at a by -1\relax%
+        \repeatpgfmathloop%
+    }%
+}
+\def\pgf at circ@ma at anode@anchor#1{
+    \firstanodepos
+    \pgf at circ@res at temp=\pgf at x
+    \pgfmathsetlength\pgf at x{\pgf at circ@res at temp + (0.5 + 2*(#1 -1))*\anodelen}
+}
 
+
+
+%>>>
+
 \endinput
 % vim: set fdm=marker fmr=%<<<,%>>>:

Modified: trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty	2024-05-05 10:02:00 UTC (rev 71177)
+++ trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty	2024-05-05 19:41:50 UTC (rev 71178)
@@ -16,8 +16,8 @@
 \providecommand\DeclareRelease[3]{}
 \providecommand\DeclareCurrentRelease[2]{}
 
-\def\pgfcircversion{1.6.7}
-\def\pgfcircversiondate{2024/02/09}
+\def\pgfcircversion{1.6.8}
+\def\pgfcircversiondate{2024/05/05}
 
 \DeclareRelease{0.4}{2012/12/20}{circuitikz-0.4-body.tex}
 \DeclareRelease{v0.4}{2012/12/20}{circuitikz-0.4-body.tex}



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