% Copyright 2018-2020 by Romano Giannetti % Copyright 2015-2020 by Stefan Lindner % Copyright 2013-2020 by Stefan Erhardt % Copyright 2007-2020 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. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Current handling %% styles \ctikzset{bipole current style/.style={}} \tikzset{bipole current style/.code={ \ctikzset{bipole current style/.style={#1}} }} \tikzset{bipole current append style/.code={ \ctikzset{bipole current style/.append style={#1}} }} %% 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 = forward } } \ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } } %% Output routine \def\pgf@circ@drawcurrent{ \pgfextra{ \edef\pgf@circ@ffffff{\pgf@circ@direction} \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil} \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east} \fi \fi\fi \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east} \fi \fi\fi \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east} \fi \fi\fi \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north} \fi \fi\fi \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west} \fi \fi\fi \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west} \fi \fi\fi \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west} \fi \fi\fi \ifnum\pgfcircmathresult <5 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south} \fi \fi \ifnum\pgfcircmathresult >355 \ifpgf@circuit@bipole@current@below \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south} \fi \fi \ifpgf@circuit@bipole@current@below \def\pgf@circ@bipole@current@label@where{-90} \else \def\pgf@circ@bipole@current@label@where{+90} \fi } \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}} \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line (\tikztostart)--(\tikztotarget) \else% normal bipole or source \ifpgf@circuit@bipole@current@before (\tikztostart)--(anchorstartnode) \else (anchorendnode)--(\tikztotarget) \fi \fi \ifpgf@circuit@bipole@current@backward \pgfextra{ \pgfmathsubtract{\pgf@circ@ffffff}{180} \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} } \fi coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff, anchor=center](Iarrow) (Iarrow.\pgf@circ@bipole@current@label@where) node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style] (\ctikzvalof{bipole/name}current){\pgf@circ@finallabels{current/label}} } \endinput