texlive[51634] Master/texmfdist: circuitikz (13jul19)
commits+karl at tug.org
commits+karl at tug.org
Sat Jul 13 23:39:36 CEST 2019
Revision: 51634
http://tug.org/svn/texlive?view=revision&revision=51634
Author: karl
Date: 20190713 23:39:36 +0200 (Sat, 13 Jul 2019)
Log Message:

circuitikz (13jul19)
Modified Paths:

trunk/Master/texmfdist/doc/context/third/circuitikz/circuitikzcontext.pdf
trunk/Master/texmfdist/doc/generic/circuitikz/CHANGELOG.md
trunk/Master/texmfdist/doc/latex/circuitikz/changelog.tex
trunk/Master/texmfdist/doc/latex/circuitikz/circuitikzmanual.pdf
trunk/Master/texmfdist/doc/latex/circuitikz/circuitikzmanual.tex
trunk/Master/texmfdist/tex/context/third/circuitikz/tcircuitikz.tex
trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirc.defines.tex
trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmonopoles.tex
trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmultipoles.tex
trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircquadpoles.tex
trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirctripoles.tex
trunk/Master/texmfdist/tex/latex/circuitikz/circuitikz.sty
Modified: trunk/Master/texmfdist/doc/context/third/circuitikz/circuitikzcontext.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmfdist/doc/generic/circuitikz/CHANGELOG.md
===================================================================
 trunk/Master/texmfdist/doc/generic/circuitikz/CHANGELOG.md 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/doc/generic/circuitikz/CHANGELOG.md 20190713 21:39:36 UTC (rev 51634)
@@ 1,6 +1,11 @@
<! 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 0.9.3 (20190713)
+  Added the option to have "dotless" PMOS (to use with arrowmos option)
+  Fixed a (puzzling) problem with coupler2
+  Fixed a compatibility problem with newer PGF (>3.0.1a)
+
* Version 0.9.2 (20190621)
 (hopefully) fixed ConTeXt compatibility. Most new functionality is not tested; testers and developers for the ConTeXt side are needed.
 Added old ConTeXt version for 0.8.3
Modified: trunk/Master/texmfdist/doc/latex/circuitikz/changelog.tex
===================================================================
 trunk/Master/texmfdist/doc/latex/circuitikz/changelog.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/doc/latex/circuitikz/changelog.tex 20190713 21:39:36 UTC (rev 51634)
@@ 6,6 +6,19 @@
\begin{itemize}
\tightlist
\item
+ Version 0.9.3 (20190713)
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Added the option to have ``dotless'' PMOS (to use with arrowmos
+ option)
+ \item
+ Fixed a (puzzling) problem with coupler2
+ \item
+ Fixed a compatibility problem with newer PGF (\textgreater{}3.0.1a)
+ \end{itemize}
+\item
Version 0.9.2 (20190621)
\begin{itemize}
Modified: trunk/Master/texmfdist/doc/latex/circuitikz/circuitikzmanual.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmfdist/doc/latex/circuitikz/circuitikzmanual.tex
===================================================================
 trunk/Master/texmfdist/doc/latex/circuitikz/circuitikzmanual.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/doc/latex/circuitikz/circuitikzmanual.tex 20190713 21:39:36 UTC (rev 51634)
@@ 320,10 +320,10 @@
\begin{itemize}
\item \texttt{oldvoltagedirection}: Use old way of voltage direction having a difference between european and american direction, with wrong default labelling for batteries;
\item \texttt{nooldvoltagedirection}: The standard from 0.5 onward, utilize the (German?) standard of voltage arrows in the direction of electric fields (without fixing batteries);
 \item \texttt{RPvoltages} (meaning Rising Potential voltages): the arrow is in direction of rising potential, like in \texttt{oldvoltagedirections}, but batteries and current sources are fixed to follow the passive/active standard;
 \item \texttt{EFvoltages} (meaning Electric Field voltages): the arrow is in direction of the electric field, like in \texttt{nooldvoltagedirections}, but batteries are fixed;
+ \item \texttt{RPvoltages} (meaning Rising Potential voltages): the arrow is in direction of rising potential, like in \texttt{oldvoltagedirection}, but batteries and current sources are fixed to follow the passive/active standard;
+ \item \texttt{EFvoltages} (meaning Electric Field voltages): the arrow is in direction of the electric field, like in \texttt{nooldvoltagedirection}, but batteries are fixed;
\end{itemize}
 If none of these option are given, the package will default to \texttt{nooldvoltagedirections}, but will give a warning. The behavior is also selectable circuit by circuit with the \texttt{voltage dir} style.
+ If none of these option are given, the package will default to \texttt{nooldvoltagedirection}, but will give a warning. The behavior is also selectable circuit by circuit with the \texttt{voltage dir} style.
\item \texttt{betterproportions}\footnote{May change in the future!}: nicer proportions of transistors in comparision to resistors;
\end{itemize}
@@ 1579,17 +1579,17 @@
\subsection{Transistors}
\begin{groupdesc}
 \circuitdesc{nmos}{\scshape nmos}{}( G/180/0.2,D/0/0.2,S/0/0.2 )
 \circuitdesc{pmos}{\scshape pmos}{}
 \circuitdesc{hemt}{\scshape hemt}{}
 \circuitdesc{npn}{\scshape npn}{}( B/180/0.2,C/0/0.2,E/0/0.2 )
 \circuitdesc{pnp}{\scshape pnp}{}
 \circuitdesc{npn,photo}{\scshape npn}{}( nobase/0/0.4 )
 \circuitdesc{pnp,photo}{\scshape pnp}{}
 \circuitdesc{nigbt}{\scshape nigbt}{}
 \circuitdesc{pigbt}{\scshape pigbt}{}
 \circuitdesc{Lnigbt}{\scshape Lnigbt}{}
 \circuitdesc{Lpigbt}{\scshape Lpigbt}{}
+ \circuitdesc{nmos}{nmos}{}( G/180/0.2,D/0/0.2,S/0/0.2 )
+ \circuitdesc{pmos}{pmos}{}
+ \circuitdesc{hemt}{hemt}{}
+ \circuitdesc{npn}{npn}{}( B/180/0.2,C/0/0.2,E/0/0.2 )
+ \circuitdesc{pnp}{pnp}{}
+ \circuitdesc{npn,photo}{npn}{}( nobase/0/0.4 )
+ \circuitdesc{pnp,photo}{pnp}{}
+ \circuitdesc{nigbt}{nigbt}{}
+ \circuitdesc{pigbt}{pigbt}{}
+ \circuitdesc{Lnigbt}{Lnigbt}{}
+ \circuitdesc{Lpigbt}{Lpigbt}{}
\end{groupdesc}
For all transistors a body diode (or freewheeling diode) can automatically be drawn. Just use the global option bodydiode, or for single transistors, the tikzoption bodydiode:
@@ 1614,19 +1614,39 @@
\end{LTXexample}
If the option \texttt{arrowmos} is used (or after the command \verb!\ctikzset{tripoles/mos style/arrows}! is given), this is the output:
\ctikzset{tripoles/mos style/arrows}
\begin{groupdesc}
 \circuitdesc{nmos}{\scshape nmos}{}
 \circuitdesc{pmos}{\scshape pmos}{}
+ \ctikzset{tripoles/mos style/arrows}
+ \circuitdesc{nmos}{nmos}{}
+ \circuitdesc{pmos}{pmos}{}
\end{groupdesc}
\ctikzset{tripoles/mos style/no arrows}
+
+You can go back to the noarrows mos with \texttt{noarrowmos} locally or with
+\texttt{\textbackslash ctikzset\{tripoles/mos style/no arrows\}}.
+
To draw the PMOS circle nonsolid, use the option \texttt{emptycircle} or the command
\\\verb!\ctikzset{tripoles/pmos style/emptycircle}!.
+\\\verb!\ctikzset{tripoles/pmos style/emptycircle}!. To remove the dot completely (only useful if you have \texttt{arrowmos} enabled, otherwise ther ewill be no difference between PMOS and NMOS), you can use the option \texttt{nocircle} or \verb\ctikzset{tripoles/pmos style/nocircle}.
\begin{groupdesc}
 \circuitdesc{pmos,emptycircle}{\scshape pmos}{}
+ \circuitdesc{pmos,emptycircle}{pmos}{}
+ \circuitdesc{pmos,nocircle,arrowmos}{pmos}{}
\end{groupdesc}
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[
+ info/.style={left=1cm, blue, text width=5em, align=right},]
+ \draw (0,1) node{pmos} (2,1) node{nmos};
+ \draw (0,0) node[info]{default} node[pmos]{} (2,0) node[nmos]{};
+ \ctikzset{tripoles/mos style/arrows}
+ \draw (0,2) node[info]{arrows} node[pmos]{} (2,2) node[nmos]{};
+ \ctikzset{tripoles/pmos style/emptycircle}
+ \draw (0,4) node[info]{emptycircle} node[pmos]{} (2,4) node[nmos]{};
+ \ctikzset{tripoles/pmos style/nocircle}
+ \draw (0,6) node[info]{nocircle} node[pmos]{} (2,6) node[nmos]{};
+ \ctikzset{tripoles/mos style/no arrows}
+ \draw (0,8) node[info, red]{no circle, no arrows, DON'T do it}
+ node[pmos]{} (2,8) node[nmos]{};
+\end{circuitikz}\end{LTXexample}
+
If you prefer a different position of the arrows in transistors and FETs, you can adjust them like this (it works for the other BJTbased transistors, too):
\begin{LTXexample}[varwidth=true]
\begin{circuitikz}
@@ 1647,26 +1667,26 @@
\begin{groupdesc}
 \circuitdesc{nfet}{\scshape nfet}{}
 \circuitdesc{nigfete}{\scshape nigfete}{}
 \circuitdesc{nigfete,solderdot}{\scshape nigfete}{}
 \circuitdesc{nigfetebulk}{\scshape nigfetebulk}{}
 \circuitdesc{nigfetd}{\scshape nigfetd}{}
 \circuitdesc{pfet}{\scshape pfet}{}
 \circuitdesc{pigfete}{\scshape pigfete}{}
 \circuitdesc{pigfetebulk}{\scshape pigfetebulk}{}
 \circuitdesc{pigfetd}{\scshape pigfetd}{}
+ \circuitdesc{nfet}{nfet}{}
+ \circuitdesc{nigfete}{nigfete}{}
+ \circuitdesc{nigfete,solderdot}{nigfete}{}
+ \circuitdesc{nigfetebulk}{nigfetebulk}{}
+ \circuitdesc{nigfetd}{nigfetd}{}
+ \circuitdesc{pfet}{pfet}{}
+ \circuitdesc{pigfete}{pigfete}{}
+ \circuitdesc{pigfetebulk}{pigfetebulk}{}
+ \circuitdesc{pigfetd}{pigfetd}{}
\end{groupdesc}
\textsc{njfet} and \textsc{pjfet} have been incorporated based on code provided by Danilo Piazzalunga:
\begin{groupdesc}
 \circuitdesc{njfet}{\scshape njfet}{}
 \circuitdesc{pjfet}{\scshape pjfet}{}
+ \circuitdesc{njfet}{njfet}{}
+ \circuitdesc{pjfet}{pjfet}{}
\end{groupdesc}
\textsc{isfet}
\begin{groupdesc}
 \circuitdesc{isfet}{\scshape isfet}{}
+ \circuitdesc{isfet}{isfet}{}
\end{groupdesc}
\subsubsection{Transistors anchors}
@@ 1785,11 +1805,17 @@
\begin{groupdesc}
\circuitdesc*{diodetube}{Tube Diode}{}(anode/90/0.2, cathode/90/0.2 )
 \circuitdesc*{triode}{Triode}{}(anode/90/0.2, cathode/90/0.2, grid/180/0.2 )
 \circuitdesc*{tetrode}{Tetrode}{}(anode/90/0.2, cathode/90/0.2, grid/190/0.2,screen/170/0.2 )
 \circuitdesc*{pentode}{Pentode}{}(anode/90/0.2, cathode/90/0.2, grid/190/0.2,screen/180/0.2,suppressor/170/0.2 )
+ \circuitdesc*{triode}{Triode}{}(anode/90/0.2, cathode/90/0.2, control/180/0.2 )
+ \circuitdesc*{tetrode}{Tetrode}{}(anode/90/0.2, cathode/90/0.2, control/190/0.2,screen/170/0.2 )
+ \circuitdesc*{pentode}{Pentode}{}(anode/90/0.2, cathode/90/0.2, control/190/0.2,screen/180/0.2,suppressor/170/0.2 )
\end{groupdesc}
+Some pentodes have the suppressor grid internally connected to the control grid, which saves a pin on the tube's housing.
+
+\begin{groupdesc}
+ \circuitdesc*{pentode suppressor to cathode}{Pentode with suppressor grid connected to cathode}{}( anode/90/0.2, cathode/90/0.2, control/190/0.2,screen/180/0.2 )
+\end{groupdesc}
+
Note that the \verbdiodetube is used as component name to avoid clashes with the semiconductor diode.
Normally, the filament is not drawn. If you want a filament, put the \verbfilament option in the node description:
@@ 1853,7 +1879,7 @@
to[C=$C_i$] ++(2,0) node (Rg) {}
to[R=$R_g$] (Rg  start)
(Rg) to[short,*] ++(1,0)
 node[triode,anchor=grid] (Tri) {} ++(2,0)
+ node[triode,anchor=control] (Tri) {} ++(2,0)
(Tri.cathode) to[R=$R_c$,*] (Tri.cathode  start)
(Tri.anode) to [R=$R_a$] ++(0,2)
to [short] ++(3.5,0) node(Vatop) {}
@@ 1874,7 +1900,7 @@
to[C=$C_i$] ++(2,0) node (Rg) {}
to[R=$R_g$] (Rg  start)
(Rg) to[short,*] ++(1,0)
 node[triode,anchor=grid] (Tri) {} ++(2,0)
+ node[triode,anchor=control] (Tri) {} ++(2,0)
(Tri.cathode) to[R=$R_c$,*] (Tri.cathode  start)
(Tri.anode) to [R=$R_a$] ++(0,2)
to [short] ++(3.5,0) node(Vatop) {}
@@ 3286,13 +3312,14 @@
\begin{itemize}
\item \texttt{oldvoltagedirection}, or the key style \texttt{voltage dir=old}: Use old way of voltage direction having a difference between european and american direction, with wrong default labelling for batteries (it was the default before version 0.5);
\item \texttt{nooldvoltagedirection}, or the key style \texttt{voltage dir=noold}: The standard from version 0.5 onward, utilize the (German?) standard of voltage arrows in the direction of electric fields (without fixing batteries);
 \item \texttt{RPvoltages} (meaning Rising Potential voltages), or the key style \texttt{voltage dir=RP}: the arrow is in direction of rising potential, like in \texttt{oldvoltagedirections}, but batteries and current sources are fixed so that they follow the passive/active standard: the default direction of \texttt{v} and \texttt{i} are chosen so that, when both values are positive:
+ \item \texttt{RPvoltages} (meaning Rising Potential voltages), or the key style \texttt{voltage dir=RP}: the arrow is in direction of rising potential, like in \texttt{oldvoltagedirection}, but batteries and current sources are fixed so that they follow the passive/active standard: the default direction of \texttt{v} and \texttt{i} are chosen so that, when both values are positive:
\begin{itemize}
\item in passive component, the element is \emph{dissipating power};
\item in active components (generators), the element is \emph{generating power}.
\end{itemize}
 \item \texttt{EFvoltages} (meaning Electric Field voltages), or the key style \texttt{voltage dir=EF}: the arrow is in direction of the electric field, like in \texttt{nooldvoltagedirections}, but batteries are fixed;
+ \item \texttt{EFvoltages} (meaning Electric Field voltages), or the key style \texttt{voltage dir=EF}: the arrow is in direction of the electric field, like in \texttt{nooldvoltagedirection}, but batteries are fixed;
\end{itemize}
+Notice that the four styles are designed to be used at the environment level: that is, you should use them at the start of your environment as in \verb\begin{circuitikz}[voltage dir=old] ... and not as a key for single components, in which case the behaviour is not guaranteed.
The standard direction of currents, flows and voltages are changed by these options; notice that the default drops in case of passive and active elements is normally different. Take care that in the case of \texttt{noold} and \texttt{EFvoltages} also the currents can switch directions. It is much easier to understand the several behaviors by looking at the following examples, that have been generated by the code:
@@ 3717,7 +3744,7 @@
\tikz \draw (0,0) to[C, i=$\imath$] (2,0);
\end{LTXexample}
\noindent However, you can override the properties \verb!voltage/distance from node!\footnote{That is, how distant from the initial and final points of the path the arrow starts and ends.}, \verb!voltage/bump b!\footnote{Controlling how high the bump of the arrow is  how curved it is.} and \verb!voltage/european label distance!\footnote{Controlling how distant from the bipole the voltage label will be.} on a percomponent basis, in order to finetune the voltages:
+\noindent However, you can override the properties \texttt{voltage/distance from node}\footnote{That is, how distant from the initial and final points of the path the arrow starts and ends.}, \texttt{voltage/bump b}\footnote{Controlling how high the bump of the arrow is  how curved it is.} and \texttt{voltage/european label distance}\footnote{Controlling how distant from the bipole the voltage label will be.} on a percomponent basis, in order to finetune the voltages:
\begin{LTXexample}[varwidth=true]
\tikz \draw (0,0) to[R, v=1<\volt>] (1.5,0)
@@ 3760,7 +3787,7 @@
\end{circuitikz}
\end{LTXexample}
You can define shortcuts for the \texttt{bipole bodes} you use most; for example if you want a shortcut for a bipole with open square node in red in the right side you can:
+You can define shortcuts for the \texttt{bipole nodes} you use most; for example if you want a shortcut for a bipole with open square node in red in the right side you can:
\begin{LTXexample}[varwidth=true,
basicstyle=\small\ttfamily
Modified: trunk/Master/texmfdist/tex/context/third/circuitikz/tcircuitikz.tex
===================================================================
 trunk/Master/texmfdist/tex/context/third/circuitikz/tcircuitikz.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/context/third/circuitikz/tcircuitikz.tex 20190713 21:39:36 UTC (rev 51634)
@@ 1,5 +1,5 @@
\def\pgfcircversion{0.9.2}
\def\pgfcircversiondate{2019/06/21}
+\def\pgfcircversion{0.9.3}
+\def\pgfcircversiondate{2019/07/13}
\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
\usemodule[tikz]
Modified: trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirc.defines.tex
===================================================================
 trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirc.defines.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirc.defines.tex 20190713 21:39:36 UTC (rev 51634)
@@ 1,6 +1,8 @@
+%% Counters
%% Options

+\newcount\pgf at circ@count at a
+\newcount\pgf at circ@count at b
+\newcount\pgf at circ@count at c
%%%%%%%%%%%%
%% Dimensions
@@ 427,6 +429,8 @@
\ctikzset{tripoles/mos style/.is choice}
\ctikzset{tripoles/mos style/no arrows/.code={\pgf at circuit@mos at arrowsfalse}}
\ctikzset{tripoles/mos style/arrows/.code={\pgf at circuit@mos at arrowstrue}}
+\pgfkeys{/tikz/arrowmos/.add code={}{\pgf at circuit@mos at arrowstrue}}
+\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf at circuit@mos at arrowsfalse}}
% Option solderdot for fet
\newif\ifpgf at circuit@fet at solderdot
@@ 468,10 +472,17 @@
% Option draw pmos with empty circle
\newif\ifpgf at circuit@pmos at emptycircle
\newif\ifpgf at circuit@pmos at emptycircle
\pgf at circuit@pmos at emptycirclefalse
\pgfkeys{/tikz/emptycircle/.add code={}{\pgf at circuit@pmos at emptycircletrue}}
\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf at circuit@pmos at emptycircletrue}}
+% Option draw pmos with no circle
+\newif\ifpgf at circuit@pmos at nocircle
+\pgf at circuit@pmos at nocirclefalse
+\pgfkeys{/tikz/nocircle/.add code={}{\pgf at circuit@pmos at nocircletrue}}
+\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf at circuit@pmos at nocircletrue}}
+% back to normal
+\pgfkeys{/tikz/fullcircle/.add code={}{\pgf at circuit@pmos at emptycirclefalse\pgf at circuit@pmos at nocirclefalse}}
+\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf at circuit@pmos at emptycirclefalse\pgf at circuit@pmos at nocirclefalse}}
\newif\ifpgf at circuit@trans at ntype
Modified: trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmonopoles.tex
===================================================================
 trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmonopoles.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmonopoles.tex 20190713 21:39:36 UTC (rev 51634)
@@ 286,11 +286,11 @@
\pgfpathclose
\pgfusepath{clip}
% ...and build the waves as clipped circles
 \c at pgf@counta=8\pgf at circ@res at other=0.5\pgf at circ@res at step
+ \pgf at circ@count at a=8\pgf at circ@res at other=0.5\pgf at circ@res at step
\pgfmathloop%
 \ifnum\c at pgf@counta>2
 \pgfpathcircle{\pgfpoint{0pt}{\pgf at circ@res at step}}{\the\c at pgf@counta*\pgf at circ@res at other}
 \advance\c at pgf@counta1\relax%
+ \ifnum\pgf at circ@count at a>2
+ \pgfpathcircle{\pgfpoint{0pt}{\pgf at circ@res at step}}{\the\pgf at circ@count at a*\pgf at circ@res at other}
+ \advance\pgf at circ@count at a1\relax%
\repeatpgfmathloop
\pgfusepath{draw}
\endpgfscope
Modified: trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmultipoles.tex
===================================================================
 trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmultipoles.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircmultipoles.tex 20190713 21:39:36 UTC (rev 51634)
@@ 13,8 +13,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% counters for pin accounting...
\newcount\pgf at circ@count at c
\newcount\pgf at circ@count at b
\def\pgf at circ@dip at pin@shift{0.5}
\def\pgf at circ@qfp at pin@shift{0.25}
@@ 28,8 +26,8 @@
\pgfdeclareshape{dipchip}{
\savedmacro\numpins{%
 \c at pgf@counta=\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/num pins}%
 \def\numpins{\the\c at pgf@counta}
+ \pgf at circ@count at a=\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/num pins}%
+ \def\numpins{\the\pgf at circ@count at a}
}
\savedanchor\centerpoint{%
\pgf at x=.5\wd\pgfnodeparttextbox%
@@ 94,8 +92,8 @@
\pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
% Adding the pin number
\ifpgf at circuit@chip at shownumbers
 \c at pgf@counta=\numpins\relax
 \divide\c at pgf@counta by 2 \pgf at circ@count at b=\c at pgf@counta
+ \pgf at circ@count at a=\numpins\relax
+ \divide\pgf at circ@count at a by 2 \pgf at circ@count at b=\pgf at circ@count at a
% thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
\ifpgf at circuit@chip at straightnumbers
\pgfgettransformentries\a\b\temp\temp\temp\temp
@@ 108,53 +106,53 @@
\def\pgf at circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
\def\mytext{\pgfkeysvalueof{/tikz/circuitikz/multipoles/font}\space\pgf at circ@strut\the\pgf at circ@count at c\space}
\pgfmathloop%
 \ifnum\c at pgf@counta>0
+ \ifnum\pgf at circ@count at a>0
\ifcase\quadrant % rotation 0
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[left,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[right,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
\or % rotation 90
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[top,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[bottom,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
\or %rotation 180
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[right,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[left,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
\or % rotation +90
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[bottom,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[top,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
\fi
 \advance\c at pgf@counta1\relax%
+ \advance\pgf at circ@count at a1\relax%
\repeatpgfmathloop
\fi
\endpgfscope
@@ 161,32 +159,32 @@
\ifdim\pgf at circ@res at other>0pt
\pgfscope
\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins thickness}\pgflinewidth}
 \c at pgf@counta=\numpins\relax
 \divide\c at pgf@counta by 2 \pgf at circ@count at b=\c at pgf@counta
+ \pgf at circ@count at a=\numpins\relax
+ \divide\pgf at circ@count at a by 2 \pgf at circ@count at b=\pgf at circ@count at a
\pgfmathloop%
 \ifnum\c at pgf@counta>0
+ \ifnum\pgf at circ@count at a>0
\edef\padfrac{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pad fraction}}
\ifnum\padfrac>0
\pgf at circ@res at temp=\pgf at circ@res at step\divide\pgf at circ@res at temp by \padfrac
% left side pads
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
% right side pads
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
\else
% left side pins
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
% right side pins
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
\fi
 \advance\c at pgf@counta by 1\relax%
+ \advance\pgf at circ@count at a by 1\relax%
\repeatpgfmathloop
\pgfusepath{stroke}
\endpgfscope
@@ 196,19 +194,19 @@
% and is executed just before a node is drawn.
\pgfutil at g@addto at macro\pgf at sh@s at dipchip{%
% Start with the maximum pin number and go backwards.
 \c at pgf@counta=\numpins\relax
+ \pgf at circ@count at a=\numpins\relax
\pgfmathloop%
 \ifnum\c at pgf@counta>0
+ \ifnum\pgf at circ@count at a>0
% we will create two anchors per pin: the "normal one" like `pin 1` for the
% electrical contact, and the "border one" like `bpin 1` for labels.
% they will coincide if `external pins width` is set to 0.
 \expandafter\xdef\csname pgf at anchor@dipchip at pin\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@dippinanchor{\the\c at pgf@counta}{1}%
+ \expandafter\xdef\csname pgf at anchor@dipchip at pin\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@dippinanchor{\the\pgf at circ@count at a}{1}%
}
 \expandafter\xdef\csname pgf at anchor@dipchip at bpin\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@dippinanchor{\the\c at pgf@counta}{0}%
+ \expandafter\xdef\csname pgf at anchor@dipchip at bpin\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@dippinanchor{\the\pgf at circ@count at a}{0}%
}
 \advance\c at pgf@counta by 1\relax%
+ \advance\pgf at circ@count at a by 1\relax%
\repeatpgfmathloop%
}%
}
@@ 217,8 +215,8 @@
\pgfdeclareshape{qfpchip}{
\savedmacro\numpins{%
 \c at pgf@counta=\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/num pins}%
 \def\numpins{\the\c at pgf@counta}
+ \pgf at circ@count at a=\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/num pins}%
+ \def\numpins{\the\pgf at circ@count at a}
}
\savedanchor\centerpoint{%
\pgf at x=.5\wd\pgfnodeparttextbox%
@@ 291,8 +289,8 @@
% Adding the pin number
\pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
\ifpgf at circuit@chip at shownumbers
 \c at pgf@counta=\numpins%
 \divide\c at pgf@counta by 4 \pgf at circ@count at b=\c at pgf@counta
+ \pgf at circ@count at a=\numpins%
+ \divide\pgf at circ@count at a by 4 \pgf at circ@count at b=\pgf at circ@count at a
% thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
\ifpgf at circuit@chip at straightnumbers
\pgfgettransformentries\a\b\temp\temp\temp\temp
@@ 305,93 +303,93 @@
\def\pgf at circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
\def\mytext{\pgfkeysvalueof{/tikz/circuitikz/multipoles/font}\space\pgf at circ@strut\the\pgf at circ@count at c\space}
\pgfmathloop%
 \ifnum\c at pgf@counta>0
+ \ifnum\pgf at circ@count at a>0
\ifcase\quadrant % rotation 0
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[left,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% bottom
 \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[bottom,
 at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down},
+ at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[right,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% top
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[top,
 at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up},
+ at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up},
rotate=\rot]{\mytext}
\or % rotation 90
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[top,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% bottom
 \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[left,
 at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down},
+ at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[bottom,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% top
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[right,
 at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up},
+ at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up},
rotate=\rot]{\mytext}
\or %rotation 180
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[right,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% bottom
 \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[top,
 at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down},
+ at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[left,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% top
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[bottom,
 at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up},
+ at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up},
rotate=\rot]{\mytext}
\or % rotation +90
% left
 \pgf at circ@count at c=\c at pgf@counta
+ \pgf at circ@count at c=\pgf at circ@count at a
\pgftext[bottom,
 at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% bottom
 \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[right,
 at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down},
+ at=\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down},
rotate=\rot]{\mytext}
% right
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\c at pgf@counta+1\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b\pgf at circ@count at a+1\relax
\pgftext[top,
 at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step},
+ at=\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step},
rotate=\rot]{\mytext}
% top
 \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\c at pgf@counta\relax
+ \pgf at circ@count at c=\numexpr3*\pgf at circ@count at b+\pgf at circ@count at a\relax
\pgftext[left,
 at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up},
+ at=\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up},
rotate=\rot]{\mytext}
\fi
 \advance\c at pgf@counta1\relax%
+ \advance\pgf at circ@count at a1\relax%
\repeatpgfmathloop
\fi
\endpgfscope
@@ 398,48 +396,48 @@
\ifdim\pgf at circ@res at other>0pt
\pgfscope
\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins thickness}\pgflinewidth}
 \c at pgf@counta=\numpins%
 \divide\c at pgf@counta by 4 \pgf at circ@count at b=\c at pgf@counta
+ \pgf at circ@count at a=\numpins%
+ \divide\pgf at circ@count at a by 4 \pgf at circ@count at b=\pgf at circ@count at a
\pgfmathloop%
 \ifnum\c at pgf@counta>0
+ \ifnum\pgf at circ@count at a>0
\edef\padfrac{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pad fraction}}
\ifnum\padfrac>0
\pgf at circ@res at temp=\pgf at circ@res at step\divide\pgf at circ@res at temp by \padfrac
% left side pads
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
% bottom side pads
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down\pgf at circ@res at other}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down\pgf at circ@res at other}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down}}
% right side pads
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at temp+\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
% top side pads
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up+\pgf at circ@res at other}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up+\pgf at circ@res at other}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up+\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up+\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up}}
\else
% left side pins
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
% bottom side pins
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at down\pgf at circ@res at other}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at down\pgf at circ@res at other}}
% right side pins
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}}
% top side pins
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\c at pgf@counta)*\pgf at circ@res at step}{\pgf at circ@res at up+\pgf at circ@res at other}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+(\pgf at circ@qfp at pin@shift\the\pgf at circ@count at a)*\pgf at circ@res at step}{\pgf at circ@res at up+\pgf at circ@res at other}}
\fi
 \advance\c at pgf@counta1\relax%
+ \advance\pgf at circ@count at a1\relax%
\repeatpgfmathloop
\pgfusepath{stroke}
\endpgfscope
@@ 449,16 +447,16 @@
% and is executed just before a node is drawn.
\pgfutil at g@addto at macro\pgf at sh@s at qfpchip{%
% Start with the maximum pin number and go backwards.
 \c at pgf@counta=\numpins%
+ \pgf at circ@count at a=\numpins%
\pgfmathloop%
 \ifnum\c at pgf@counta>0
 \expandafter\xdef\csname pgf at anchor@qfpchip at pin\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@qfppinanchor{\the\c at pgf@counta}{1}%
+ \ifnum\pgf at circ@count at a>0
+ \expandafter\xdef\csname pgf at anchor@qfpchip at pin\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@qfppinanchor{\the\pgf at circ@count at a}{1}%
}
 \expandafter\xdef\csname pgf at anchor@qfpchip at bpin\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@qfppinanchor{\the\c at pgf@counta}{0}%
+ \expandafter\xdef\csname pgf at anchor@qfpchip at bpin\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@qfppinanchor{\the\pgf at circ@count at a}{0}%
}
 \advance\c at pgf@counta1\relax%
+ \advance\pgf at circ@count at a1\relax%
\repeatpgfmathloop%
}%
}
@@ 619,18 +617,19 @@
\endpgfscope
\fi
 % \typeout{CHANNELS\space\channels\space ANGLE\space\angle}
 \c at pgf@counta=\channels\relax
+ % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
+ \pgf at circ@count at a=\channels\relax
\pgfmathsetmacro{\currenta}{\angle}
\pgfmathloop%
 \ifnum\c at pgf@counta>0
 % \typeout{LOOP\space\the\c at pgf@counta\space CURRENTA\space\currenta\space RIGHT\space\the\pgf at circ@res at right}
+ \ifnum\pgf at circ@count at a>0
+ % \typeout{LOOPIN\space\space\the\pgf at circ@count at a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf at circ@res at right}
\pgfscope
\pgftransformshift{\pgfpointadd{\pgfpoint{\pgf at circ@res at left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf at circ@res at right}}}
 \pgfnode{\cshape}{center}{}{\thisshapeout \the\c at pgf@counta}{\pgfusepath{stroke}}
+ \pgfnode{\cshape}{center}{}{\thisshapeout \the\pgf at circ@count at a}{\pgfusepath{stroke}}
\endpgfscope
\pgfmathsetmacro{\currenta}{\currenta+\stepa}
 \advance\c at pgf@counta by 1\relax%
+ % \typeout{LOOPOUT\space\the\pgf at circ@count at a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf at circ@res at right}
+ \advance\pgf at circ@count at a by 1\relax%
\repeatpgfmathloop
\pgfscope % input
@@ 642,25 +641,25 @@
% and is executed just before a node is drawn.
\pgfutil at g@addto at macro\pgf at sh@s at rotaryswitch{%
% Start with the maximum pin number and go backwards.
 \c at pgf@counta=\channels\relax
+ \pgf at circ@count at a=\channels\relax
\pgfmathloop%
 \ifnum\c at pgf@counta>0
+ \ifnum\pgf at circ@count at a>0
% we will create two anchors per pin: the "normal one" like `pin 1` for the
% electrical contact, and the "border one" like `bpin 1` for labels.
% they will coincide if `external pins width` is set to 0.
 \expandafter\xdef\csname pgf at anchor@rotaryswitch at out\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@rotaryanchor{\the\c at pgf@counta}{1}{0}%
+ \expandafter\xdef\csname pgf at anchor@rotaryswitch at out\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@rotaryanchor{\the\pgf at circ@count at a}{1}{0}%
}
 \expandafter\xdef\csname pgf at anchor@rotaryswitch at cout\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@rotaryanchor{\the\c at pgf@counta}{0}{0}%
+ \expandafter\xdef\csname pgf at anchor@rotaryswitch at cout\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@rotaryanchor{\the\pgf at circ@count at a}{0}{0}%
}
 \expandafter\xdef\csname pgf at anchor@rotaryswitch at aout\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@rotaryanchor{\the\c at pgf@counta}{0}{1}%
+ \expandafter\xdef\csname pgf at anchor@rotaryswitch at aout\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@rotaryanchor{\the\pgf at circ@count at a}{0}{1}%
}
 \expandafter\xdef\csname pgf at anchor@rotaryswitch at sqout\space\the\c at pgf@counta\endcsname{%
 \noexpand\pgf at circ@rotarysqanchor{\the\c at pgf@counta}{0}%
+ \expandafter\xdef\csname pgf at anchor@rotaryswitch at sqout\space\the\pgf at circ@count at a\endcsname{%
+ \noexpand\pgf at circ@rotarysqanchor{\the\pgf at circ@count at a}{0}%
}
 \advance\c at pgf@counta by 1\relax%
+ \advance\pgf at circ@count at a by 1\relax%
\repeatpgfmathloop%
}%
}
Modified: trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircquadpoles.tex
===================================================================
 trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircquadpoles.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/generic/circuitikz/pgfcircquadpoles.tex 20190713 21:39:36 UTC (rev 51634)
@@ 464,23 +464,30 @@
\pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
\pgfusepath{draw}
 \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at left}{0pt}}
 \pgfpatharc{0}{90} {0.4\pgf at circ@res at up}
 \pgfsetarrowsend{latex}
 \pgfusepath{draw}
 \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at left}{0pt}}
 \pgfpatharc{0}{90} {0.4\pgf at circ@res at up}
 \pgfsetarrowsend{latex}
 \pgfusepath{draw}

 \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at right}{0pt}}
 \pgfpatharc{180}{90} {0.4\pgf at circ@res at up}
 \pgfsetarrowsend{latex}
 \pgfusepath{draw}
 \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at right}{0pt}}
 \pgfpatharc{180}{90} {0.4\pgf at circ@res at up}
 \pgfsetarrowsend{latex}
 \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf at circ@res at up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf at circ@res at up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf at circ@res at up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf at circ@res at right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf at circ@res at up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
}
% contrib Kristofer M. Monisit
Modified: trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirctripoles.tex
===================================================================
 trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirctripoles.tex 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/generic/circuitikz/pgfcirctripoles.tex 20190713 21:39:36 UTC (rev 51634)
@@ 1644,13 +1644,15 @@
\pgfpathlineto{\pgfpoint{\pgf at circ@res at left\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf at circ@res at up+\pgf at circ@res at down}}
\pgfusepath{draw}
\fi
 \pgfpathcircle{\pgfpoint
 {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf at circ@res at left  \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
 {\pgf at circ@res at up+\pgf at circ@res at down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
 \ifpgf at circuit@pmos at emptycircle
 \pgfsetfillcolor{white}
+ \ifpgf at circuit@pmos at nocircle\else
+ \pgfpathcircle{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf at circ@res at left  \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
+ \ifpgf at circuit@pmos at emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
\fi
 \pgfusepath{draw,fill}
}
%% HEMT FET Transistor
@@ 4193,21 +4195,21 @@
% Draw tube outline
\def\pgf at circ@tubes at drawtube{%
\ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
 \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}}
 \pgfutil at tempdima=\pgf at circ@res at right
 \advance\pgfutil at tempdima by \pgf at circ@res at up
 \pgfpathlineto{\pgfpoint{\pgfutil at tempdima}{\pgf at circ@res at up}}
 \pgfpatharc{90}{90}{\pgf at circ@res at up}
 \pgfpathlineto{\pgfpoint{\pgfutil at tempdima}{\pgf at circ@res at up}}
 \pgfpatharc{270}{90}{\pgf at circ@res at up}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfutil at tempdima=\pgf at circ@res at right
+ \advance\pgfutil at tempdima by \pgf at circ@res at up
+ \pgfpathlineto{\pgfpoint{\pgfutil at tempdima}{\pgf at circ@res at up}}
+ \pgfpatharc{90}{90}{\pgf at circ@res at up}
+ \pgfpathlineto{\pgfpoint{\pgfutil at tempdima}{\pgf at circ@res at up}}
+ \pgfpatharc{270}{90}{\pgf at circ@res at up}
\else
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
 \pgfutil at tempdima=\pgf at circ@res at up
 \advance\pgfutil at tempdima by \pgf at circ@res at right
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdima}}
 \pgfpatharc{180}{0}{\pgf at circ@res at right}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdima}}
 \pgfpatharc{180}{0}{\pgf at circ@res at right}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfutil at tempdima=\pgf at circ@res at up
+ \advance\pgfutil at tempdima by \pgf at circ@res at right
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdima}}
+ \pgfpatharc{180}{0}{\pgf at circ@res at right}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdima}}
+ \pgfpatharc{180}{0}{\pgf at circ@res at right}
\fi
\pgfpathclose
}
@@ 4218,52 +4220,52 @@
%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
\long\def\pgfcircdeclaretube#1#2#3{%
\pgfdeclareshape{#1}{
 \anchor{center}{
 \pgfpointorigin
 }
 \savedanchor\northwest{%
 \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@Rlen
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@Rlen
\pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@Rlen
% x and y should be half the Rlen
 \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
 }
+ \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
+ }
\anchor{north} {%
\northwest
\pgf at x=0pt
}
 \anchor{east}{%
 \northwest
 \pgf at x=\pgf at x
 \pgf at y=0pt
 }
+ \anchor{east}{%
+ \northwest
+ \pgf at x=\pgf at x
+ \pgf at y=0pt
+ }
\anchor{south}{%
 \northwest
 \pgf at y=\pgf at y
+ \northwest
+ \pgf at y=\pgf at y
\pgf at x=0pt
}
 \anchor{west}{%
 \northwest
 \pgf at y=0pt
 }
 \anchor{north west}{%
 \northwest
 }
 \anchor{north east}{%
 \northwest
 \pgf at x=\pgf at x
 }
 \anchor{south east}{
 \northwest
 \pgf at x=\pgf at x
 \pgf at y=\pgf at y
 }
 \anchor{south west}{
 \northwest
 \pgf at y=\pgf at y
 }
+ \anchor{west}{%
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{north west}{%
+ \northwest
+ }
+ \anchor{north east}{%
+ \northwest
+ \pgf at x=\pgf at x
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf at x=\pgf at x
+ \pgf at y=\pgf at y
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf at y=\pgf at y
+ }
\anchor{anode} {%
\northwest
\pgf at x=0pt
@@ 4295,86 +4297,86 @@
\pgf at x=\pgfmathresult\pgf at x
\pgf at y=\pgf at y
}

+
% Extra anchors
#2

+
\backgroundpath{
\pgfscope
 % Line width for tripoles
 \pgfsetlinewidth{\ctikzvalof{tripoles/thickness}\pgflinewidth}

 % Setup to draw tube
 \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@Rlen
 \pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@Rlen
 \pgf at circ@res at up=\ctikzvalof{tubes/tube radius}\pgf at circ@res at up
 \pgf at circ@res at right=\ctikzvalof{tubes/tube radius}\pgf at circ@res at right

 % Tube fill color (if any)
 \ifx\tikz at fillcolor\pgfutil at empty
 \else
 \pgfscope
 \pgfsetfillcolor{\tikz at fillcolor}
 \pgf at circ@tubes at drawtube
 \pgfusepath{fill}
 \endpgfscope
 \fi

 % Tube outline
 \pgf at circ@tubes at drawtube

 % Setup to draw grid, filament, anode and cathode
 \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@Rlen
 \pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@Rlen
 \pgf at circ@res at up=0.5\pgf at circ@res at up
 \pgf at circ@res at right=0.5\pgf at circ@res at right

 % Grid drawing
 #3

 % Filament (is not drawn by default)
 \ifpgf at circuit@tubes at filament
 \pgf at circ@res at temp=\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up
 \advance\pgf at circ@res at temp by \ctikzvalof{tubes/filament distance}\pgf at circ@res at up
 \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
 \pgf at xa=\pgfmathresult\pgf at circ@res at right
 \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
 \pgf at ya=\pgfmathresult\pgf at circ@res at up
 \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at temp}}
 \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at ya}}
 \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at circ@res at up}}
 \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at temp}}
 \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at ya}}
 \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at circ@res at up}}
 \pgf at circuit@tubes at filamentfalse
 \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}}

 % 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

 % Draw the background
 \pgfusepath{draw}

+ % Line width for tripoles
+ \pgfsetlinewidth{\ctikzvalof{tripoles/thickness}\pgflinewidth}
+
+ % Setup to draw tube
+ \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@Rlen
+ \pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@Rlen
+ \pgf at circ@res at up=\ctikzvalof{tubes/tube radius}\pgf at circ@res at up
+ \pgf at circ@res at right=\ctikzvalof{tubes/tube radius}\pgf at circ@res at right
+
+ % Tube fill color (if any)
+ \ifx\tikz at fillcolor\pgfutil at empty
+ \else
+ \pgfscope
+ \pgfsetfillcolor{\tikz at fillcolor}
+ \pgf at circ@tubes at drawtube
+ \pgfusepath{fill}
\endpgfscope
+ \fi
+
+ % Tube outline
+ \pgf at circ@tubes at drawtube
+
+ % Setup to draw grid, filament, anode and cathode
+ \pgf at circ@res at up=\ctikzvalof{tubes/height}\pgf at circ@Rlen
+ \pgf at circ@res at right=\ctikzvalof{tubes/width}\pgf at circ@Rlen
+ \pgf at circ@res at up=0.5\pgf at circ@res at up
+ \pgf at circ@res at right=0.5\pgf at circ@res at right
+
+ % Grid drawing
+ #3
+
+ % Filament (is not drawn by default)
+ \ifpgf at circuit@tubes at filament
+ \pgf at circ@res at temp=\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up
+ \advance\pgf at circ@res at temp by \ctikzvalof{tubes/filament distance}\pgf at circ@res at up
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf at xa=\pgfmathresult\pgf at circ@res at right
+ \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
+ \pgf at ya=\pgfmathresult\pgf at circ@res at up
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at temp}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at ya}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at temp}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at ya}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at circ@res at up}}
+ \pgf at circuit@tubes at filamentfalse
+ \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}}
+
+ % 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
+
+ % Draw the background
+ \pgfusepath{draw}
+
+ \endpgfscope
}
}
}
@@ 4383,10 +4385,14 @@
\pgfcircdeclaretube{triode}
{
 \anchor{grid} {%
 \northwest
+ \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
+ }
}
{
% Grid protrusion
@@ 4397,40 +4403,47 @@
% 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
 \@tempcnta=\ctikzvalof{tubes/grid dashes} % dashes*2+1
 \multiply\@tempcnta by 2\relax
 \advance\@tempcnta by 1\relax
+ \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 \@tempcnta
+ \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
 \@tempcnta=\ctikzvalof{tubes/grid dashes}
+ \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\@tempcnta by1
 \ifnum\@tempcnta>0\relax
+ \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 by1
+ \ifnum\pgf at circ@count at a>0\relax
\repeat
}
\pgfcircdeclaretube{tetrode}
{
 \anchor{grid} {%
 \northwest
+ \anchor{grid} {% should not be used
+ \northwest
\pgfutil at tempdima=\pgf at y
\pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
\pgf at y=0.5\pgf at y
\advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
 }
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil at tempdima=\pgf at y
+ \pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
+ \pgf at y=0.5\pgf at y
+ \advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
+ }
\anchor{screen} {%
 \northwest
+ \northwest
\pgfutil at tempdima=\pgf at y
\pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
\pgf at y=0.5\pgf at y
\advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
 }
+ }
}
{
% Grid x/y points
@@ 4450,44 +4463,50 @@
% 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
 \@tempcnta=\ctikzvalof{tubes/grid dashes} % dashes*2+1
 \multiply\@tempcnta by 2\relax
 \advance\@tempcnta by 1\relax
+ \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 \@tempcnta
+ \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
 \@tempcnta=\ctikzvalof{tubes/grid dashes}
+ \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}{\pgfutil at tempdima}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdima}}
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdimb}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdimb}}
 \advance\pgf at circ@res at temp by\pgf at circ@res at step
 \advance\@tempcnta by1
 \ifnum\@tempcnta>0\relax
+ \advance\pgf at circ@res at temp by\pgf at circ@res at step
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdimb}}
+ \advance\pgf at circ@res at temp by\pgf at circ@res at step
+ \advance\pgf at circ@count at a by1
+ \ifnum\pgf at circ@count at a>0\relax
\repeat
}
\pgfcircdeclaretube{pentode}
{
 \anchor{grid} {%
 \northwest
+ \anchor{grid} {% should not be used
+ \northwest
\pgfutil at tempdima=\pgf at y
\pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
\advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
 }
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil at tempdima=\pgf at y
+ \pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
+ \advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
+ }
\anchor{screen} {%
 \northwest
+ \northwest
\pgf at y=\ctikzvalof{tubes/grid shift}\pgf at y
 }
+ }
\anchor{suppressor} {%
 \northwest
+ \northwest
\pgfutil at tempdima=\pgf at y
\pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
\advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
 }
+ }
}
{
% Grid x/y points
@@ 4497,37 +4516,102 @@
\pgfutil at tempdimb=\pgfutil at tempdima
\advance\pgfutil at tempdima by \ctikzvalof{tubes/grid shift}\pgf at circ@res at up
\advance\pgfutil at tempdimb by \ctikzvalof{tubes/grid shift}\pgf at circ@res at up
 \@tempdimc=\ctikzvalof{tubes/grid shift}\pgf at circ@res at up
+ \pgf at circ@res at other=\ctikzvalof{tubes/grid shift}\pgf at circ@res at up
% Grid protrusion
\pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdimb}}
\pgfpathlineto{\pgfpoint{\pgf at xa}{\pgfutil at tempdimb}}
\pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdima}}
\pgfpathlineto{\pgfpoint{\pgf at xa}{\pgfutil at tempdima}}
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\@tempdimc}}
 \pgfpathlineto{\pgfpoint{\pgf at xa}{\@tempdimc}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at circ@res at other}}
% 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
 \@tempcnta=\ctikzvalof{tubes/grid dashes} % dashes*2+1
 \multiply\@tempcnta by 2\relax
 \advance\@tempcnta by 1\relax
+ \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 \@tempcnta
+ \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
 \@tempcnta=\ctikzvalof{tubes/grid dashes}
+ \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}{\pgfutil at tempdima}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdima}}
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdimb}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdimb}}
 \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\@tempdimc}}
 \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\@tempdimc}}
 \advance\pgf at circ@res at temp by\pgf at circ@res at step
 \advance\@tempcnta by1
 \ifnum\@tempcnta>0\relax
+ \advance\pgf at circ@res at temp by\pgf at circ@res at step
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgf at circ@res at other}}
+ \advance\pgf at circ@res at temp by\pgf at circ@res at step
+ \advance\pgf at circ@count at a by1
+ \ifnum\pgf at circ@count at a>0\relax
\repeat
}
+\pgfcircdeclaretube{pentode suppressor to cathode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil at tempdima=\pgf at y
+ \pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
+ \advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil at tempdima=\pgf at y
+ \pgf at y=\ctikzvalof{tubes/grid separation}\pgf at y
+ \advance\pgf at y by \ctikzvalof{tubes/grid shift}\pgfutil at tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf at y=\ctikzvalof{tubes/grid shift}\pgf at y
+ }
+}
+{
+ % Grid x/y points
+ \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
+ \pgfutil at tempdima=\ctikzvalof{tubes/grid separation}\pgf at circ@res at up
+ \pgfutil at tempdimb=\pgfutil at tempdima
+ \advance\pgfutil at tempdima by \ctikzvalof{tubes/grid shift}\pgf at circ@res at up
+ \advance\pgfutil at tempdimb by \ctikzvalof{tubes/grid shift}\pgf at circ@res at up
+ \pgf at circ@res at other=\ctikzvalof{tubes/grid shift}\pgf at circ@res at up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgfutil at tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgfutil at tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at xa}{\pgf at circ@res at other}}
+ % 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
+ \ifnum\pgf at circ@count at a>1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgf at circ@res at other}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgf at circ@res at other}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp+\pgf at circ@res at step}{\pgfutil at tempdima}}
+ \advance\pgf at circ@res at temp by\pgf at circ@res at step
+ \advance\pgf at circ@count at a by1
+ \ifnum\pgf at circ@count at a>0\relax
+ \repeat
+ % Grid: connection from suppressor to cathode
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}{\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at temp}{\pgfutil at tempdima2*\ctikzvalof{tubes/grid separation}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf at circ@res at right0.4142136*\ctikzvalof{tubes/cathode corners}\pgf at circ@res at right}{\ctikzvalof{tubes/cathode distance}\pgf at circ@res at up0.4142136*\ctikzvalof{tubes/cathode corners}\pgf at circ@res at up}}
+
+}
+
\endinput
Modified: trunk/Master/texmfdist/tex/latex/circuitikz/circuitikz.sty
===================================================================
 trunk/Master/texmfdist/tex/latex/circuitikz/circuitikz.sty 20190713 21:39:16 UTC (rev 51633)
+++ trunk/Master/texmfdist/tex/latex/circuitikz/circuitikz.sty 20190713 21:39:36 UTC (rev 51634)
@@ 9,8 +9,8 @@
\NeedsTeXFormat{LaTeX2e}
\def\pgfcircversion{0.9.2}
\def\pgfcircversiondate{2019/06/21}
+\def\pgfcircversion{0.9.3}
+\def\pgfcircversiondate{2019/07/13}
\ProvidesPackage{circuitikz}%
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
@@ 344,7 +344,7 @@
\input pgfcirccurrent.tex
\input pgfcircflow.tex
% notice that the default is nooldvoltagedirections; it's not explicitly set to allow for the warning
+% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
\ProcessOptions\relax
@@ 360,7 +360,7 @@
\ifpgf at circ@explicitvdir\else
\PackageWarningNoLine{circuitikz}{%
You did not specify one of the voltage directions:\MessageBreak
 \space\space oldvoltagedirections, nooldvoltagedirections, \MessageBreak
+ \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
\space\space RPvoltages or EFvoltages \MessageBreak
Default directions may have changed, \MessageBreak
please check the manual%
More information about the texlivecommits
mailing list