% 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 = forward } } \ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } } \def\pgf@circ@drawnormalcurrent{ \ifpgf@circuit@bipole@current@before \ifpgf@circuit@bipole@current@backward { (\ctikzvalof{bipole/name}.left) -- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {} (\tikztostart) } \else { (\tikztostart) -- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {} (\ctikzvalof{bipole/name}.left) } \fi \else \ifpgf@circuit@bipole@current@backward { (\tikztotarget) -- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {} (\ctikzvalof{bipole/name}.right) } \else { (\ctikzvalof{bipole/name}.right) -- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {} (\tikztotarget) } \fi \fi } %% Output routine %% #1 - node name \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 <256 \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 >284 \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 % caso di corrente (centrata) su un corto \ifpgf@circuit@bipole@current@backward { (\tikztotarget) -- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {} (\tikztostart) } \else { (\tikztostart) -- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {} (\tikztotarget) } \fi \else % altri bipoli - e quindi tra nodo e target \ifpgf@circuit@bipole@iscurrent \ifpgf@circuit@europeancurrent \pgf@circ@drawnormalcurrent \else \fi \else \pgf@circ@drawnormalcurrent \fi \fi \ifpgf@circuit@bipole@iscurrent node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where) { \pgf@circ@finallabel{current/} } \else (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir] { \pgf@circ@finallabel{current/} } \fi } \endinput