texlive[51420] Master/texmf-dist: circuitikz (22jun19)
commits+karl at tug.org
commits+karl at tug.org
Sat Jun 22 23:22:06 CEST 2019
Revision: 51420
http://tug.org/svn/texlive?view=revision&revision=51420
Author: karl
Date: 2019-06-22 23:22:05 +0200 (Sat, 22 Jun 2019)
Log Message:
-----------
circuitikz (22jun19)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex
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/pgfcircmonopoles.tex
trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
Added Paths:
-----------
trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-0.8.3.tex
Modified: trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex
===================================================================
--- trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex 2019-06-21 23:38:51 UTC (rev 51419)
+++ trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex 2019-06-22 21:22:05 UTC (rev 51420)
@@ -2,11 +2,11 @@
\usemodule[circuitikz]
\starttext
-
+
A simple example to test the installation.
\startcircuitikz[scale=1.2]
- \draw
+ \draw
(0,2) to[I=1\milli\ampere] (2,2)
to[R, l_=2\kilo\ohm, *-*] (0,0)
to[R, l_=2\kilo\ohm] (2,0)
@@ -14,7 +14,9 @@
to[cspst, l=$t_0$] (4,2) -- (4,1.5)
to [generic, i=$i_1$, v=$v_1$] (4,-.5) -- (4,-1.5)
(0,2) -- (0,-1.5) to[V, v_=4\volt] (2,-1.5)
- to [R, l=1\kilo\ohm] (4,-1.5);
+ to [R, l=1\kilo\ohm] (4,-1.5)
+ (5,2) node[dipchip, anchor=pin 1]{};
+
\stopcircuitikz
-
+
\stoptext
Modified: trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md 2019-06-21 23:38:51 UTC (rev 51419)
+++ trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md 2019-06-22 21:22:05 UTC (rev 51420)
@@ -1,7 +1,12 @@
<!--- 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.1
+* Version 0.9.2 (2019-06-21)
+ - (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
+ - Added tailless ground
+
+* Version 0.9.1 (2019-06-16)
- Added old LaTeX versions for 0.8.3, 0.7, 0.6 and 0.4
- Added the option to have inline transformers and gyrators
- Added rotary switches
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 2019-06-21 23:38:51 UTC (rev 51419)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex 2019-06-22 21:22:05 UTC (rev 51420)
@@ -6,11 +6,24 @@
\begin{itemize}
\tightlist
\item
- Version 0.9.1
+ Version 0.9.2 (2019-06-21)
\begin{itemize}
\tightlist
\item
+ (hopefully) fixed ConTeXt compatibility. Most new functionality is
+ not tested; testers and developers for the ConTeXt side are needed.
+ \item
+ Added old ConTeXt version for 0.8.3
+ \item
+ Added tailless ground
+ \end{itemize}
+\item
+ Version 0.9.1 (2019-06-16)
+
+ \begin{itemize}
+ \tightlist
+ \item
Added old LaTeX versions for 0.8.3, 0.7, 0.6 and 0.4
\item
Added the option to have inline transformers and gyrators
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 2019-06-21 23:38:51 UTC (rev 51419)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex 2019-06-22 21:22:05 UTC (rev 51420)
@@ -236,7 +236,11 @@
\begin{lstlisting}
\usepackage[]{circuitik-0.8.3} % or circuitikz-0.4, 0.6...
\end{lstlisting}
- You have to take care of the options that may have changed between versions.
+ You have to take care of the options that may have changed between versions;
+ \item if you are using \ConTeXt, only version \texttt{0.8.3} is packaged for now; if can use it with
+ \begin{lstlisting}
+ \usemodule[circuitik-0.8.3]
+ \end{lstlisting}
\end{itemize}
@@ -845,9 +849,10 @@
\begin{groupdesc}
\circuitdesc{ground}{Ground}{}( center/0/0.3 )
+ \circuitdesc{tlground}{Tailless ground}{}( center/0/0.3 )
\circuitdesc{rground}{Reference ground}{}
\circuitdesc*{sground}{Signal ground}{}
- \circuitdesc{tground}{Thicker ground}{}
+ \circuitdesc{tground}{Thicker tailless reference ground}{}
\circuitdesc{nground}{Noiseless ground}{}
\circuitdesc{pground}{Protective ground}{}
\circuitdesc{cground}{Chassis ground\footnotemark}{}
Added: trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-0.8.3.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-0.8.3.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-0.8.3.tex 2019-06-22 21:22:05 UTC (rev 51420)
@@ -0,0 +1,10941 @@
+\def\pgfcircversion{0.8.3}
+\def\pgfcircversiondate{2017/05/28}
+\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
+
+\usemodule[tikz]
+
+\startmodule[circuitikzgit-0.8.3]
+\usetikzlibrary[calc]
+\usetikzlibrary[arrows]
+
+\unprotect
+
+\edef\tikzatcode{\the\catcode`\@}
+\edef\tikzbarcode{\the\catcode`\|}
+\edef\tikzexclaimcode{\the\catcode`\!}
+\catcode`\@=11
+\catcode`\|=12
+\catcode`\!=12
+
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+
+%% Options
+
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf at circ@res at up
+\newdimen\pgf at circ@res at down
+\newdimen\pgf at circ@res at zero
+\newdimen\pgf at circ@res at left
+\newdimen\pgf at circ@res at right
+\newdimen\pgf at circ@res at other
+\newdimen\pgf at circ@res at step
+\newdimen\pgf at circ@res at temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+%% Keys
+
+\long\def\pgf at circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\newif\ifpgf at circ@siunitx
+\newif\ifpgf at circuit@compat
+\newif\ifpgf at circ@oldvoltagedirection
+
+% Option ">" for twoports
+\newif\ifpgf at circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf at circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf at circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf at circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf at circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf at circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf at circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf at circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf at circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf at circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf at circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf at circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{nodes width/.initial=.04}
+\newdimen\pgf at circ@Rlen
+\ctikzset{bipoles/length/.code={\pgf at circ@Rlen = #1}}
+\pgf at circ@Rlen = 1.4cm
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/tlinestub/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/battery2/height/.initial=.6}
+\ctikzset{bipoles/battery2/width/.initial=.3}
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{bipoles/spst/height/.initial=.35}
+\ctikzset{bipoles/spst/width/.initial=.35}
+\ctikzset{bipoles/spst/depth/.initial=.2}
+\ctikzset{bipoles/nos/height/.initial=.3}
+\ctikzset{bipoles/nos/width/.initial=.35}
+\ctikzset{bipoles/ncs/height/.initial=.35}
+\ctikzset{bipoles/ncs/width/.initial=.35}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
+\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
+%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
+%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/bandstop/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+
+\newif\ifpgf at circuit@trans at depletiontype
+\pgf at circuit@trans at depletiontypefalse
+
+\newif\ifpgf at circuit@mos at arrows
+\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}}
+
+% Option solderdot for fet
+\newif\ifpgf at circuit@fet at solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf at circuit@fet at solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf at circuit@fet at solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf at circuit@fet at solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf at circuit@fet at solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf at circuit@fet at bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf at circuit@fet at bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf at circuit@fet at bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf at circuit@fet at bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf at circuit@fet at bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf at circuit@bpt at drawgate
+\pgf at circuit@bpt at drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf at circuit@bpt at drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf at circuit@bpt at drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf at circuit@bpt at drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf at circuit@bpt at drawgatefalse}}
+
+% Option draw bpt without base connection
+\newif\ifpgf at circuit@bpt at drawbase
+\pgf at circuit@bpt at drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf at circuit@bpt at drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf at circuit@bpt at drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf at circuit@bpt at drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf at circuit@bpt at drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf at circuit@bpt at drawphoto
+\pgf at circuit@bpt at drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf at circuit@bpt at drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf at circuit@bpt at drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf at circuit@bpt at drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf at circuit@bpt at drawphototrue}}
+
+% 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}}
+
+
+\newif\ifpgf at circuit@trans at ntype
+\pgf at circuit@trans at ntypetrue %default true
+%\newif\ifpgf at circuit@trans at ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf at circuit@trans at ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+
+\newif\ifpgf at circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf at circuit@europeanlogicporttrue } }
+\ctikzset{logic ports/american/.code= {\pgf at circuit@europeanlogicportfalse } }
+
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+\ctikzset{tripoles/op amp/width/.initial=1.7}
+\ctikzset{tripoles/op amp/port width/.initial=.7}
+\ctikzset{tripoles/op amp/height/.initial=1.4}
+\ctikzset{tripoles/op amp/input height/.initial=.5}
+\ctikzset{tripoles/op amp/up pos/.initial=.45}
+\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/en amp/width/.initial=1.7}
+\ctikzset{tripoles/en amp/port width/.initial=.7}
+\ctikzset{tripoles/en amp/height/.initial=1.6}
+\ctikzset{tripoles/en amp/input height/.initial=.3}
+\ctikzset{tripoles/en amp/up pos/.initial=.45}
+\ctikzset{tripoles/en amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/en amp/font2/.initial= \fontsize{14}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/gm amp/width/.initial=1.7}
+\ctikzset{tripoles/gm amp/port width/.initial=.7}
+\ctikzset{tripoles/gm amp/height/.initial=1.4}
+\ctikzset{tripoles/gm amp/input height/.initial=.5}
+\ctikzset{tripoles/gm amp/up pos/.initial=.45}
+\ctikzset{tripoles/plain amp/width/.initial=1.7}
+\ctikzset{tripoles/plain amp/port width/.initial=.7}
+\ctikzset{tripoles/plain amp/height/.initial=1.4}
+\ctikzset{tripoles/plain amp/input height/.initial=.5}
+\ctikzset{tripoles/plain amp/up pos/.initial=.45}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial = }
+\ctikzset{bipole/name/.initial = }
+\newif\ifpgf at circuit@bipole at isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf at circuit@bipole at isvoltage}
+\newif\ifpgf at circuit@bipole at voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf at circuit@bipole at voltageoutsideofsymbol}
+\newif\ifpgf at circuit@bipole at strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf at circuit@bipole at strokedsymbol}
+\newif\ifpgf at circuit@bipole at iscurrent
+\ctikzset{bipole/is current/.is if=pgf at circuit@bipole at iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf at circuit@bipole at voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf at circuit@bipole at voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf at circuit@bipole at voltage@backwardtrue}}
+\newif\ifpgf at circuit@bipole at voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf at circuit@bipole at voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf at circuit@bipole at voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf at circuit@bipole at current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf at circuit@bipole at current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf at circuit@bipole at current@backwardtrue}}
+\newif\ifpgf at circuit@bipole at current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf at circuit@bipole at current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf at circuit@bipole at current@beforetrue}}
+\newif\ifpgf at circuit@bipole at current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf at circuit@bipole at current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf at circuit@bipole at current@belowtrue}}
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/flow/.is family}
+\newif\ifpgf at circuit@bipole at flow@backward
+\ctikzset{bipole/flow/direction/.is choice}
+\ctikzset{bipole/flow/direction/forward/.code={\pgf at circuit@bipole at flow@backwardfalse}}
+\ctikzset{bipole/flow/direction/backward/.code={\pgf at circuit@bipole at flow@backwardtrue}}
+\newif\ifpgf at circuit@bipole at flow@before
+\ctikzset{bipole/flow/x position/.is choice}
+\ctikzset{bipole/flow/x position/after/.code={\pgf at circuit@bipole at flow@beforefalse}}
+\ctikzset{bipole/flow/x position/before/.code={\pgf at circuit@bipole at flow@beforetrue}}
+\newif\ifpgf at circuit@bipole at flow@below
+\ctikzset{bipole/flow/y position/.is choice}
+\ctikzset{bipole/flow/y position/above/.code={\pgf at circuit@bipole at flow@belowfalse}}
+\ctikzset{bipole/flow/y position/below/.code={\pgf at circuit@bipole at flow@belowtrue}}
+\ctikzset{bipole/flow/label/unit/.initial=}
+\ctikzset{bipole/flow/label/name/.initial=}
+\ctikzset{flow/distance/.initial = .5}
+\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
+
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.is choice}
+\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
+\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
+\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
+\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
+\ctikzset{bipole/nodes/left/rectjoinfill/.code={\ctikzsetvalof{bipole/nodes/left}{rectjoinfill}}}
+\ctikzset{bipole/nodes/right/.is choice}
+\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
+\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
+\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
+\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
+\ctikzset{bipole/nodes/right/rectjoinfill/.code={\ctikzsetvalof{bipole/nodes/right}{rectjoinfill}}}
+
+
+
+
+\newif\ifpgf at circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf at circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf at circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf at circuit@strokediode
+\newif\ifpgf at circuit@fulldiode
+\pgf at circuit@strokediodefalse
+\pgf at circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf at circuit@fulldiodefalse\pgf at circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf at circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf at circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
+
+
+\newif\ifpgf at circ@siunitx
+\newif\ifpgf at circ@siunitx at res
+
+\ctikzset{straight/.is choice}
+\ctikzset{straightvoltage value/.initial=true}
+\ctikzset{straight/true/.code = {\pgf at circuit@bipole at voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf at circuit@bipole at voltage@straightfalse}}
+\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
+\newif\ifpgf at circuit@bipole at voltage@straight
+\ctikzset{bipole/straight/.is if=pgf at circuit@bipole at voltage@straight}
+
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf at circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+
+\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
+\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
+\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
+\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
+\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
+\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
+
+\newif\ifpgf at circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester choice/.is choice}
+\ctikzset{gas filled surge arrester choice/european/.code= {\pgf at circuit@europeangfsurgearrestertrue } }
+\ctikzset{gas filled surge arrester choice/american/.code= {\pgf at circuit@europeangfsurgearresterfalse } }
+
+\tikzset{american gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=american } }
+\tikzset{european gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=european } }
+\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
+\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
+\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
+\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
+\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
+\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set} }
+\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set} }
+\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
+
+% I should try to make the tree clearer (this voltaege conflicts with the options above)
+
+\newif\ifpgf at circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf at circuit@europeanvoltagefalse } }
+\ctikzset{voltage/european/.code = {\pgf at circuit@europeanvoltagetrue } }
+
+\newif\ifpgf at circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf at circuit@europeancurrentfalse }
+\ctikzset{current/european/.code = \pgf at circuit@europeancurrenttrue }
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%\def\pgf at circ@handleSI#1{%
+ % \pgf at circ@siunitx at resfalse
+%
+ % \edef\len{\stringlength[e]{#1}}
+ %\testmatchingchar[e]{#1}{\len}{>}%
+ %\ifmatchingchar%
+ % \ifnum\findchars{#1}{<}=0
+ % \def\pgf at circ@handleSI at val{\substring{#1}{1}{\findchars{#1}{<}-1}}
+ %\def\pgf at circ@handleSI at unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
+ %\pgf at circ@siunitx at restrue
+% \else
+% \fi
+ %\else
+ %\fi
+%}
+
+\def\pgf at circ@handleSI#1{
+ \noexpandarg
+ \def\pgf at temp{}
+ \StrBetween{#1}{<}{>}[\pgf at circ@handleSI at unit]
+ \StrLen{\pgf at circ@handleSI at unit}[\pgf at circ@handleSI at unit@len]
+
+ \ifnum\pgf at circ@handleSI at unit@len=0
+ \pgf at circ@siunitx at resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf at circ@siunitx at restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf at circ@handleSI at val]
+ %\typeout{si |#1|}
+ }{
+ \pgf at circ@siunitx at resfalse
+ %\typeout{no si |#1|}
+ }
+ \fi
+}
+
+\def\pgf at circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf at circ@temp}
+ \edef\pgf at temp{}
+ }
+ \ifx\pgf at circ@temp\pgf at temp
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf at circ@stripdecimals#1.#2\pgf at nil{#1}
+
+
+%%%---------- close: tex/pgfcircutils
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf at x=.5\wd\pgfnodeparttextbox%
+ \pgf at y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{
+ \northeast
+ \pgf at x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf at y=0cm
+ }
+ \anchor{south}{%
+ \northeast
+ \pgf at y=-\pgf at y
+ \pgf at x=0cm
+ }
+ \anchor{west}{
+ \northeast
+ \pgf at y=0cm
+ \pgf at x=-\pgf at x
+ }
+ \anchor{text}{%
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf at circ@res at left=\pgf at x
+ \pgf at circ@res at up=\pgf at y
+ \pgfpointborderellipse{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf at circ@res at left=\pgf at x
+ \pgf at circ@res at up=\pgf at y
+ \pgfpointborderellipse{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf at circ@res at left=\pgf at x
+ \pgf at circ@res at up=\pgf at y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf at circ@res at temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf at circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf at circ@res at left-\pgf at circ@res at temp}{\pgf at circ@res at up+\pgf at circ@res at temp}}
+ {\pgfpoint{\pgf at circ@res at left+\pgf at circ@res at temp}{\pgf at circ@res at up-\pgf at circ@res at temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Fill for correct rectangular joins
+
+\pgfdeclareshape{rectjoinfill}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf at circ@res at left=\pgf at x
+ \pgf at circ@res at up=\pgf at y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint{0}{.5\pgflinewidth}}
+ {\pgfpoint{0}{-.5\pgflinewidth}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf at circ@res at step = \pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 16
+ \pgf at x =\pgf at circ@res at step
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf at circ@res at step = \pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 16
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf at circ@res at step}{-.8\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{1\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf at circ@res at step}{.8\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf at circ@res at step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+
+}
+
+%% Flow arrow
+
+\pgfdeclareshape{flowarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf at circ@res at step = \pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 16
+ \pgf at x =\pgf at circ@res at step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf at circ@res at step = \pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 4
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+ }
+}
+
+%% Input arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf at circ@res at step = \pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf at circ@res at step}{-.8\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf at circ@res at step}{.8\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf at circ@res at step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf at circ@res at step = \ctikzvalof{bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at circ@res at step = 0.5\pgf at circ@res at step
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf at circ@res at step}{\pgf at circ@res at step}}{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+
+%% Ground symbol
+
+\pgfdeclareshape{ground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/ground/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf at circ@res at step}{-1.2\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf at circ@res at step}{-1.2\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf at circ@res at step}{-1.4\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf at circ@res at step}{-1.4\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+
+\pgfdeclareshape{rground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/ground/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{tground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/ground/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ %\pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{sground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/ground/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf at circ@res at step}}
+ \pgfpathclose
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% noiseless ground
+\pgfdeclareshape{nground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/ground/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf at circ@res at step}{-1.2\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf at circ@res at step}{-1.2\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf at circ@res at step}{-1.4\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf at circ@res at step}{-1.4\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{1.3\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfpatharc{0}{180}{1.3\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% protective ground
+\pgfdeclareshape{pground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/ground/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathcircle{\pgfpoint{0pt}{-\pgf at circ@res at step}} {1.2\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf at circ@res at step}{-1.2\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf at circ@res at step}{-1.2\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf at circ@res at step}{-1.4\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf at circ@res at step}{-1.4\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at step}{-1.6\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% chassis ground
+\pgfdeclareshape{cground}{
+\anchor{center}{
+ \pgfpointorigin
+}
+\behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/chassis/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-1.5\pgf at circ@res at step}{-2\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{-2\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{0pt}{-\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf at circ@res at step}{-2\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf at circ@res at step=\ctikzvalof{bipoles/tline/width} \pgf at circ@Rlen
+ \pgfpathmoveto{\pgfpoint{0.5\pgf at circ@res at step}{0.25\pgf at circ@res at step}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathellipse{\pgfpoint{0.5\pgf at circ@res at step}{0\pgf at circ@res at step}}{\pgfpoint{0.125\pgf at circ@res at step}{0\pgf at circ@res at step}}{\pgfpoint{0\pgf at circ@res at step}{0.25\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf at circ@res at step}{0.25\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf at circ@res at step}{0.25\pgf at circ@res at step}}
+ \pgfpatharc{90}{-90}{0.125\pgf at circ@res at step and 0.25\pgf at circ@res at step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{-0.25\pgf at circ@res at step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+
+
+\pgfdeclareshape{antenna}{
+\anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/antenna/width}\pgf at circ@Rlen
+ \pgf at x=5\pgf at circ@res at step%-0.5\pgflinewidth
+ \pgf at y=6\pgf at circ@res at step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf at x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf at x
+ \pgf at y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf at y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf at circ@res at step=\ctikzvalof{monopoles/antenna/width}\pgf at circ@Rlen
+
+ % \pgfpathmoveto{\pgfpointorigin}
+ % \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step}{0pt}}
+ % \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{0pt}}
+ % \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+
+ \pgftransformxshift{ -4\pgf at circ@res at step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{5\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{4\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{3\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{txantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/txantenna/width}\pgf at circ@Rlen
+ \pgf at x=5\pgf at circ@res at step%-0.5\pgflinewidth
+ \pgf at y=6\pgf at circ@res at step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf at x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf at x
+ \pgf at y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf at y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf at circ@res at step=\ctikzvalof{monopoles/txantenna/width}\pgf at circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{5\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{4\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{3\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf at circ@res at step}{6\pgf at circ@res at step}}
+% \pgfpatharc{60}{-60}{\pgf at circ@res at step and \pgf at circ@res at step}
+ \pgfpatharc{30}{-30}{2\pgf at circ@res at step} \pgfpathmoveto{\pgfpoint{6\pgf at circ@res at step}{6.25\pgf at circ@res at step}}
+ \pgfpatharc{30}{-30}{2.5\pgf at circ@res at step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf at circ@res at step}{6.5\pgf at circ@res at step}}
+ \pgfpatharc{30}{-30}{3\pgf at circ@res at step}
+ \pgfpathmoveto{\pgfpoint{7\pgf at circ@res at step}{6.75\pgf at circ@res at step}}
+ \pgfpatharc{30}{-30}{3.5\pgf at circ@res at step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf at circ@res at step}{7\pgf at circ@res at step}}
+ \pgfpatharc{30}{-30}{4\pgf at circ@res at step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{rxantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/txantenna/width}\pgf at circ@Rlen
+ \pgf at x=5\pgf at circ@res at step%-0.5\pgflinewidth
+ \pgf at y=6\pgf at circ@res at step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf at x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf at x
+ \pgf at y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf at y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf at circ@res at step=\ctikzvalof{monopoles/rxantenna/width}\pgf at circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{5\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{4\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{3\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{4\pgf at circ@res at step-0.5\pgflinewidth}{6\pgf at circ@res at step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf at circ@res at step}{7\pgf at circ@res at step}}
+% \pgfpatharc{60}{-60}{\pgf at circ@res at step and \pgf at circ@res at step}
+ \pgfpatharc{150}{210}{4\pgf at circ@res at step} \pgfpathmoveto{\pgfpoint{6.5\pgf at circ@res at step}{6.75\pgf at circ@res at step}}
+ \pgfpatharc{150}{210}{3.5\pgf at circ@res at step}
+ \pgfpathmoveto{\pgfpoint{7\pgf at circ@res at step}{6.5\pgf at circ@res at step}}
+ \pgfpatharc{150}{210}{3\pgf at circ@res at step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf at circ@res at step}{6.25\pgf at circ@res at step}}
+ \pgfpatharc{150}{210}{2.5\pgf at circ@res at step}
+ \pgfpathmoveto{\pgfpoint{8\pgf at circ@res at step}{6\pgf at circ@res at step}}
+ \pgfpatharc{150}{210}{2\pgf at circ@res at step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Vcc
+\pgfdeclareshape{vcc}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/vcc/width}\pgf at circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf at circ@res at step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf at circ@res at step+2\ht\pgfnodeparttextbox}}
+ \pgf at x=0pt
+ \pgf at y=2\pgf at circ@res at step
+ \advance \pgf at y by 0.5\ht\pgfnodeparttextbox
+ \pgf at x=-.5\wd\pgfnodeparttextbox
+ }
+\behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/vcc/width}\pgf at circ@Rlen
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{.8\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{.8\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/vcc/width}\pgf at circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf at circ@res at step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf at circ@res at step-2\ht\pgfnodeparttextbox}}
+ \pgf at x=0pt
+ \pgf at y=-2\pgf at circ@res at step
+ \advance \pgf at y by -1.5\ht\pgfnodeparttextbox
+ \pgf at x=-.5\wd\pgfnodeparttextbox
+ }
+
+\behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/vcc/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{-.8\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{-.8\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+
+% match
+\pgfdeclareshape{match}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf at x=\ctikzvalof{monopoles/match/width}\pgf at circ@Rlen
+ \pgf at x=1.5\pgf at x
+ \advance \pgf at x by -.5\wd\pgfnodeparttextbox
+ \pgf at y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf at circ@res at step=\ctikzvalof{monopoles/match/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf at circ@res at step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf at circ@res at step}{0.5\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{2\pgf at circ@res at step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+
+
+\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
+ \pgfdeclareshape{#3shape}{
+
+ \savedanchor{\northeast}{
+ \pgf at y=#4\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=#5\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf at y=#4\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\ctikzvalof{bipoles/border margin}\pgf at y
+ \pgf at x=#5\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at x=\ctikzvalof{bipoles/border margin}\pgf at x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf at y=-#2\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\ctikzvalof{bipoles/border margin}\pgf at y
+ \pgf at x=-#5\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at x=\ctikzvalof{bipoles/border margin}\pgf at x
+ }
+ \savedanchor{\southwest}{
+ \pgf at y=-#2\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-#5\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf at circ@res at down=-#2\pgf at circ@Rlen
+ \pgf at circ@res at up=#4\pgf at circ@Rlen
+ \pgfpointorigin
+ \pgf at y=\pgf at circ@res at up
+ \advance\pgf at y by\pgf at circ@res at down
+ \pgf at y=.5\pgf at y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf at x=0cm
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf at x=-\pgf at x
+ }
+ \anchor{e}{%
+ \northeast
+ \pgf at y=0cm
+ }
+ \anchor{s}{%
+ \southwest
+ \pgf at x=0cm
+ }
+ \anchor{se}{%
+ \southwest
+ \pgf at x=-\pgf at x
+ }
+ \anchor{sw}{%
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf at x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf at y=0cm
+ }
+ \anchor{south}{%
+ \southwest
+ \pgf at x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf at y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf at x=0cm
+ }
+ \anchor{left}{%
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{below}{%
+ \southwest
+ \pgf at x=0cm
+ }
+ \anchor{a}{%
+ \northeast
+ \pgf at y=0cm
+ }
+ \anchor{b} {
+ \southwest
+ \pgf at y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf at y=\ht\pgfnodeparttextbox
+ \pgf at x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{%
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf at circuit@bipole at inverted
+ \pgf at circ@res at left=-\pgf at x
+ \pgf at circ@res at right=-\pgf at y
+ \else
+ \pgf at circ@res at left=\pgf at x
+ \pgf at circ@res at right=\pgf at y
+ \fi
+ \ifdim\pgf at circ@res at right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at right}}{\pgfpoint{-\pgf at x}{-\pgf at y}}
+ \fi
+ }
+
+ #1
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northeast
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at zero = 0cm
+ \pgf at circ@res at left = -\pgf at x
+ \pgf at circ@res at right = \pgf at x
+ \southwest
+ \pgf at circ@res at down = \pgf at y
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #6
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+
+%% Resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf at circ@res at step}{\ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf at circ@res at step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+
+
+%% Variable resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf at circ@res at step}{\ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf at circ@res at step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf at circ@res at zero}}
+
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/capacitor/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+
+%% Polar Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/pcapacitor/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf at circ@res at up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf at circ@res at left}}
+ \pgfpathcosine{\pgfpoint{\pgf at circ@res at up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf at circ@res at left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+}
+
+%% Electrolytic Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/ecapacitor/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 5
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{black}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf at circ@res at left}{.6\pgf at circ@res at up}]
+ {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
+}
+
+%% Battery
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/battery/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 6
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at step}{.5\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{.5\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1 % poles with equl thickness
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at right}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf at circ@res at right}{.5\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+%% Battery 2 % negative pole thicker
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery2/height}}{battery2}{\ctikzvalof{bipoles/battery2/height}}{\ctikzvalof{bipoles/battery2/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf at circ@res at right}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf at circ@res at right}{.5\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+
+%% cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf at circ@res at other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf at circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf at circ@res at step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf at circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf at circ@res at other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf at circ@res at step and \pgf at circ@res at up}
+ \pgfpatharc{0}{-180}{\pgf at circ@res at other and -\pgf at circ@res at down}
+ }
+ \pgfpatharc{180}{0}{\pgf at circ@res at step and \pgf at circ@res at up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf at circ@res at other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf at circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf at circ@res at step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf at circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf at circ@res at other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf at circ@res at step and .5\pgf at circ@res at up}
+ \pgfpatharc{0}{-180}{\pgf at circ@res at other and -.5\pgf at circ@res at down}
+ }
+ \pgfpatharc{180}{0}{\pgf at circ@res at step and .5\pgf at circ@res at up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
+ \pgf at circ@res at step=\ctikzvalof{bipoles/americaninductor/width}\pgf at circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf at circ@res at step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf at circ@res at step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf at circ@res at step by 2
+ \pgf at circ@res at other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf at circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf at circ@res at step and \pgf at circ@res at other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
+ \pgf at circ@res at step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf at circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf at circ@res at step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf at circ@res at step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf at circ@res at step by 2
+ \pgf at circ@res at other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf at circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf at circ@res at step and \pgf at circ@res at other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Independent voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent voltage source - American style
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+ \ifpgf at circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf at circ@res at down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf at circ@res at up]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf at circ@res at down]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf at circ@res at up]{$+$}
+ \fi
+}
+
+
+
+%% Independent sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf at circ@res at up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf at circ@res at up}{0.75\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at up}{-0.75\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1\pgf at circ@res at up}{0\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% Square Voltage source - contributed by Alistair Kwan
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf at circ@res at up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf at circ@res at up}{1\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0\pgf at circ@res at up}{1\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0\pgf at circ@res at up}{-1\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1\pgf at circ@res at up}{-1\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1\pgf at circ@res at up}{0\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf at circ@res at up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf at circ@res at up}{0.75\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at up}{-0.75\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1\pgf at circ@res at up}{0\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% PV Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf at circ@res at right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf at circ@res at left}{.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf at circ@res at left}{.4\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf at circ@res at right}{.6\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf at circ@res at right}{.6\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf at circ@res at left}{0}}{\pgfpointpolar{-45}{2.2\pgf at circ@res at up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf at circ@res at left}{0}}{\pgfpointpolar{-45}{1.3\pgf at circ@res at up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf at circ@res at up}}{\pgfpointpolar{-45}{2.2\pgf at circ@res at up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf at circ@res at up}}{\pgfpointpolar{-45}{1.3\pgf at circ@res at up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0}}\pgfpatharc{0}{90}{0.85\pgf at circ@res at right and \pgf at circ@res at up}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0}}\pgfpatharc{0}{-90}{0.85\pgf at circ@res at right and \pgf at circ@res at up}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0}}\pgfpatharc{180}{270}{0.85\pgf at circ@res at right and \pgf at circ@res at up}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0}}\pgfpatharc{180}{90}{0.85\pgf at circ@res at right and \pgf at circ@res at up}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ \pgfscope
+
+ \pgftransformshift{\pgfpoint{.5\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf at circ@res at up}{.5\pgf at circ@res at left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at up}{.5\pgf at circ@res at right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf at circ@res at down}{.5\pgf at circ@res at left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at down}{.5\pgf at circ@res at right}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+%% Independent double oo source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf at circ@res at left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf at circ@res at left}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf at circ@res at right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf at circ@res at right}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+
+%% Independent sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfusepath{draw}
+
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Controlled voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled voltage source - American
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+
+ \ifpgf at circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf at circ@res at left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf at circ@res at right]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf at circ@res at left]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf at circ@res at right]{$+$}
+ \fi
+}
+
+
+%% Controlled sinusoidal voltage source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Controlled sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf at circ@res at up = .5\pgf at circ@res at up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{.5\pgf at circ@res at up}{-.5\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Controlled current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at zero}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Black generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-1.8\pgf at circ@res at left}{\pgf at circ@res at down-0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-0.2\pgf at circ@res at left}{\pgf at circ@res at up-0.5\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{.6\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-1.4\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-1.4\pgf at circ@res at left}{.6\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{2\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf at circ@res at right}{0.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf at circ@res at right}{1.8\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{2\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf at circ@res at right}{0.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf at circ@res at right}{1.8\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+ \pgf at circ@res at temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf at circ@res at temp}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{\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 right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Empty generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-0.6\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-1.8\pgf at circ@res at left}{\pgf at circ@res at down-0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-0.2\pgf at circ@res at left}{\pgf at circ@res at up-0.5\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{.6\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-1.4\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-1.4\pgf at circ@res at left}{.6\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-.6\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{2\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf at circ@res at right}{0.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf at circ@res at right}{1.8\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at left}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{2\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf at circ@res at right}{0.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf at circ@res at right}{1.8\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+
+\pgfcircdeclarebipole{
+ \anchor{strokepathstart}{
+ \northeast
+ \pgf at y=0cm
+ \advance\pgf at x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
+ \advance\pgf at x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
+ }
+ \anchor{strokepathend}{
+ \northeast
+ \pgf at y=0cm
+ }
+ }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+ \pgf at circ@res at temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf at circ@res at temp}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{0pt}}
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-2\pgf at circ@res at temp}{\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 right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% (Closing) SPST
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spst/depth}}{cspst}{\ctikzvalof{bipoles/spst/height}}{\ctikzvalof{bipoles/spst/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{.2\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at right}{0\pgf at circ@res at down}}
+ \pgfpatharcto{1.2\pgf at circ@res at right}{1.2\pgf at circ@res at right}{0}{0}{1}{\pgfpoint{.9\pgf at circ@res at left}{.9\pgf at circ@res at up}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Opening SPST
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spst/depth}}{ospst}{\ctikzvalof{bipoles/spst/height}}{\ctikzvalof{bipoles/spst/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
+ \pgfpatharcto{1.1\pgf at circ@res at right}{1.1\pgf at circ@res at right}{0}{0}{1}{\pgfpoint{.7\pgf at circ@res at left}{.9\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf at circ@res at left}{1\pgf at circ@res at up}}
+ \pgfsetarrowsend{latex'}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Normal open Switch
+\pgfcircdeclarebipole{}{0}{nos}{\ctikzvalof{bipoles/nos/height}}{\ctikzvalof{bipoles/nos/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+}
+
+%% Normal closed Switch
+\pgfcircdeclarebipole{}{0}{ncs}{\ctikzvalof{bipoles/ncs/height}}{\ctikzvalof{bipoles/ncs/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% Push Button
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{.5\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf at circ@res at right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+% % METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf at circ@temp{right}
+ \ifx\tikz at res@label at pos\pgf at circ@temp
+ \pgf at circ@res at step=-1.2\pgf at circ@res at up
+ \else
+ \def\pgf at circ@temp{below}
+ \ifx\tikz at res@label at pos\pgf at circ@temp
+ \pgf at circ@res at step=-1.2\pgf at circ@res at up
+ \else
+ \pgf at circ@res at step=1.2\pgf at circ@res at up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf at circ@res at up}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%AMPEREMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{V}}{}{}
+
+}
+
+%% Short circuit
+
+\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
+
+%% Open circuit
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
+
+}
+
+%% Generic bipole - used as resistor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
+
+ %\pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ %\divide \pgf at circ@res at step by 14
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+%% fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0}}
+ \pgfusepath{draw}
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+
+%% Generic bipole, filled - used as inductor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
+
+ %\pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ %\divide \pgf at circ@res at step by 14
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+
+%% Generic asymmetric bipole
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
+ %\pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ %\divide \pgf at circ@res at step by 14
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf at circ@res at right}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+%% asymmetric fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0}}
+ \pgfusepath{draw}
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf at circ@res at right}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Memristor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 14
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf at circ@res at left}{\ctikzvalof{bipoles/memristor/wave height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf at circ@res at left}{\ctikzvalof{bipoles/memristor/wave height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf at circ@res at left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf at circ@res at left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf at circ@res at left}{\ctikzvalof{bipoles/memristor/wave height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf at circ@res at right}{\ctikzvalof{bipoles/memristor/wave height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf at circ@res at right}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Generic empty tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{.4\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{.4\pgf at circ@res at down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Photoresistor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}{\pgfpoint{\pgf at circ@res at right}{-\pgf at circ@res at down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.7\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf at circ@res at right}{-1.2\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf at circ@res at right}{-1.2\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Thermistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf at circ@res at up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Thermistor PTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf at circ@res at up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{-\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf at circ@res at left,y=.75\pgf at circ@res at down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf at circ@res at left}{.7\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf at circ@res at left}{.7\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf at circ@res at up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{-\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf at circ@res at left,y=.75\pgf at circ@res at down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf at circ@res at left}{.7\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf at circ@res at left}{.7\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+%% thermocouple
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{.5\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{.5\pgf at circ@res at down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{.5\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0}}
+ \pgfusepath{draw}
+}
+
+%% Varistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf at circ@res at up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf at circ@res at left,y=1.2\pgf at circ@res at down]{{\tiny\textsf{U}}}
+}
+
+
+
+%% Generic full tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{.4\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{.4\pgf at circ@res at down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+
+
+%% Variable Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
+ %\pgf at circ@res at step = \ctikzvalof{bipoles/vcapacitor/width}\pgf at circ@Rlen
+ \pgf at circ@res at step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf at circ@res at right
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at step}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/piezoelectric/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 5
+
+ %% Outer markings
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left+4}{\pgf at circ@res at up-1}}{\pgfpoint{\pgf at circ@res at right-4}{\pgf at circ@res at down+1}}
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
+
+\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+
+%% The output routine
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf at circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf at temp{diamond} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztostart) node[diamondpole] {}
+ \else
+ \pgfextra{ \def\pgf at temp{empty} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztostart) node[ocirc] {}
+ \else
+ \pgfextra{ \def\pgf at temp{full} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztostart) node[circ] {}
+ \else
+ \pgfextra{ \def\pgf at temp{rectjoinfill} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztostart) node[rectjoinfill] {}
+ \else
+ \fi
+ \fi
+ \fi
+ \fi
+ \pgfextra{ \edef\pgf at circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf at temp{diamond} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztotarget) node[diamondpole] {}
+ \else
+ \pgfextra{ \def\pgf at temp{empty} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztotarget) node[ocirc] {}
+ \else
+ \pgfextra{ \def\pgf at temp{full} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztotarget) node[circ] {}
+ \else
+ \pgfextra{ \def\pgf at temp{rectjoinfill} }
+ \ifx\pgf at temp\pgf at circ@temp
+ (\tikztotarget) node[rectjoinfill] {}
+ \else
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+
+
+%% Lamp
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf at circ@res at left}{.7071*\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf at circ@res at right}{.7071*\pgf at circ@res at down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf at circ@res at left}{.7071*\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf at circ@res at right}{.7071*\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
+ }{tline}{\ctikzvalof{bipoles/tline/height}
+ }{\ctikzvalof{bipoles/tline/width}
+ }
+ {
+ \pgf at circ@res at step=.2\pgf at circ@res at right % half x axis
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at step}{0}}
+ {\pgfpoint{\pgf at circ@res at step}{0}}
+ {\pgfpoint{0}{-\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left+\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfpatharc{-90}{90}{-\pgf at circ@res at step and -\pgf at circ@res at up}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% SQUID added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf at circ@res at left}{1.35*\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf at circ@res at right}{0.65*\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf at circ@res at left}{0.65*\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf at circ@res at right}{1.35*\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf at circ@res at left}{1.35*\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf at circ@res at right}{0.65*\pgf at circ@res at down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf at circ@res at left}{0.65*\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf at circ@res at right}{1.35*\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf at circ@res at left}{0.35*\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf at circ@res at right}{0.35*\pgf at circ@res at down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf at circ@res at left}{0.35*\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf at circ@res at right}{0.35*\pgf at circ@res at up}}
+
+ \pgfusepath{draw}
+}
+
+
+% Contributed by Danilo Piazzalunga
+
+\pgfdeclareshape{buffer}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at y=-\pgf at y
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+\pgfdeclareshape{plain amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at y=-\pgf at y
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \savedanchor\up{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ {\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf at circ@res at up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%% Generic two port box
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/twoport/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/vco/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf at circ@res at step}{0\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+}
+
+%% bandpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
+
+ \pgf at circ@res at step = \ctikzvalof{bipoles/bandpass/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{0.35\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{0.65\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{-0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{-0.65\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{-0.35\pgf at circ@res at step}}
+ \pgfusepath{draw}
+}
+
+%% bandstop filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandstop/width}}{bandstop}{\ctikzvalof{bipoles/bandstop/width}}{\ctikzvalof{bipoles/bandstop/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/bandstop/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt}% always draw solid line for inner symbol
+ \pgfsetarrows{-}%never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{-0.15\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{0.15\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{-0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/highpass/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{-0.15\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{0.15\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{-0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{-0.65\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{-0.35\pgf at circ@res at step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/lowpass/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{0.35\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{0.65\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf at circ@res at step}{-0.15\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf at circ@res at step}{0.15\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{-0.5\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.25\pgf at circ@res at step}{-.25\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf at circ@res at step}{.25\pgf at circ@res at step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/adc/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf at circ@res at left,y=0.45\pgf at circ@res at up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf at circ@res at right,y=0.45\pgf at circ@res at down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/dac/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf at circ@res at left,y=0.45\pgf at circ@res at up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf at circ@res at right,y=0.45\pgf at circ@res at down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/dsp/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/fft/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf at circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{amp}{
+ \ifpgf at circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf at circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/amp/width}\pgf at circ@Rlen
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf at circuit@boxed
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf at circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf at circ@res at step=.7\pgf at circ@res at step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0.55\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf at circ@res at step}{-0.55\pgf at circ@res at step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf at circ@res at step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf at circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{vamp}{
+ \ifpgf at circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf at circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/amp/width}\pgf at circ@Rlen
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf at circuit@boxed
+ \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf at circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf at circ@res at step=.7\pgf at circ@res at step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf at circ@res at step}{0.55\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf at circ@res at step}{-0.55\pgf at circ@res at step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf at circ@res at step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf at circ@res at step}{-0.5\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at step}{0.6\pgf at circ@res at step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/piattenuator/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf at circ@res at left}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf at circ@res at right}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf at circ@res at left}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf at circ@res at right}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf at circ@res at left}{0.5\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf at circ@res at right}{0.8\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/tattenuator/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/vtattenuator/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf at circ@res at left}{0.5\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf at circ@res at right}{0.8\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/phaseshifter/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf at circ@res at left}{0.65\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf at circ@res at right}{0.65\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
+ \pgf at circ@res at step = \ctikzvalof{bipoles/detector/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+
+ \ifpgf at circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@inputarrow
+ {
+ \advance \pgf at circ@res at left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf at inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf at circ@res at left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf at circ@res at right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@fulldiode
+ \pgfmathparse{2\pgf at circ@res at up / \pgf at circ@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf at fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf at circ@res at up / \pgf at circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf at emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+
+
+
+%% european gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
+
+ %\pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ %\divide \pgf at circ@res at step by 14
+
+ \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}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf at circ@res at left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+
+
+
+%% american gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+ %\def\pgf at circ@temp{right}
+ %\ifx\tikz at res@label at pos\pgf at circ@temp
+ % \pgf at circ@res at step=-1.2\pgf at circ@res at up
+ %\else
+% \def\pgf at circ@temp{below}
+% \ifx\tikz at res@label at pos\pgf at circ@temp
+% \pgf at circ@res at step=-1.2\pgf at circ@res at up
+% \else
+% \pgf at circ@res at step=1.2\pgf at circ@res at up
+% \fi
+% \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpointorigin \pgf at circ@res at other = \pgf at x \advance \pgf at circ@res at other by -\pgf at circ@res at up
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf at circ@res at up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{}{}{}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf at circ@res at right}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ %\pgftransformshift{\pgfpoint{.25\pgf at circ@res at left}{.45\pgf at circ@res at down}}
+ %\pgfnode{circ}{center}{}{}{}
+ %\pgftransformshift{}
+ \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf at circ@res at down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf at circ@res at down}
+ \pgfusepath{fill}
+}
+
+% % MECHANICAL SYMBOLS
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf at circ@res at step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf at circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf at circ@res at zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf at circ@res at up}{.5\pgf at circ@res at up}}
+ \pgf at circ@res at other = \pgf at circ@res at left
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \advance\pgf at circ@res at other by 2\pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \advance\pgf at circ@res at other by \pgf at circ@res at step
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{-2\pgf at circ@res at down}{-2\pgf at circ@res at down}}
+
+\pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+\pgfpathlineto{\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 up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf at circ@res at right}
+ {\pgf at circ@res at zero}}
+ \pgfusepath{stroke}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\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 up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf at circ@res at right}
+ {.8\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf at circ@res at right}
+ {.8\pgf at circ@res at up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+
+
+\pgfdeclareshape{spdt}
+ {
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf at circ@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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \pgf at circ@res at other = \pgfkeysvalueof{/tikz/circuitikz/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}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf at circ@res at other}{-100pt}}}
+ {\pgfpoint{-.05\pgf at circ@res at up}{-.05\pgf at circ@res at up}}
+ }
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+
+
+
+
+
+
+\long\def\pgfcircdeclarelogicport#1#2{
+ \pgfdeclareshape{american #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ #2
+
+ }
+ }
+}
+
+
+\pgfcircdeclarelogicport{and}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at right}
+ {.5\pgf at circ@res at down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at right}
+ {0pt}}
+ \pgfpathcurveto
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at right}
+ {.5\pgf at circ@res at up}}
+ {\pgfpoint{.0\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{nand}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgf at circ@res at step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf at circ@res at right
+ \pgf at circ@res at other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at right
+
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{.5\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{.5\pgf at circ@res at up}}
+ {\pgfpoint{.0\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ \pgfpathellipse
+ {\pgfpoint{\pgf at circ@res at other-.5\pgf at circ@res at step}{0pt}}
+ {\pgfpoint{.5\pgf at circ@res at step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{nor}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf at circ@res at right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf at circ@res at other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf at circ@res at right
+ \pgf at circ@res at step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf at circ@res at right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf at circ@res at left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf at circ@res at other-.5\pgf at circ@res at step}{0pt}}
+ {\pgfpoint{.5\pgf at circ@res at step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+}
+
+
+
+
+\pgfcircdeclarelogicport{or}{
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf at circ@res at right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf at circ@res at other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf at circ@res at right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf at circ@res at left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@res at other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{xor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf at circ@res at right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf at circ@res at other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf at circ@res at right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf at circ@res at left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@res at other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+
+ \def\pgf at circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf at circ@res at right+}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@temp-\pgf at circ@res at other}{\pgf at circ@res at up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf at circ@res at left}{.95*\pgf at circ@res at up}}
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf at circ@res at left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf at circ@res at left}{.95*\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@temp-\pgf at circ@res at other}{.95*\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{xnor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf at circ@res at right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf at circ@res at other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf at circ@res at right
+ \pgf at circ@res at step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf at circ@res at right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf at circ@res at left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@res at other-\pgf at circ@res at step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{-\pgf at circ@res at other}{\pgf at circ@res at up}}
+
+ \def\pgf at circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf at circ@res at right+}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@temp-\pgf at circ@res at other}{\pgf at circ@res at up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf at circ@res at left}{.95*\pgf at circ@res at up}}
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf at circ@res at up}}
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf at circ@res at left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf at circ@res at left}{.95*\pgf at circ@res at down}}
+ {\pgfpoint{\pgf at circ@temp-\pgf at circ@res at other}{.95*\pgf at circ@res at down}}
+
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf at circ@res at other-.5\pgf at circ@res at step}{0pt}}
+ {\pgfpoint{.5\pgf at circ@res at step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{american not port}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgf at circ@res at other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf at circ@res at right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf at circ@res at step-.5\pgf at circ@res at other}{0pt}}
+ {\pgfpoint{.5\pgf at circ@res at other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf at circ@res at other}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+\pgfdeclareshape{invschmitt}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgf at circ@res at other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf at circ@res at right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf at circ@res at step-.5\pgf at circ@res at other}{0pt}}
+ {\pgfpoint{.5\pgf at circ@res at other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf at circ@res at other}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{.3\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf at circ@res at left}{.3\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf at circ@res at left}{.3\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ }
+ }
+
+\pgfdeclareshape{schmitt}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgf at circ@res at other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf at circ@res at right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right-\pgf at circ@res at other}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{.3\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf at circ@res at left}{.3\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf at circ@res at left}{.3\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf at circ@res at left}{.3\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 - is it a not
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-.8\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \def\pgf at temp{1}
+ \def\pgf at circ@temp{#3}
+ \ifx\pgftemp\pgf at circ@temp % one input
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at left}{0pt}}
+ \else % two inputs
+ \pgfpathmoveto{
+ \pgfpoint{\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf at circ@res at up}}
+ %
+ \pgfpathmoveto{
+ \pgfpoint{\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf at circ@res at down}}
+ \fi%
+ %
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at right}{0pt}}
+ %
+ \edef\pgf at temp{not}
+ \edef\pgf at circ@temp{#4}
+ \ifx\pgf at temp\pgf at circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf at circ@res at up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ %
+ %
+ %
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+%
+%
+ }
+ }
+}
+
+
+
+\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf at y=0pt
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf at circ@Rlen
+ }
+ \anchor{text}{
+ \northeast
+ \pgf at y=.7\pgf at y
+ \pgf at x= \pgf at circ@Rlen
+ \pgf at x=0.1\pgf at x
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf at y=-\pgf at y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf at circ@res at step=\pgf at y
+ \left
+ \pgf at y=\pgf at circ@res at step
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf at y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf at circ@res at step=\pgf at y
+ \left
+ \pgf at y=-\pgf at circ@res at step
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf at circ@res at step=\pgf at y
+ \left
+ \pgf at y=-\pgf at circ@res at step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf at circ@res at step=\pgf at y
+ \left
+ \pgf at y=\pgf at circ@res at step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf at y=-\pgf at y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf at circ@res at step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at y
+ \left
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at circ@res at step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf at circ@res at step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at y
+ \left
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at circ@res at step
+ }
+ \anchor{G}{
+ \northeast
+ \pgf at circ@res at step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at y
+ \left
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at circ@res at step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf at circ@res at step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at y
+ \left
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at circ@res at step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf at x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf at x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf at y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf at y
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
+ \pgf at circuit@trans at ntypetrue
+ \else
+ \pgf at circuit@trans at ntypefalse
+ \fi
+ \northeast
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = \pgf at x
+ \left
+ \pgf at circ@res at left = \pgf at x
+ %
+ #3
+ % BODY DIODE
+ \ifpgf at circuit@fet at bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+ }
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf at circ@res at left}{\pgf at circ@res at up+\pgf at circ@res at down}}
+ \pgftransformrotate{90}
+ \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
+ \ifpgf at circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf at bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf at bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpointanchor{pgf at bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf at circ@res at up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpointanchor{pgf at bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf at circ@res at down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{}{
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf at circuit@trans at ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf at circ@res at down}%
+ }{%
+ \pgfpoint{\pgf at circ@res at right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf at circ@res at right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf at circ@res at up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf at circuit@bpt at drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ {\pgfpoint{0.05\pgf at circ@res at left}{0.1\pgf at circ@res at up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ {\pgfpoint{0.5\pgf at circ@res at left}{0.3\pgf at circ@res at up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ {\pgfpoint{0.05\pgf at circ@res at left}{-0.1\pgf at circ@res at up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ {\pgfpoint{0.5\pgf at circ@res at left}{0.1\pgf at circ@res at up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf at circuit@bpt at drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ \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
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+
+\long\def\declareigbt#1{
+\pgfcircdeclaretransistor{#1}{}
+{
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf at circuit@trans at ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf at circ@res at down}%
+ }{%
+ \pgfpoint{\pgf at circ@res at right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf at circ@res at right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf at circ@res at up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf at circuit@trans at ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at up}}
+ \fi
+ \pgfusepath{draw}
+}
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+
+\pgfcircdeclaretransistor{nmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf at circ@res at down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf at circuit@mos at arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at down}%
+ }{%
+ \pgfpoint
+ {\pgf at circ@res at right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf at circ@res at down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \ifpgf at circuit@bpt at drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ \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
+}
+
+
+\pgfcircdeclaretransistor{pmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \ifpgf at circuit@mos at arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgf at circ@res at right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf at circ@res at down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf at circuit@bpt at drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ \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}
+ \fi
+ \pgfusepath{draw,fill}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up}}
+ \ifpgf at circuit@trans at depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf at circ@res at down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf at circ@res at down}}
+ \fi
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf at circ@res at right}%
+ {\pgf at circ@res at up+\pgf at circ@res at down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf at circ@res at left}%
+ {\pgf at circ@res at up+\pgf at circ@res at down}%
+ }
+ \ifpgf at circuit@trans at ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \ifpgf at circuit@bpt at drawgate
+ \ifpgf at circuit@trans at ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf at circ@res at left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf at circ@res at down}}
+ \fi
+ \pgfusepath{draw}
+ \fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf at x=0pt}
+ \anchor{B}{\left\pgf at x=0pt}%override Base anchor from npn&igbt
+ #2
+ }
+ {#3}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf at circuit@trans at depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf at circuit@trans at depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf at circuit@trans at depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf at circuit@fet at solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf at circ@res at down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf at circuit@trans at depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf at circuit@fet at solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf at circ@res at down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf at circuit@trans at depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf at circuit@fet at solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf at circ@res at down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf at circuit@trans at depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf at circuit@fet at solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf at circ@res at up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf at circuit@trans at depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf at circuit@trans at depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf at circuit@fet at solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf at circ@res at up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf at circ@res at down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint{\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at down}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf at circ@res at down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaretransistor{pjfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf at circ@res at down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at up}%
+ }{%
+ \pgfpoint{\pgf at circ@res at left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf at circ@res at up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf at circ@res at down}}
+ \pgfsetlinewidth{2\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf at circ@res at left}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+.5\pgflinewidth}
+ {\pgf at circ@res at up+\pgf at circ@res at down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf at circ@res at down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % GATE
+ %\pgfscope
+ %\pgfpathmoveto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf at circ@res at left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf at circ@res at up}}
+ %\pgfpathlineto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf at circ@res at left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf at circ@res at down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ %\pgfusepath{draw}
+ %\endpgfscope
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf at circuit@fet at solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf at circ@res at down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf at circ@res at right}%
+ {\pgf at circ@res at up+\pgf at circ@res at down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf at circ@res at left}%
+ {\pgf at circ@res at up+\pgf at circ@res at down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf at circ@res at up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf at circ@res at up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Black thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf at y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf at circ@res at other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf at circ@res at left
+ \pgf at circ@res at step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf at circ@res at right
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at other}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf at circ@res at step-2*\pgf at circ@res at other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf at circ@res at step-2*\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf at y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf at circ@res at other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf at circ@res at left
+ \pgf at circ@res at step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf at circ@res at right
+
+ \pgfscope
+ \pgftransformxshift{\pgf at circ@res at other}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step-\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf at circ@res at step-2*\pgf at circ@res at other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf at circ@res at step-2*\pgf at circ@res at other}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf at y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf at circ@res at other = \ctikzvalof{tripoles/triac/diode width left}\pgf at circ@res at left
+ \pgf at circ@res at step = \ctikzvalof{tripoles/triac/diode width right}\pgf at circ@res at right
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf at circ@res at step}{0.707*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{-1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf at circ@res at other}{-0.707*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{-0.707*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{-1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf at y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf at y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf at circ@res at other = \ctikzvalof{tripoles/triac/diode width left}\pgf at circ@res at left
+ \pgf at circ@res at step = \ctikzvalof{tripoles/triac/diode width right}\pgf at circ@res at right
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf at circ@res at step}{0.707*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{-1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf at circ@res at other}{-0.707*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{-1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{-0.707*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{-1.414*(\pgf at circ@res at other-\pgf at circ@res at step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf at y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf at y=.8\pgf at y
+ }
+}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf at circ@res at left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf at circ@res at left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{.5\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf at circ@res at right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf at circ@res at right}{.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf at circ@res at right}{.15\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf at circ@res at up}{.04\pgf at circ@res at up}{.7\pgf at circ@res at up}{.04\pgf at circ@res at up}{.8\pgf at circ@res at up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf at circ@res at left}{.6\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+
+
+
+
+
+
+
+
+
+\pgfdeclareshape{op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf at x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at x
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \savedanchor\up{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ {\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-\pgf at x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%op amp shape as in european standard en 60617
+\pgfdeclareshape{en amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{leftedge}
+ {
+ \left
+ \pgf at x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf at x
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-\pgf at x
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at circ@res at up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font} $-$}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at circ@res at down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf at circ@res at down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgftext[base,y=-3ex,at=\pgfpoint{.3\pgf at circ@res at left}{\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font2} $\triangleright$}
+ \pgftext[base,y=-3ex,at=\pgfpoint{.3\pgf at circ@res at right}{\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font2} $\infty$}
+ }
+}
+
+%%Transkonduktanzverstärker
+\pgfdeclareshape{gm amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at y=-\pgf at y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf at x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at x
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \savedanchor\up{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ {\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-\pgf at x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at circ@res at up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at circ@res at down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf at circ@res at down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf at circ@res at right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0}} %geändert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{.5\pgf at circ@res at up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}} %bei deneigängen runter
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{.5\pgf at circ@res at down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ }
+ }
+
+
+
+%% Potentiometer
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf at y}
+ }
+ \anchor{W}{
+ \northeast
+ \pgfpoint{0pt}{\pgf at y}
+ }
+}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
+\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+\pgftransformationadjustments
+\pgfmathsetlength{\pgf at circ@res at step}{\ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+\divide \pgf at circ@res at step by 12
+
+\pgfpathmoveto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf at circ@res at zero}}
+
+\pgf at circ@res at other = \pgf at circ@res at left
+\advance\pgf at circ@res at other by \pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{-\pgf at circ@res at down}}
+\advance\pgf at circ@res at other by 2\pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+\advance\pgf at circ@res at other by 2\pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{-\pgf at circ@res at down}}
+\advance\pgf at circ@res at other by 2\pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+\advance\pgf at circ@res at other by 2\pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{-\pgf at circ@res at down}}
+\advance\pgf at circ@res at other by 2\pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at down}}
+\advance\pgf at circ@res at other by \pgf at circ@res at step
+\pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at zero}}
+\pgfsetbeveljoin
+\pgfusepath{draw}
+
+\pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at down}}
+ \pgfusepath{draw}
+\endpgfscope
+}
+
+
+
+
+
+%% Generic tunable
+
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf at y}
+ }
+}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
+
+ \pgf at circ@res at step = \ctikzvalof{bipoles/resistor/width}\pgf at circ@Rlen
+ \divide \pgf at circ@res at step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at down}}{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf at circ@res at down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+\pgfdeclareshape{mixer}
+{
+ \savedanchor\northwest{
+ \ifpgf at circuit@boxed
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \else
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf at y=\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf at circ@res at step=\ctikzvalof{tripoles/mixer/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf at circuit@boxed
+ \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf at circuit@boxed
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedanchor\northwest{
+ \ifpgf at circuit@boxed
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \else
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf at y=\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \pgf at x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf at circ@res at step=\ctikzvalof{tripoles/adder/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf at circuit@boxed
+ \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf at circuit@boxed
+ \pgf at circ@res at step=.7\pgf at circ@res at step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf at circ@res at step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf at circ@res at step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf at circ@res at step}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedanchor\northwest{
+ \ifpgf at circuit@boxed
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \else
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf at circ@Rlen
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at x=.5\pgf at x
+ \pgf at y=-\pgf at y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{text}{
+ \pgf at x=-2\pgf at x
+ \advance \pgf at x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf at y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf at circ@res at step=\ctikzvalof{tripoles/oscillator/width}\pgf at circ@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf at circ@res at step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf at circuit@boxed{}
+ \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf at circuit@boxed
+ \pgf at circ@res at step=.7\pgf at circ@res at step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf at circ@res at step}{0\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.15\pgf at circ@res at step}{.15\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf at circ@res at step}{-.15\pgf at circ@res at step}}
+ \pgfpathsine{\pgfpoint{.15\pgf at circ@res at step}{-.15\pgf at circ@res at step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf at circ@res at step}{.15\pgf at circ@res at step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedanchor\northwest{
+ \ifpgf at circuit@boxed
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \else
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf at y=-\pgf at y
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf at circ@res at step=\ctikzvalof{tripoles/circulator/width}\pgf at circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf at circuit@boxed
+ \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf at circuit@boxed{}
+ \pgf at circ@res at step=.7\pgf at circ@res at step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf at circ@res at step}
+ \pgfusepath{draw}
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf at circ@res at step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf at circ@res at step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf at circ@res at step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \anchor{center}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x= \pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf at x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \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
+ }
+ \anchor{in}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=-0.5\pgf at y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=0.5\pgf at y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf at y by 0.5\ht\pgfnodeparttextbox
+ \pgf at x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at right}{0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf at circ@res at right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf at circuit@europeanresistor
+ \pgfmathparse{\pgf at circ@res at up / \pgf at circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{pgf at generic}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf at circ@res at up / \pgf at circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{pgf at resistor}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf at circ@res at right}{0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at right}{0.25\pgf at circ@res at up}}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf at circ@res at right}{0.25\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+% electromechanical device (motor/generator)
+\pgfdeclareshape{elmech}
+{
+ \savedanchor\northwest{
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf at x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf at y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf at x=0pt
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf at circ@res at step=\ctikzvalof{tripoles/elmech/width}\pgf at circ@Rlen
+ \pgf at circ@res at up=\ctikzvalof{tripoles/elmech/height}\pgf at circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf at circuit@boxed
+ % \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf at circuit@boxed
+ % \pgf at circ@res at step=.7\pgf at circ@res at step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ \pgfpathrectangle{\pgfpoint{-.25\pgf at circ@res at step}{-.5\pgf at circ@res at up}}{\pgfpoint{.5\pgf at circ@res at step}{\pgf at circ@res at up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf at circ@res at step}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{magnetron}
+{
+ \savedanchor\northwest{
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf at circ@res at step=\pgf at y
+ \pgfmathparse{cos(105)}
+ \pgf at x=\pgfmathresult\pgf at circ@res at step
+ \pgfmathparse{sin(105)}
+ \pgf at y=\pgfmathresult\pgf at circ@res at step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{105}{\pgf at circ@res at step}}%not working in a scaled tikzpicture
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf at circ@res at step=\pgf at y
+ \pgfmathparse{cos(75)}
+ \pgf at x=\pgfmathresult\pgf at circ@res at step
+ \pgfmathparse{sin(75)}
+ \pgf at y=\pgfmathresult\pgf at circ@res at step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{75}{\pgf at circ@res at step}}%not working in a scaled tikzpicture
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf at x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf at y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf at x=0pt
+ \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
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf at circ@res at step=\ctikzvalof{tripoles/magnetron/width}\pgf at circ@Rlen
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \pgfmathsetlength{\pgf at circ@res at other}{sin(15)*\pgf at circ@res at up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf at circuit@boxed
+ % \pgfnode{box}{center}{}{pgf at box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf at circuit@boxed
+ % \pgf at circ@res at step=.7\pgf at circ@res at step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf at circ@res at right}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw}
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf at circ@res at right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf at circ@res at right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0\pgf at circ@res at right}{.5\pgf at circ@res at down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{-\pgf at circ@res at other}{.5\pgf at circ@res at up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf at circ@res at left}{.5\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf at circ@res at right}{.5\pgf at circ@res at down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=.5\pgf at circ@Rlen
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf at x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf at y=-\pgf at y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf at x=-\pgf at x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=-\pgf at y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \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
+ }
+ \anchor{base}{
+ \northwest
+ \pgf at x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ #2
+
+ }
+ }
+}
+
+
+
+\def\pgf at circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf at x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf at x
+ \pgf at x=.7\pgf at x
+ \pgf at y=-\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf at y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf at x
+ \pgf at x=.7\pgf at x
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf at y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf at x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf at x
+ \pgf at x=.7\pgf at x
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf at y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf at x
+ \pgf at x=.7\pgf at x
+ \pgf at y=-\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf at y
+ }
+}
+
+\def\pgf at circ@drawtransformerbasicbody{
+ \def\stretto{.4}
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf at circ@res at left}%
+ {\pgf at circ@res at up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf at circ@res at left}%
+ {\pgf at circ@res at down}%
+ }
+
+ \edef\pgf at circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf at temp{european}%
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf at inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf at temp{cute}
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf at inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf at inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf at circ@res at right}%
+ {\pgf at circ@res at down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf at circ@res at right}%
+ {\pgf at circ@res at up}%
+ }
+
+ \edef\pgf at circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf at temp{european}%
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf at inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf at temp{cute}
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf at inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf at inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpointanchor{pgf at inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf at inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpointanchor{pgf at inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf at inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+ % contrib Kristofer M. Monisit
+
+ \pgfdeclareshape{fd op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at y=-\pgf at y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf at y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf at y=-\pgf at y
+ }
+ \savedanchor\up{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf at circ@Rlen
+ \pgf at x=.5\pgf at x
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}
+ {\pgf at circ@res at up}}
+ {\pgfpoint{.7\pgf at circ@res at right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf at y=-\pgf at y
+ }
+ \anchor{out +}{
+ \northwest
+ \pgf at y=.5\pgf at y
+ \pgf at x=-.7\pgf at x
+ }
+ \anchor{out -}{
+ \northwest
+ \pgf at y=-.5\pgf at y
+ \pgf at x=-.7\pgf at x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf at x=-\pgf at x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf at circ@res at left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf at circ@res at left}{.3\pgf at circ@res at down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf at circ@res at right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf at circ@res at up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf at circ@res at left}{.3\pgf at circ@res at up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfsetrectcap
+ % Draw them all!
+ \pgfusepath{draw}
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf at circ@res at left}
+ \pgf at circ@res at step=\pgf at circ@res at right
+ \advance\pgf at circ@res at step by -\pgf at circ@res at left
+ \pgf at circ@res at step=.7\pgf at circ@res at step
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+
+\pgfcircdeclarequadpole{transformer}{
+
+ \pgf at circ@drawtransformerbasicbody
+
+}{\pgf at circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf at circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf at circ@res at right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf at circ@res at down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf at circ@res at right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf at circ@res at up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf at circ@res at left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf at circ@res at down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf at circ@res at left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf at circ@res at up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf at circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \def\stretto{.4}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at left}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at left}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at right}{\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf at circ@res at right}{\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf at circ@res at left}{.7*\stretto\pgf at circ@res at down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf at circ@res at down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf at circ@res at right}{.7*\stretto\pgf at circ@res at up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf at circ@res at down}
+ \pgfusepath{draw}
+
+}{}
+
+%% four-port
+% defines a general outer box for four-ports
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarefourport#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf at y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf at circ@Rlen
+ \pgf at y=.5\pgf at y
+ \pgf at x=.5\pgf at circ@Rlen
+ \pgf at x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf at x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf at x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf at x=0pt
+ \pgf at y=-\pgf at y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf at y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf at y=0pt
+ \pgf at x=-\pgf at x
+ }
+ \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
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf at y=-0.5\pgf at y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=-0.5\pgf at y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=0.5\pgf at y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf at y=0.5\pgf at y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf at y=-0.5\pgf at y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=-0.5\pgf at y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf at x=-\pgf at x
+ \pgf at y=0.5\pgf at y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf at y=0.5\pgf at y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf at y by 0.5\ht\pgfnodeparttextbox
+ \pgf at x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf at circ@res at up = \pgf at y
+ \pgf at circ@res at down = -\pgf at y
+ \pgf at circ@res at right = -\pgf at x
+ \pgf at circ@res at left = \pgf at x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \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}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf at circ@res at step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0.5\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0.5\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf at circ@res at left}{0.4\pgf at circ@res at down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf at circ@res at right}{0.4\pgf at circ@res at up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf at circ@res at left}{0.4\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf at circ@res at right}{0.4\pgf at circ@res at down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0.5\pgf at circ@res at up}}
+ \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{0.5\pgf at circ@res at up}}
+ \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{0.5\pgf at circ@res at down}}
+ \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}
+
+
+}
+%%%---------- close: tex/pgfcircquadpoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf at circ@siunitx
+ \pgf at circ@handleSI{#1}
+ \ifpgf at circ@siunitx at res
+ \edef\pgf at temp{\pgf at circ@handleSI at val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf at temp}
+ \edef\pgf at temp{\pgf at circ@handleSI at unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf at temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf at circ@siunitx
+ \pgf at circ@handleSI{#1}
+ \ifpgf at circ@siunitx at res
+ \edef\pgf at temp{\pgf at circ@handleSI at val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf at temp}
+ \edef\pgf at temp{\pgf at circ@handleSI at unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf at temp}
+ \else
+ \fi
+ \else
+ \fi
+ }}
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+
+
+\def\pgf at circ@drawlabels#1{
+ \pgfextra{
+ \pgfmathsubtract{\pgf at circ@direction}{90}
+ \edef\pgf at circ@labanc{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+
+ \edef\pgf at circ@temp{\ctikzvalof{bipole/#1/position}}
+ \ifnum \pgf at circ@temp < 0
+ \pgfmathadd{\pgf at circ@labanc}{180}
+ \edef\pgf at circ@labanc{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ \fi
+ \ifpgf at circuit@bipole at inverted
+ \pgfmathadd{\pgf at circ@temp}{180} %If shape is inverted, use opposite anchor
+ \edef\pgf at circ@temp{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ \fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf at circ@temp}{180} %If shape is mirrored, use opposite anchor
+ \edef\pgf at circ@temp{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ \fi
+ }
+ %Firstly, place a coodinate directly at the edge of the shape
+ (\ctikzvalof{bipole/name}.\pgf at circ@temp) coordinate (labelcoor)
+ %now decide, which labels should be drawn
+ \pgfextra{
+ \edef\pgf at temp{\ctikzvalof{label/align}}
+ \def\pgf at circ@temp{straight}
+ }
+ \ifx\pgf at temp\pgf at circ@temp %straight
+ \pgf at circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf at circ@temp{rotate}}
+ \ifx\pgf at temp\pgf at circ@temp %rotate
+ \pgf at circ@drawrotlabels{#1}
+ \else% smart
+ \pgf at circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf at circ@drawsmartlabels#1{
+ \pgfextra{
+ \pgfmathmod{\pgf at circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70
+ \pgf at circ@drawrotlabels{#1}
+ \else
+ \pgf at circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf at circ@drawreglabels{#1}
+ \fi
+}
+
+
+\def\pgf at circ@drawrotlabels#1{
+ \pgfextra{
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ %we need some more space for placement below, due to mid-anchor
+ \def\pgf at circ@labposdistance{1.5ex}
+ \else
+ \def\pgf at circ@labposdistance{2ex}
+ \fi
+ %Calculate rotation of the label from direction and strip decimals
+ \edef\pgfcirclabrot{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ % rotate the label at second or third quadrant:
+ \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
+ \pgfmathsubtract{\pgf at circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ %invert the space relationships due to rotatet strings
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ \def\pgf at circ@labposdistance{2ex}
+ \else
+ \def\pgf at circ@labposdistance{1.5ex}
+ \fi
+ \fi\fi
+ \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf at circ@direction+90:\pgf at circ@direction-90}
+ \edef\pgf at circ@labposangle{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ }
+ (labelcoor)++(\pgf at circ@labposangle:\pgf at circ@labposdistance) coordinate(labelcoor)
+ node[anchor=mid,rotate=\pgfcirclabrot](\ctikzvalof{bipole/name}#1){\pgf at circ@finallabels{#1}}
+}
+
+\def\pgf at circ@drawreglabels#1{
+
+ %Now calculate all shape positions
+ %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
+ %All points between will be addressed by angled-anchors:
+ \pgfextra{
+ \pgfmathadd{\pgf at circ@labanc}{90}
+ \edef\pgf at circ@temp{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ \pgfmathparse{mod(\pgf at circ@temp,180)>135?mod(\pgf at circ@temp,180)-180:mod(\pgf at circ@temp,180)}
+ \edef\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ }
+ %Values between -5 and 5 are at pos /neg x-axis, values around 90 are at both y-axis
+ \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
+ \pgfextra{\edef\pgf at circ@labpos{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}}
+ \ifnum \pgf at circ@labpos > 180
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf at circ@labanc{mid west}}
+ \else
+ \pgfextra{\def\pgf at circ@labanc{mid east}}
+ \fi
+ \else
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf at circ@labanc{mid east}}
+ \else
+ \pgfextra{\def\pgf at circ@labanc{mid west}}
+ \fi
+ \fi
+ \fi\fi
+ \ifnum \pgfcircmathresult <6
+ \ifnum \ctikzvalof{bipole/#1/position} < 0
+ %we need some more space for placement below, due to mid-anchor
+ (labelcoor)++(-\pgf at circ@labanc:2ex) coordinate(labelcoor)
+ \else
+ (labelcoor)++(-\pgf at circ@labanc:1.5ex) coordinate(labelcoor)
+ \fi
+ \pgfextra{\def\pgf at circ@labanc{mid}}
+ \fi
+ (labelcoor) node[anchor=\pgf at circ@labanc](\ctikzvalof{bipole/name}#1){\pgf at circ@finallabels{#1}}
+}
+
+\def\pgf at circ@finallabels#1{%
+ \edef\pgf at temp{}%
+ \edef\pgf at circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf at temp\pgf at circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+\ctikzset{text/.style = { t=#1 } }
+\ctikzset{t/.code = {
+ \ctikzsetvalof{bipoles/twoport/text}{#1}
+}}
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf at circuit@bipole at isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf at circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf at circ@oldvoltagedirection\else
+ \ifpgf at circuit@bipole at iscurrent
+ \ifpgf at circuit@bipole at current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf at circ@siunitx
+ \pgf at circ@handleSI{#1}
+ \ifpgf at circ@siunitx at res
+ \edef\pgf at temp{\pgf at circ@handleSI at val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf at temp}
+ \edef\pgf at temp{\pgf at circ@handleSI at unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf at temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+
+
+
+%% Output routine for generic bipoles
+
+\def\pgf at circ@drawvoltagegeneric{
+ \pgfextra{
+ \edef\pgf at temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}
+ \pgfkeysifdefined{\pgf at temp}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf at circ@Rlen)}
+ }
+ {
+ \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf at circ@Rlen)}
+ }
+ {%calculate default value from part height
+ \edef\partheight{0.5*\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}}
+ \edef\tmpdistfromline{(\partheight\pgf at circ@Rlen+0.2\pgf at circ@Rlen)}
+ }
+ }
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf at circuit@bipole at inverted
+ \ifpgf at circuit@bipole at voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf at circ@Rlen}
+ \fi
+ \else
+ \ifpgf at circuit@bipole at voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf at circ@Rlen}
+ \fi
+ \fi
+ \else
+ \ifpgf at circuit@bipole at inverted
+ \ifpgf at circuit@bipole at voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf at circ@Rlen}
+ \fi
+ \else
+ \ifpgf at circuit@bipole at voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf at circ@Rlen}
+ \fi
+ \fi
+ \fi
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@voltage at angle{90}
+ \else
+ \def\pgf at circ@voltage at angle{-90}
+ \fi
+ \edef\pgf at temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf at temp}
+ { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
+ { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf at temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf at temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ }
+ % %\pgf at circ@Rlen/16 is equal to the length of the currarrow
+ coordinate (pgfcirc at midtmp) at ($(\tikztostart) ! \pgf at circ@Rlen/16 ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc at midtmp) at ($(pgfcirc at midtmp) ! \distacefromnode ! (anchorstartnode)$)
+
+ coordinate (pgfcirc at Vfrom) at ($(pgfcirc at midtmp) ! -\distfromline ! \pgf at circ@voltage at angle:(anchorstartnode)$)
+ coordinate (pgfcirc at midtmp) at ($(\tikztotarget) ! \pgf at circ@Rlen/16 ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc at midtmp) at ($(pgfcirc at midtmp) ! \distacefromnode ! (anchorendnode)$)
+
+ coordinate (pgfcirc at Vto) at ($(pgfcirc at midtmp) ! \distfromline ! \pgf at circ@voltage at angle : (anchorendnode)$)
+
+ \ifpgf at circuit@bipole at voltage@below
+ coordinate (pgfcirc at Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc at Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ \else
+ coordinate (pgfcirc at Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc at Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ \fi
+
+ \ifpgf at circuit@europeanvoltage
+ \ifpgf at circuit@bipole at voltage@straight
+ \ifpgf at circuit@bipole at voltage@backward
+ (pgfcirc at Vto) --(pgfcirc at Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \else
+ (pgfcirc at Vfrom) --(pgfcirc at Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \fi
+ \else
+ \ifpgf at circuit@bipole at voltage@backward
+ (pgfcirc at Vto) .. controls (pgfcirc at Vcont2) and (pgfcirc at Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc at Vfrom)
+ \else
+ (pgfcirc at Vfrom) .. controls (pgfcirc at Vcont1) and (pgfcirc at Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc at Vto)
+ \fi
+ \fi
+ \else
+ \ifpgf at circuit@bipole at voltage@backward
+ \ifpgf at circ@oldvoltagedirection
+ (pgfcirc at Vfrom) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{\scriptsize$+$}
+ (pgfcirc at Vto) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{$-$}
+ \else
+ (pgfcirc at Vfrom) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{\scriptsize$-$}
+ (pgfcirc at Vto) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{$+$}
+ \fi
+ \else
+ \ifpgf at circ@oldvoltagedirection
+ (pgfcirc at Vfrom) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{\scriptsize$-$}
+ (pgfcirc at Vto) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{$+$}
+ \else
+ (pgfcirc at Vfrom) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{\scriptsize$+$}
+ (pgfcirc at Vto) node[inner sep=0, anchor=\pgf at circ@bipole at voltage@label at anchor]{$-$}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+\def\pgf at circ@drawvoltagegenerator{
+ \ifpgf at circuit@bipole at voltage@below
+ coordinate (pgfcirc at Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc at Vto) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc at Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc at Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+ \ifpgf at circuit@europeanvoltage
+ \ifpgf at circuit@bipole at voltage@backward
+ (pgfcirc at Vto) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc at Vfrom)
+ \else
+ (pgfcirc at Vfrom) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc at Vto)
+ \fi
+ \else% american voltage
+ \ifpgf at circuit@bipole at voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+ \ifpgf at circuit@bipole at voltage@backward
+ (pgfcirc at Vfrom) node {$-$} (pgfcirc at Vto) node {$+$}
+ \else
+ (pgfcirc at Vfrom) node {$+$} (pgfcirc at Vto) node {$-$}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine
+\def\pgf at circ@drawvoltage{% node name
+%\pgf at circ@direction
+ \pgfextra{
+ \edef\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@direction\pgf at nil}
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{north west}
+ \else \def\pgf at circ@bipole at voltage@label at anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{west}
+ \else \def\pgf at circ@bipole at voltage@label at anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{south west}
+ \else \def\pgf at circ@bipole at voltage@label at anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{south}
+ \else\def\pgf at circ@bipole at voltage@label at anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{south east}
+ \else\def\pgf at circ@bipole at voltage@label at anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{east}
+ \else \def\pgf at circ@bipole at voltage@label at anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{north east}
+ \else\def\pgf at circ@bipole at voltage@label at anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{north}
+ \else\def\pgf at circ@bipole at voltage@label at anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at anchor{north}
+ \else\def\pgf at circ@bipole at voltage@label at anchor{south}
+ \fi
+ \fi\fi
+
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf at circuit@bipole at voltage@below
+ \pgf at circuit@bipole at voltage@belowfalse
+ \else
+ \pgf at circuit@bipole at voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf at circuit@bipole at inverted
+ \ifpgf at circuit@bipole at voltage@below
+ \pgf at circuit@bipole at voltage@belowfalse
+ \else
+ \pgf at circuit@bipole at voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf at circuit@bipole at voltage@below
+ \def\pgf at circ@bipole at voltage@label at where{-90}
+ \else
+ \def\pgf at circ@bipole at voltage@label at where{90}
+ \fi
+
+
+ \edef\pgf at temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf at temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ }%end pgfextra
+
+ \ifpgf at circuit@bipole at isvoltage
+ \pgf at circ@drawvoltagegenerator
+ \else
+ \pgf at circ@drawvoltagegeneric
+ \fi
+
+ % (\ctikzvalof{bipole/name}.\pgf at circ@bipole at voltage@label at where) %Zeile sinnlos!?
+ \ifpgf at circuit@bipole at voltage@straight
+ coordinate (Vlab) at ($(pgfcirc at Vto)!0.5!(pgfcirc at Vfrom) $)
+ node [anchor=\pgf at circ@bipole at voltage@label at anchor, inner sep=2pt]
+ at (Vlab) { \pgf at circ@finallabels{voltage/label} }
+ \else
+ coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
+ \ifpgf at circuit@europeanvoltage
+ \eudist
+ \else
+ \ctikzvalof{voltage/american label distance}
+ \fi !
+ (\ctikzvalof{bipole/name}.\pgf at circ@bipole at voltage@label at where)$)
+ node [anchor=\pgf at circ@bipole at voltage@label at anchor, inner sep=2pt] at (Vlab) { \pgf at circ@finallabels{voltage/label} }
+ \fi
+}%end drawvoltages
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% Options
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf at circ@siunitx
+ \pgf at circ@handleSI{#1}
+ \ifpgf at circ@siunitx at res
+ \edef\pgf at temp{\pgf at circ@handleSI at val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf at temp}
+ \edef\pgf at temp{\pgf at circ@handleSI at unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf at temp}
+ \else
+ \fi
+ \else
+ \fi
+%reverse current direction for voltage sources
+ \ifpgf at circ@oldvoltagedirection\else
+ \ifpgf at circuit@bipole at isvoltage
+ \ifpgf at circuit@bipole at voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+}
+}
+
+
+\ifpgf at circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+%% Output routine
+\def\pgf at circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf at circ@ffffff{\pgf at circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@ffffff\pgf at nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{north west} \else \def\pgf at circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{west} \else \def\pgf at circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{south west}\else \def\pgf at circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{south}\else\def\pgf at circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{south east}\else\def\pgf at circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{east}\else \def\pgf at circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{north east}\else\def\pgf at circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{north}\else\def\pgf at circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@dir{north}\else\def\pgf at circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf at circuit@bipole at current@below
+ \def\pgf at circ@bipole at current@label at where{-90}
+ \else
+ \def\pgf at circ@bipole at current@label at where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf at temp{short}\edef\pgf at circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf at circ@temp\pgf at temp%draw current at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf at circuit@bipole at current@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \ifpgf at circuit@bipole at current@backward
+ \pgfextra{
+ \pgfmathsubtract{\pgf at circ@ffffff}{180}
+ \edef\pgf at circ@ffffff{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ }
+ \fi
+ coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf at circ@ffffff](Iarrow)
+ (Iarrow.\pgf at circ@bipole at current@label at where) node[anchor=\pgf at circ@dir]{\pgf at circ@finallabels{current/label}}
+}
+
+%%%---------- close: tex/pgfcirccurrent
+%%%%%%%%%%% Springe nach tex/pgfcircflow
+%%%---------- open: tex/pgfcircflow.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% flow handling
+
+%% Options
+\ctikzset{f^>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/curflowrent/y position = above
+ }
+}
+
+\ctikzset{f_>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f>^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f>_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f^</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f<^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f<_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
+\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
+\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
+\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
+
+\ctikzset{f/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
+ \ctikzsetvalof{bipole/flow/label/unit}{}
+ \ifpgf at circ@siunitx
+ \pgf at circ@handleSI{#1}
+ \ifpgf at circ@siunitx at res
+ \edef\pgf at temp{\pgf at circ@handleSI at val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf at temp}
+ \edef\pgf at temp{\pgf at circ@handleSI at unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf at temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+%% Output routine
+\def\pgf at circ@drawflow{
+ \pgfextra{
+ \edef\pgf at circ@ffffff{\pgf at circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf at circ@stripdecimals\pgf at circ@ffffff\pgf at nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{north west} \else \def\pgf at circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{west} \else \def\pgf at circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{south west}\else \def\pgf at circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{south}\else\def\pgf at circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{south east}\else\def\pgf at circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{east}\else \def\pgf at circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{north east}\else\def\pgf at circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{north}\else\def\pgf at circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@dir{north}\else\def\pgf at circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf at circuit@bipole at flow@below
+ \def\pgf at circ@bipole at flow@label at where{-90}
+ \else
+ \def\pgf at circ@bipole at flow@label at where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf at temp{short}\edef\pgf at circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf at circ@temp\pgf at temp%draw flow at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf at circuit@bipole at flow@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \pgfextra{
+ \ifpgf at circuit@bipole at flow@backward
+ \ifpgf at circuit@bipole at flow@below
+ \def\flow at offset{\ctikzvalof{flow/offset}\pgf at circ@Rlen}
+ \else
+ \def\flow at offset{-\ctikzvalof{flow/offset}\pgf at circ@Rlen}
+ \fi
+ \pgfmathsubtract{\pgf at circ@ffffff}{180}
+ \edef\pgf at circ@ffffff{\expandafter\pgf at circ@stripdecimals\pgfmathresult\pgf at nil}
+ \else
+ \ifpgf at circuit@bipole at flow@below
+ \def\flow at offset{-\ctikzvalof{flow/offset}\pgf at circ@Rlen}
+ \else
+ \def\flow at offset{\ctikzvalof{flow/offset}\pgf at circ@Rlen}
+ \fi
+ \fi
+ }
+ coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf at circ@ffffff,yshift=\flow at offset](Farrowpos)
+ (Farrowpos.\pgf at circ@bipole at flow@label at where) node[anchor=\pgf at circ@dir]{ \pgf at circ@finallabels{flow/label}}
+}
+
+%%%---------- close: tex/pgfcircflow
+
+% defaults
+
+\setupmodule
+ [current=european,
+ voltage=european,
+ resistor=american,
+ inductor=cute,
+ logic=american,
+ siunitx=true,
+ arrowmos=false]
+
+\processaction
+ [\currentmoduleparameter{voltage}]
+ [european=>\ctikzset{voltage=european},
+ american=>\ctikzset{voltage=american}]
+
+\processaction
+ [\currentmoduleparameter{current}]
+ [european=>\ctikzset{ current=european},
+ american=>\ctikzset{ current=american}]
+
+\processaction
+ [\currentmoduleparameter{label}]
+ [straight=>\ctikzset{label/align = straight},
+ align=>\ctikzset{label/align = rotate},
+ smart=>\ctikzset{label/align = smart}]
+
+\processaction
+ [\currentmoduleparameter{resistor}]
+ [european=>\ctikzset{ resistor=european},
+ american=>\ctikzset{ resistor=american}]
+
+\processaction
+ [\currentmoduleparameter{inductor}]
+ [european=>\ctikzset{ inductor=european},
+ american=>\ctikzset{ inductor=american},
+ cute=>\ctikzset{ inductor=cute}]
+
+\processaction
+ [\currentmoduleparameter{diode}]
+ [full=>\ctikzset{ diode=full},
+ empty=>\ctikzset{ diode=empty}]
+
+\processaction
+ [\currentmoduleparameter{logic}]
+ [european=>\ctikzset{ logic ports=european},
+ american=>\ctikzset{ logic ports=american}]
+
+\processaction
+ [\currentmoduleparameter{siunitx}]
+ [true=>\def\SI#1#2{#1\,#2}
+ \def\ampere{\rm{A}}
+ \def\volt{\rm{V}}
+ \def\ohm{\Omega}
+ \def\siemens{\rm{S}}
+ \def\farad{\rm{F}}
+ \def\henry{\rm{H}}
+ \def\second{\rm{s}}
+ \def\coulomb{\rm{C}}
+ \def\siemens{\rm{S}}
+ \def\radians{\rm{rad}}
+ \def\milli{\rm{m}}
+ \def\micro{\mu}
+ \def\nano{\rm{n}}
+ \def\pico{\rm{p}}
+ \def\kilo{\rm{k}}
+ \def\mega{\rm{M}}
+ \def\giga{\rm{G}}
+ \def\tera{\rm{T}},
+ false=>]
+% \s!default=>\pgf at circ@siunitxtrue,
+
+\processaction
+ [\currentmoduleparameter{arrowmos}]
+ [true=>\pgf at circuit@mos at arrowstrue,
+ false=>\pgf at circuit@mos at arrowsfalse]
+% \s!default=>\pgf at circuit@mos at arrowstrue,
+
+
+\ifpgf at circ@siunitx
+ % nothing! siunitx and xstrings don't work in context
+\fi
+
+
+% Context specific
+
+\ctikzset{tripoles/op amp/font/.initial=\switchtobodyfont[small]}
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+
+\def\pgf at circ@direction{0.0}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf at circuit@bipole at invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf at circuit@bipole at invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf at circuit@bipole at inverted
+\ctikzset{bipole/inverted/.is if=pgf at circuit@bipole at inverted}
+
+
+\newif\ifpgf at circuit@bipole at voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf at circuit@bipole at voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf at circuit@bipole at voltage@backwardtrue}}
+
+
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+%% Helper function for path-function to ensure using anchors between nodes
+\def\set at explicit@center at anchor#1{
+ \pgfutil at ifundefined{pgf at sh@ns@#1}
+ {
+ %This coordinate is no node(but a relative position or a coordinate), no further handling needed
+ }{
+ \pgfutil at in@.{#1}
+ \ifpgfutil at in@
+ % Anchor is used, do nothing!
+ \else%
+ \let\tikz at moveto@waiting=\relax
+ \pgfpathmoveto{\tikz at last@position}%force movement, because tikz at moveto@waiting
+ \edef#1{#1.center}%ensure using center anchor
+ \fi
+ }
+}
+
+
+%% Generic bipole path
+\def\pgf at circ@bipole at path#1#2{
+
+\pgfextra{
+ \set at explicit@center at anchor{\tikztostart}
+ \set at explicit@center at anchor{\tikztotarget}
+ \pgfsyssoftpath at getcurrentpath{\myp at th}%% save current path to extend after calculation of correct start/end coordinates
+ \ctikzset{bipole/kind = #1}
+ \edef\pgf at temp{\ctikzvalof{bipole/name}}
+ \def\pgf at circ@temp{}
+ \ifx\pgf at temp\pgf at circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf at circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #2\pgf at circ@rand} % create it
+ \fi
+ }
+
+ (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relativ start/end or constructions like ((node1)-|(node2))
+ (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \edef\pgf at circ@direction{\pgfmathresult}%Calculate direction(angle) of path
+ \pgfsyssoftpath at setcurrentpath{\myp at th}
+ }
+ \pgfextra{\def\pgf at temp{open}\def\pgf at circ@temp{#1}}
+ \ifx\pgf at temp\pgf at circ@temp % if it is an open
+ \else
+ --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
+ \fi
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
+ node[#1shape, rotate=\pgf at circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifpgf at circuit@bipole at inverted
+ \ifcsname pgf at anchor@#1shape at pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf at anchor@#1shape at pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ \pgfextra{\def\pgf at temp{open}\def\pgf at circ@temp{#1}}
+ \ifx\pgf at temp\pgf at circ@temp % if it is an open
+ \else
+ \ifpgf at circuit@bipole at strokedsymbol%draw line thrue symbol(e.g. diodes)
+ \ifcsname pgf at anchor@#1shape at strokepathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.strokepathstart)
+ (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
+ (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \fi
+
+ \drawpoles
+ \pgf at circ@ifkeyempty{bipole/label/name}\else\pgf at circ@drawlabels{label}\fi
+ \pgf at circ@ifkeyempty{bipole/annotation/name}\else\pgf at circ@drawlabels{annotation}\fi
+ \pgf at circ@ifkeyempty{bipole/voltage/label/name}\else\pgf at circ@drawvoltage\fi
+ \pgf at circ@ifkeyempty{bipole/current/label/name}\else\pgf at circ@drawcurrent\fi
+ \pgf at circ@ifkeyempty{bipole/flow/label/name}\else\pgf at circ@drawflow\fi
+ \pgfextra{\def\pgf at temp{open}\def\pgf at circ@temp{#1}}
+ \ifx\pgf at temp\pgf at circ@temp % if it is an open
+ (\ctikzvalof{bipole/name}end)%Move to end of path
+ \else
+ ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
+ %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
+
+ \fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ \tikztonodes%draw pending nodes an path
+}
+
+
+%% Path definitions
+\def\pgf at circ@resistor at path#1{\ifpgf at circuit@europeanresistor\pgf at circ@bipole at path{generic}{#1}\else\pgf at circ@bipole at path{resistor}{#1}\fi}
+\def\pgf at circ@vresistor at path#1{\ifpgf at circuit@europeanresistor\pgf at circ@bipole at path{tgeneric}{#1}\else\pgf at circ@bipole at path{vresistor}{#1}\fi}
+\def\pgf at circ@potentiometer at path#1{\ifpgf at circuit@europeanresistor\pgf at circ@bipole at path{genericpotentiometer}{#1}\else\pgf at circ@bipole at path{potentiometer}{#1}\fi}
+\def\pgf at circ@thermistor at path#1{\pgf at circ@bipole at path{thermistor}{#1}}
+\def\pgf at circ@thermistorptc at path#1{\pgf at circ@bipole at path{thermistorptc}{#1}}
+\def\pgf at circ@thermistorntc at path#1{\pgf at circ@bipole at path{thermistorntc}{#1}}
+\def\pgf at circ@varistor at path#1{\pgf at circ@bipole at path{varistor}{#1}}
+\def\pgf at circ@capacitor at path#1{\pgf at circ@bipole at path{capacitor}{#1}}
+\def\pgf at circ@ecapacitor at path#1{\pgf at circ@bipole at path{ecapacitor}{#1}}
+\def\pgf at circ@polarcapacitor at path#1{\pgf at circ@bipole at path{polarcapacitor}{#1}}
+\def\pgf at circ@vcapacitor at path#1{\pgf at circ@bipole at path{vcapacitor}{#1}}
+\def\pgf at circ@piezoelectric at path#1{\pgf at circ@bipole at path{piezoelectric}{#1}}
+\def\pgf at circ@battery at path#1{\pgf at circ@bipole at path{battery}{#1}}
+\def\pgf at circ@batteryone at path#1{\pgf at circ@bipole at path{battery1}{#1}}
+\def\pgf at circ@batterytwo at path#1{\pgf at circ@bipole at path{battery2}{#1}}
+\def\pgf at circ@europeaninductor at path#1{\pgf at circ@bipole at path{fullgeneric}{#1}}
+\def\pgf at circ@americaninductor at path#1{\pgf at circ@bipole at path{americaninductor}{#1}}
+\def\pgf at circ@cuteinductor at path#1{\pgf at circ@bipole at path{cuteinductor}{#1}}
+\def\pgf at circ@inductor at path#1{%
+ \pgfextra{
+ \edef\pgf at circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf at temp{european}%
+ }
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgf at circ@europeaninductor at path{#1}%
+ \else%
+ \pgfextra{ \def\pgf at temp{cute} }%
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgf at circ@cuteinductor at path{#1}%
+ \else%
+ \pgf at circ@americaninductor at path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf at circ@vinductor at path#1{
+ \pgfextra{
+ \edef\pgf at circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf at temp{european}%
+ }
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgf at circ@veuropeaninductor at path{#1}%
+ \else%
+ \pgfextra{ \def\pgf at temp{cute} }%
+ \ifx\pgf at temp\pgf at circ@temp%
+ \pgf at circ@vcuteinductor at path{#1}%
+ \else%
+ \pgf at circ@vamericaninductor at path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf at circ@veuropeaninductor at path#1{\pgf at circ@bipole at path{tfullgeneric}{#1}}
+\def\pgf at circ@vamericaninductor at path#1{\pgf at circ@bipole at path{vamericaninductor}{#1}}
+\def\pgf at circ@vcuteinductor at path#1{\pgf at circ@bipole at path{vcuteinductor}{#1}}
+\def\pgf at circ@lamp at path#1{\pgf at circ@bipole at path{lamp}{#1}}
+\def\pgf at circ@esource at path#1{\pgf at circ@bipole at path{esource}{#1}}
+\def\pgf at circ@pvsource at path#1{\pgf at circ@bipole at path{pvsource}{#1}}
+\def\pgf at circ@vsource at path#1{\pgf at circ@bipole at path{vsource}{#1}}
+\def\pgf at circ@dcvsource at path#1{\pgf at circ@bipole at path{dcvsource}{#1}}
+\def\pgf at circ@vsourceam at path#1{\pgf at circ@bipole at path{vsourceAM}{#1}}
+\def\pgf at circ@vsourcesin at path#1{\pgf at circ@bipole at path{vsourcesin}{#1}}
+\def\pgf at circ@isource at path#1{\pgf at circ@bipole at path{isource}{#1}}
+\def\pgf at circ@oosource at path#1{\pgf at circ@bipole at path{oosource}{#1}}
+\def\pgf at circ@dcisource at path#1{\pgf at circ@bipole at path{dcisource}{#1}}
+\def\pgf at circ@isourcesin at path#1{\pgf at circ@bipole at path{isourcesin}{#1}}
+\def\pgf at circ@vsourcesquare at path#1{\pgf at circ@bipole at path{vsourcesquare}{#1}}
+\def\pgf at circ@vsourcetri at path#1{\pgf at circ@bipole at path{vsourcetri}{#1}}
+\def\pgf at circ@isourceam at path#1{\pgf at circ@bipole at path{isourceAM}{#1}}
+\def\pgf at circ@cvsource at path#1{\pgf at circ@bipole at path{cvsource}{#1}}
+\def\pgf at circ@cvsourceam at path#1{\pgf at circ@bipole at path{cvsourceAM}{#1}}
+\def\pgf at circ@cvsourcesin at path#1{\pgf at circ@bipole at path{cvsourcesin}{#1}}
+\def\pgf at circ@cisource at path#1{\pgf at circ@bipole at path{cisource}{#1}}
+\def\pgf at circ@cisourceam at path#1{\pgf at circ@bipole at path{cisourceAM}{#1}}
+\def\pgf at circ@cisourcesin at path#1{\pgf at circ@bipole at path{cisourcesin}{#1}}
+\def\pgf at circ@short at path#1{\pgf at circ@bipole at path{short}{#1}}
+\def\pgf at circ@cspst at path#1{\pgf at circ@bipole at path{cspst}{#1}}
+\def\pgf at circ@ospst at path#1{\pgf at circ@bipole at path{ospst}{#1}}
+\def\pgf at circ@nos at path#1{\pgf at circ@bipole at path{nos}{#1}}
+\def\pgf at circ@ncs at path#1{\pgf at circ@bipole at path{ncs}{#1}}
+\def\pgf at circ@pushbutton at path#1{\pgf at circ@bipole at path{pushbutton}{#1}}
+\def\pgf at circ@open at path#1{\pgf at circ@bipole at path{open}{#1}}
+\def\pgf at circ@generic at path#1{\pgf at circ@bipole at path{generic}{#1}}
+\def\pgf at circ@ageneric at path#1{\pgf at circ@bipole at path{ageneric}{#1}}
+\def\pgf at circ@tgeneric at path#1{\pgf at circ@bipole at path{tgeneric}{#1}}
+\def\pgf at circ@fullgeneric at path#1{\pgf at circ@bipole at path{fullgeneric}{#1}}
+\def\pgf at circ@tfullgeneric at path#1{\pgf at circ@bipole at path{tfullgeneric}{#1}}
+\def\pgf at circ@ammeter at path#1{\pgf at circ@bipole at path{ammeter}{#1}}
+\def\pgf at circ@ohmmeter at path#1{\pgf at circ@bipole at path{ohmmeter}{#1}}
+\def\pgf at circ@voltmeter at path#1{\pgf at circ@bipole at path{voltmeter}{#1}}
+\def\pgf at circ@empty at path#1{}
+\def\pgf at circ@photoresistor at path#1{\pgf at circ@bipole at path{photoresistor}{#1}}
+\def\pgf at circ@emptythyristor at path#1{\pgf at circ@bipole at path{emptythyristor}{#1}}
+\def\pgf at circ@fullthyristor at path#1{\pgf at circ@bipole at path{fullthyristor}{#1}}
+\def\pgf at circ@toggleswitch at path#1{\pgf at circ@bipole at path{toggleswitch}{#1}}
+\def\pgf at circ@memristor at path#1{\pgf at circ@bipole at path{memristor}{#1}}
+\def\pgf at circ@emptytriac at path#1{\pgf at circ@bipole at path{emptytriac}{#1}}
+\def\pgf at circ@fulltriac at path#1{\pgf at circ@bipole at path{fulltriac}{#1}}
+\def\pgf at circ@tline at path#1{\pgf at circ@bipole at path{tline}{#1}}
+\def\pgf at circ@squid at path#1{\pgf at circ@bipole at path{squid}{#1}}
+\def\pgf at circ@barrier at path#1{\pgf at circ@bipole at path{barrier}{#1}}
+\def\pgf at circ@thermocouple at path#1{\pgf at circ@bipole at path{thermocouple}{#1}}
+\def\pgf at circ@fuse at path#1{\pgf at circ@bipole at path{fuse}{#1}}
+\def\pgf at circ@afuse at path#1{\pgf at circ@bipole at path{afuse}{#1}}
+
+\def\pgf at circ@gfsurgearrester at path#1{\ifpgf at circuit@europeangfsurgearrester\pgf at circ@europeangfsurgearrester at path{#1}\else\pgf at circ@americangfsurgearrester at path{#1}\fi}
+\def\pgf at circ@europeangfsurgearrester at path#1{\pgf at circ@bipole at path{european gas filled surge arrester}{#1}}
+\def\pgf at circ@americangfsurgearrester at path#1{\pgf at circ@bipole at path{american gas filled surge arrester}{#1}}
+
+\def\pgf at circ@twoport at path#1{\pgf at circ@bipole at path{twoport}{#1}}
+\def\pgf at circ@vco at path#1{\pgf at circ@bipole at path{vco}{#1}}
+\def\pgf at circ@bandpass at path#1{\pgf at circ@bipole at path{bandpass}{#1}}
+\def\pgf at circ@bandstop at path#1{\pgf at circ@bipole at path{bandstop}{#1}}
+\def\pgf at circ@highpass at path#1{\pgf at circ@bipole at path{highpass}{#1}}
+\def\pgf at circ@lowpass at path#1{\pgf at circ@bipole at path{lowpass}{#1}}
+\def\pgf at circ@adc at path#1{\pgf at circ@bipole at path{adc}{#1}}
+\def\pgf at circ@dac at path#1{\pgf at circ@bipole at path{dac}{#1}}
+\def\pgf at circ@dsp at path#1{\pgf at circ@bipole at path{dsp}{#1}}
+\def\pgf at circ@fft at path#1{\pgf at circ@bipole at path{fft}{#1}}
+\def\pgf at circ@amp at path#1{\pgf at circ@bipole at path{amp}{#1}}
+\def\pgf at circ@vamp at path#1{\pgf at circ@bipole at path{vamp}{#1}}
+\def\pgf at circ@piattenuator at path#1{\pgf at circ@bipole at path{piattenuator}{#1}}
+\def\pgf at circ@vpiattenuator at path#1{\pgf at circ@bipole at path{vpiattenuator}{#1}}
+\def\pgf at circ@tattenuator at path#1{\pgf at circ@bipole at path{tattenuator}{#1}}
+\def\pgf at circ@vtattenuator at path#1{\pgf at circ@bipole at path{vtattenuator}{#1}}
+\def\pgf at circ@phaseshifter at path#1{\pgf at circ@bipole at path{phaseshifter}{#1}}
+\def\pgf at circ@vphaseshifter at path#1{\pgf at circ@bipole at path{vphaseshifter}{#1}}
+\def\pgf at circ@detector at path#1{\pgf at circ@bipole at path{detector}{#1}}
+
+%%Mechanical
+\def\pgf at circ@spring at path#1{\pgf at circ@bipole at path{spring}{#1}}
+\def\pgf at circ@mass at path#1{\pgf at circ@bipole at path{mass}{#1}}
+\def\pgf at circ@damper at path#1{\pgf at circ@bipole at path{damper}{#1}}
+
+
+
+
+%% Styles
+
+\def\comnpatname{\ifpgf at circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@spring at path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@mass at path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@damper at path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf at circ@resistor at path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf at circ@bipole at path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf at circ@bipole at path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@potentiometer at path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@varistor at path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@photoresistor at path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@thermistor at path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@thermistorptc at path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf at circ@thermistorntc at path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\