% Copyright 2018-2021 by Romano Giannetti % Copyright 2015-2021 by Stefan Lindner % Copyright 2013-2021 by Stefan Erhardt % Copyright 2007-2021 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 files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details. % % This file has folding marks for vim (See last line). % % % This file is loaded *before* the options for the package are executed, mainly % for the following three ifs % % these three ifs are fundamental for the package loading options; % do not move away \newif\ifpgf@circ@siunitx \newif\ifpgf@circ@siunitx@res \newif\ifpgf@circuit@compat %% Key managements%<<<1 \long\def\pgf@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}} \pgfkeys{\circuitikzbasekey/.search also={/tikz}} %%>>> %% Temporary Counters and dimensions%<<<1 %% Temporary Counters \newcount\pgf@circ@count@a \newcount\pgf@circ@count@b \newcount\pgf@circ@count@c %%%%%%%%%%%% %% Dimensions % coordinate \newdimen\pgf@circ@res@up \newdimen\pgf@circ@res@down \newdimen\pgf@circ@res@zero \newdimen\pgf@circ@res@left \newdimen\pgf@circ@res@right \newdimen\pgf@circ@res@other \newdimen\pgf@circ@res@step \newdimen\pgf@circ@res@temp % Base len for all circuitikz \newdimen\pgf@circ@Rlen % scaled length for internal use in scalable shapes \newdimen\pgf@circ@scaled@Rlen \ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}} \pgf@circ@Rlen = 1.4cm % by default scale is 1.0 \pgf@circ@scaled@Rlen=\pgf@circ@Rlen % inital thickness \newdimen \pgfstartlinewidth %%>>> % arrow tips, ported over old arrows library (deprecated)%<<<1 % see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library % this was the original definition of latex' tips, renamed to avoid clashes % \pgfarrowsdeclare{latexslim}{latexslim} { \pgfutil@tempdima=0.28pt% \advance\pgfutil@tempdima by.3\pgflinewidth% \pgfarrowsleftextend{+-4\pgfutil@tempdima} \pgfarrowsrightextend{+6\pgfutil@tempdima} } { \pgfutil@tempdima=0.28pt% \advance\pgfutil@tempdima by.3\pgflinewidth% \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}} \pgfpathcurveto {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}} {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}} {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}} \pgfpathcurveto {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}} {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}} {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}} \pgfpathcurveto {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}} {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}} {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}} \pgfpathclose \pgfusepathqfill } \pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim} %%>>> %% Macros to do things depending on the class%<<<1 \def\pgf@circ@setifdefinedfill#1#2{% % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none: % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2} \ifdefined\ctikzclass \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}% {% yes, it's defined \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}% \ifx\@@tmp\@@none % but it's none \pgfusepath{#2}% \else \pgfsetfillcolor{\@@tmp}% \pgfusepath{#1}% \fi }{% the class is defined but the fill key not; use #2 \pgfusepath{#2}% } \else \pgfusepath{#2}% \fi } %% Macro to fill or draw \def\pgf@circ@draworfill{% \ifx\tikz@fillcolor\pgfutil@empty \pgf@circ@setifdefinedfill{draw,fill}{draw} \else \pgfsetfillcolor{\tikz@fillcolor} \pgfusepath{draw, fill} \fi } \def\pgf@circ@draworfillandclip{% \ifx\tikz@fillcolor\pgfutil@empty \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip} \pgfusepath{draw, clip} \else \pgfsetfillcolor{\tikz@fillcolor} \pgfusepath{draw, clip, fill} \fi } \def\pgf@circ@maybefill{% \ifx\tikz@fillcolor\pgfutil@empty \pgf@circ@setifdefinedfill{fill}{discard} \else \pgfsetfillcolor{\tikz@fillcolor} \pgfusepath{fill} \fi } %% Macros for setting linewidth % #1 is the legacy class (bipoles, tripoles) etc % #2 is the reference linewidth \def\pgf@circ@setlinewidth#1#2{% \ifdefined\ctikzclass \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}% {% yes, it's defined \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}% \ifx\@@tmp\@@none % but it's none \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class \else \pgfsetlinewidth{\@@tmp #2}% \fi }{ % key not defined, do the legacy thing \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% }% Ok, do nothing \else % no class \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% \fi } % use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case \ctikzset{none/thickness/.initial=1.0} % do not touch %%>>> %% font changes compatible with plain/LaTeX/ConTeXt%<<<1 %% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605 \ifpgfutil@format@is@latex \long\def\pgf@circ@font@tiny{\tiny} \long\def\pgf@circ@font@small{\small} \long\def\pgf@circ@font@bold{\textbf} \long\def\pgf@circ@font@boldmath{\boldmath} \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath} \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath} \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont} \else\ifpgfutil@format@is@plain \long\def\pgf@circ@font@tiny{\fiverm} \long\def\pgf@circ@font@small{\sevenrm} \long\def\pgf@circ@font@bold#1{{\bf#1}} \long\def\pgf@circ@font@boldmath{\bf} % to be tested \long\def\pgf@circ@font@sixbm{\sevenrm\bf} % \long\def\pgf@circ@font@tenbm{\tenrm\bf} % \long\def\pgf@circ@font@twelve{\twelverm} % \else\ifpgfutil@format@is@context \long\def\pgf@circ@font@tiny{\tfxx} \long\def\pgf@circ@font@small{\tfx} \long\def\pgf@circ@font@bold{\bold} \long\def\pgf@circ@font@boldmath{\bold} % to be tested \long\def\pgf@circ@font@sixbm{\tfx\bold} % \long\def\pgf@circ@font@tenbm{\normal\bold}% \long\def\pgf@circ@font@twelve{\tfa} % \fi\fi\fi % % Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080 % % this is needed to avoid problems with \ConTeXt \ifcsname normalunexpanded\endcsname \let\pgfcircutil@unexpanded\normalunexpanded \else \let\pgfcircutil@unexpanded\unexpanded \fi % minimally expand a pgfkey to check if it's {}/undefined or filled. \def\unexpandedvalueof#1{% \pgfcircutil@unexpanded\expandafter\expandafter \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}} \def\pgf@circ@valueof@chk#1{% \ifx\relax#1% \expandafter\pgfutil@firstoftwo \else \expandafter\pgfutil@secondoftwo \fi {{}}% #1 is \relax, so consider empty {\expandafter{#1}}% otherwise, leave the key after one more expansion }% %>>> %% 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{% \pgfcircdeclarebipolescaled{default}} %% Generic macro for defining a bipole shape % #1 - scale factor % #2 - additional anchors % #3 - lower y-size of the bipole (from the center). % #4 - #shape is the name of the shape % #5 - upper y-size of the bipole (from the center) % #6 - width of the bipole % #7 - macros drawing the bipole % \long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{ \pgfdeclareshape{#4shape}{ \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}} \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}} \savedanchor{\northeast}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=#5\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@x=#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x } \savedanchor{\northeastborder}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=#5\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y \pgf@x=#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x } \savedanchor{\southwestborder}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=-#3\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y \pgf@x=-#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x } \savedanchor{\southwest}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@y=-#3\pgf@circ@scaled@Rlen \pgf@y=.5\pgf@y \pgf@x=-#6\pgf@circ@scaled@Rlen \pgf@x=.5\pgf@x } \savedanchor{\centerpoint}{ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen \pgfpointorigin \pgf@y=\pgf@circ@res@up \advance\pgf@y by\pgf@circ@res@down \pgf@y=.5\pgf@y } \anchor{center}{\pgfpointorigin} \anchor{n}{ \northeast \pgf@x=0cm } \anchor{north east}{ \northeast } \anchor{north west}{ \northeast \pgf@x=-\pgf@x } \anchor{ne}{ \northeast } \anchor{nw}{ \northeast \pgf@x=-\pgf@x } \anchor{e}{ \northeast \pgf@y=0cm } \anchor{s}{ \southwest \pgf@x=0cm } \anchor{south east}{ \southwest \pgf@x=-\pgf@x } \anchor{south west}{ \southwest } \anchor{se}{ \southwest \pgf@x=-\pgf@x } \anchor{sw}{ \southwest } \anchor{w}{ \southwest \pgf@y=0cm } \anchor{north}{ \northeast \pgf@x=0cm } \anchor{east}{ \northeast \pgf@y=0cm } \anchor{south}{ \southwest \pgf@x=0cm } \anchor{west}{ \southwest \pgf@y=0cm } \anchor{right}{ \northeast \pgf@y=0cm } \anchor{above}{ \northeast \pgf@x=0cm } \anchor{left}{ \southwest \pgf@y=0cm } \anchor{below}{ \southwest \pgf@x=0cm } \anchor{a}{ \northeast \pgf@y=0cm } \anchor{b}{ \southwest \pgf@y=0cm } \savedanchor{\textanchor}{% \pgf@y=\ht\pgfnodeparttextbox \pgf@x=-.5\wd\pgfnodeparttextbox } \anchor{text}{ \textanchor } \anchorborder{% \ifpgf@circuit@bipole@inverted \pgf@circ@res@left=-\pgf@x \pgf@circ@res@up=-\pgf@y \else \pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y \fi \ifdim\pgf@circ@res@up>0cm \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\northeastborder} \else \southwestborder \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{-\pgf@x}{-\pgf@y}} \fi } #2 \backgroundpath{ \pgfsetcolor{\ctikzvalof{color}} \northeast \pgf@circ@res@up = \pgf@y \pgf@circ@res@zero = 0cm \pgf@circ@res@left = -\pgf@x \pgf@circ@res@right = \pgf@x \southwest \pgf@circ@res@down = \pgf@y \pgf@circ@scaled@Rlen=\scaledRlen \pgfstartlinewidth=\pgflinewidth \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners! #7 \pgfsetlinewidth{\pgfstartlinewidth} } } }% %>>> %% anchor adjustment macros%<<< % Extend the border anchor position by the specified factors on the right-top (north east corner) % and the left-down (southwest border). Argument must be number (possibly decimal) without sign \def\pgfcirc@border@extend@full#1#2#3#4{% right, top, left, down \anchorborder{% \ifpgf@circuit@bipole@inverted \pgf@circ@res@left=-\pgf@x \pgf@circ@res@up=-\pgf@y \else \pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y \fi \ifdim\pgf@circ@res@up>0cm \northeastborder \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{#1\pgf@x}{#2\pgf@y}} \else \southwestborder \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{-#3\pgf@x}{-#4\pgf@y}} \fi } } % Just up and down (very common) \def\pgfcirc@border@extend@updown#1#2{\pgfcirc@border@extend@full{1}{#1}{1}{#2}}% %>>> % text position in some component.%<<<1 % (added with ieeestd logic ports. Maybe to be extended to other components, % like amplifiers) % \newif\ifpgf@circ@center@text\pgf@circ@center@texttrue \tikzset{component text/.is choice}% \tikzset{component text/center/.code={\pgf@circ@center@texttrue}}% \tikzset{component text/left/.code={\pgf@circ@center@textfalse}}% \ctikzset{component text/.is choice}% \ctikzset{component text/center/.code={\pgf@circ@center@texttrue}}% \ctikzset{component text/left/.code={\pgf@circ@center@textfalse}}% \ctikzset{left text distance/.initial=0.3em}% %>>> % voltage direction options%<<<1 \newif\ifpgf@circ@oldvoltagedirection % default false \newif\ifpgf@circ@explicitvdir \newif\ifpgf@circ@fixbatteries \ctikzset{voltage dir/.is choice} \ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}} \ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}} \ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}} \ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}} \tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}% %>>> % bipole definitions for path component and text decorations%%<<<1 % % Option "t=*" for nodes \pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}} % \ctikzset{bipole/.is family} \ctikzset{bipole/kind/.initial=} \ctikzset{bipole/name/.initial=} \newif\ifpgf@circuit@bipole@isvoltage \ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage} \newif\ifpgf@circuit@bipole@voltageoutsideofsymbol \ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol} \newif\ifpgf@circuit@bipole@strokedsymbol \ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol} \newif\ifpgf@circuit@bipole@iscurrent \ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent} \ctikzset{bipole/voltage/.is family} \newif\ifpgf@circuit@bipole@voltage@backward \ctikzset{bipole/voltage/direction/.is choice} \ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}} \ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}} \newif\ifpgf@circuit@bipole@voltage@below \ctikzset{bipole/voltage/position/.is choice} \ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}} \ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}} \ctikzset{bipole/voltage/label/unit/.initial=} \ctikzset{bipole/voltage/label/name/.initial=} \ctikzset{bipole/current/.is family} \newif\ifpgf@circuit@bipole@current@backward \ctikzset{bipole/current/direction/.is choice} \ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}} \ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}} \newif\ifpgf@circuit@bipole@current@before \ctikzset{bipole/current/x position/.is choice} \ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}} \ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}} \newif\ifpgf@circuit@bipole@current@below \ctikzset{bipole/current/y position/.is choice} \ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}} \ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}} \ctikzset{bipole/current/label/unit/.initial=} \ctikzset{bipole/current/label/name/.initial=} \ctikzset{bipole/flow/.is family} \newif\ifpgf@circuit@bipole@flow@backward \ctikzset{bipole/flow/direction/.is choice} \ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}} \ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}} \newif\ifpgf@circuit@bipole@flow@before \ctikzset{bipole/flow/x position/.is choice} \ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}} \ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}} \newif\ifpgf@circuit@bipole@flow@below \ctikzset{bipole/flow/y position/.is choice} \ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}} \ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@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{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}}} %%>>> % traditional styles %<<<1 % \ctikzset{thickness/.initial=2} \ctikzset{color/.initial=black} \pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}} \ctikzset{bipoles/border margin/.initial=1.1} \ctikzset{bipoles/thickness/.initial=2} \ctikzset{tripoles/thickness/.initial=2} \ctikzset{quadpoles/thickness/.initial=2} \ctikzset{nodes width/.initial=.04} %%>>> % Styles definitions and macros%<<<1 %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% main style definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%% % load a style file: search ctikzstyle-NAME.tex in path \def\ctikzloadstyle#1{% \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{% \tikzerror{I did not find the circuitikz style #1}}% } % load and enact a style \def\ctikzsetstyle#1{% \ctikzloadstyle{#1}% \tikzset{#1 circuit style}% } % global style parameters \ctikzset{default/scale/.initial=1.0} % do not touch \ctikzset{default/fill/.initial=none} % do not touch \ctikzset{default/thickness/.initial=none} % do not touch % default is use as the generic default style for bipoles % mostly bipoles: \ctikzset{resistors/scale/.initial=1.0} \ctikzset{resistors/fill/.initial=none} \ctikzset{resistors/thickness/.initial=none} \ctikzset{capacitors/scale/.initial=1.0} \ctikzset{capacitors/fill/.initial=none} \ctikzset{capacitors/thickness/.initial=none} \ctikzset{inductors/scale/.initial=1.0} \ctikzset{inductors/fill/.initial=none} \ctikzset{inductors/thickness/.initial=none} \ctikzset{diodes/scale/.initial=1.0} \ctikzset{diodes/fill/.initial=none} \ctikzset{diodes/thickness/.initial=none} \ctikzset{batteries/scale/.initial=1.0} \ctikzset{batteries/fill/.initial=none} \ctikzset{batteries/thickness/.initial=none} \ctikzset{sources/scale/.initial=1.0} \ctikzset{sources/fill/.initial=none} \ctikzset{sources/thickness/.initial=none} \ctikzset{csources/scale/.initial=1.0} \ctikzset{csources/fill/.initial=none} \ctikzset{csources/thickness/.initial=none} \ctikzset{instruments/scale/.initial=1.0} \ctikzset{instruments/fill/.initial=none} \ctikzset{instruments/thickness/.initial=none} \ctikzset{mechanicals/scale/.initial=1.0} \ctikzset{mechanicals/fill/.initial=none} \ctikzset{mechanicals/thickness/.initial=none} \ctikzset{misc/scale/.initial=1.0} \ctikzset{misc/fill/.initial=none} \ctikzset{misc/thickness/.initial=none} \ctikzset{blocks/scale/.initial=1.0} \ctikzset{blocks/fill/.initial=none} \ctikzset{blocks/thickness/.initial=none} % mostly nodes \ctikzset{grounds/scale/.initial=1.0} \ctikzset{grounds/fill/.initial=none} \ctikzset{grounds/thickness/.initial=none} \ctikzset{power supplies/scale/.initial=1.0} \ctikzset{power supplies/fill/.initial=none} \ctikzset{power supplies/thickness/.initial=none} \ctikzset{transistors/scale/.initial=1.0} \ctikzset{transistors/fill/.initial=none} \ctikzset{transistors/thickness/.initial=none} \ctikzset{tubes/scale/.initial=1.0} \ctikzset{tubes/fill/.initial=none} \ctikzset{tubes/thickness/.initial=none} \ctikzset{RF/scale/.initial=1.0} \ctikzset{RF/fill/.initial=none} \ctikzset{RF/thickness/.initial=none} \ctikzset{electromechanicals/scale/.initial=1.0} \ctikzset{electromechanicals/fill/.initial=none} \ctikzset{electromechanicals/thickness/.initial=none} % transformers go with inductors \ctikzset{amplifiers/scale/.initial=1.0} \ctikzset{amplifiers/fill/.initial=none} \ctikzset{amplifiers/thickness/.initial=none} \ctikzset{switches/scale/.initial=1.0} \ctikzset{switches/fill/.initial=none} \ctikzset{switches/thickness/.initial=none} \ctikzset{logic ports/scale/.initial=1.0} \ctikzset{logic ports/fill/.initial=none} \ctikzset{logic ports/thickness/.initial=none} \ctikzset{flipflops/scale/.initial=1.0} \ctikzset{flipflops/fill/.initial=none} \ctikzset{flipflops/thickness/.initial=none} \ctikzset{muxdemuxes/scale/.initial=1.0} \ctikzset{muxdemuxes/fill/.initial=none} \ctikzset{muxdemuxes/thickness/.initial=none} \ctikzset{chips/scale/.initial=1.0} \ctikzset{chips/fill/.initial=none} \ctikzset{chips/thickness/.initial=none} \ctikzset{displays/scale/.initial=1.0} \ctikzset{displays/fill/.initial=none} \ctikzset{displays/thickness/.initial=none} % % general styles % \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}} %%>>> % voltage and current options%<<<1 % \ctikzset{current arrow scale/.initial=16} \ctikzset{current/distance/.initial = .5} \newif\ifpgf@circuit@europeancurrent \newif\ifpgf@circuit@europeanvoltage \newif\ifpgf@circuit@bipole@voltage@straight \newif\ifpgf@circuit@bipole@voltage@raised \ctikzset{voltage/.is choice} % % straight is expected to be a subset of european, so disable it in american style % \ctikzset{voltage/american/.code = {% \pgf@circuit@europeanvoltagefalse \pgf@circuit@bipole@voltage@straightfalse \pgf@circuit@bipole@voltage@raisedfalse }} \ctikzset{voltage/raised/.code = {% \pgf@circuit@europeanvoltagefalse \pgf@circuit@bipole@voltage@straightfalse \pgf@circuit@bipole@voltage@raisedtrue }} \ctikzset{voltage/european/.code = {% \pgf@circuit@europeanvoltagetrue \pgf@circuit@bipole@voltage@straightfalse \pgf@circuit@bipole@voltage@raisedfalse }} \ctikzset{voltage/straight/.code = {% \pgf@circuit@europeanvoltagetrue \pgf@circuit@bipole@voltage@straighttrue \pgf@circuit@bipole@voltage@raisedfalse }} \ctikzset{voltage/curved/.code = {% \pgf@circuit@europeanvoltagetrue \pgf@circuit@bipole@voltage@straightfalse \pgf@circuit@bipole@voltage@raisedfalse }} % are these used? \ctikzset{current/.is choice} \ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse} \ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue} % this is left for backward compatibility... \ctikzset{straight/.is choice} \ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}} \ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}} \ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight} % % voltage is used also to set parameters, apart for the /.is choice % above. I hope it is ok --- would be a mess otherwise % \ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols \ctikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}} \tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}} % % keys for exporting voltage, current, flow anchors % \newif\ifpgfcirc@has@v\pgfcirc@has@vfalse \newif\ifpgfcirc@has@f\pgfcirc@has@ffalse \newif\ifpgfcirc@has@i\pgfcirc@has@ifalse \def\ctikzgetanchor#1#2{\csname pgfcirc@#1-#2-anchor\endcsname} \def\ctikzgetdirection#1{\csname pgfcirc@#1-direction\endcsname} % % shaping the +/- sign, see pgfcircvoltage.tex \ctikzset{voltage/american font/.initial={}} \ctikzset{voltage/american plus/.initial={$+$}} \ctikzset{voltage/american minus/.initial={$-$}} % here we start the voltage adjustments for special components. % default values: % % this is the distance of the "point" marking the voltage along the line % 0.0 is on the external nodes of the to path % 1.0 is cramped on the object % this can be overriden component by component \ctikzset{voltage/distance from node/.initial=.5}% pos, 0->1 % % this is the distance from the line (perpendicular to) where the voltage is drawn. % It is global, and not adjustable by component (use the "label distance" or locally % if you need it) \ctikzset{voltage/distance from line/.initial=.08}% in \pgf@circ@scaled@Rlen units % % bend paramenters for european arc. You can override them component-based \ctikzset{voltage/bump b/.initial=1.5} % % generator voltages symbols or arrows (always straight) are put along the % 60 ... 120 angles of the symbol (don't ask why). The distance here is on the % center..angle line. It's called bump a because I don't know... % \ctikzset{voltage/bump a/.initial=1.2} % % these are the label distances FROM the drawings. % You can override them component by component. \ctikzset{voltage/european label distance/.initial=1.4} \ctikzset{voltage/straight label distance/.initial=1.4} \ctikzset{voltage/american label distance/.initial=1.4} % american open voltage adjusting % \newif\ifpgf@adjust@open@voltage\pgf@adjust@open@voltagetrue \ctikzset{open voltage position/.is choice} \ctikzset{open voltage position/center/.code={\pgf@adjust@open@voltagetrue}} \ctikzset{open voltage position/legacy/.code={\pgf@adjust@open@voltagefalse}} % bad names, kept for compatibility, don't use \ctikzset{american open voltage/.is choice} \ctikzset{american open voltage/center/.code={\pgf@adjust@open@voltagetrue}} \ctikzset{american open voltage/legacy/.code={\pgf@adjust@open@voltagefalse}} % % voltage and current styles % \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{straight voltages/.style = {\circuitikzbasekey/voltage = straight}} \tikzset{raised voltages/.style = {\circuitikzbasekey/voltage = raised}} %%>>> \endinput % vim: set fdm=marker fmr=%<<<,%>>>: