diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex new file mode 100644 index 00000000000..97e6259df39 --- /dev/null +++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex @@ -0,0 +1,285 @@ +% 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 + } +} + + +% Default position varies whether the component is a voltage source +% or not +\ctikzset{v/.code = { + \ifpgf@circuit@bipole@isvoltage + \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above, + \circuitikzbasekey/bipole/voltage/direction=forward} + \else + \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below, + \circuitikzbasekey/bipole/voltage/direction=backward} + \fi + \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1} + \ctikzsetvalof{bipole/voltage/label/unit}{} + \ifpgf@circ@siunitx + \pgf@circ@handleSI{#1} + \ifpgf@circ@siunitx@res + \edef\pgf@temp{\pgf@circ@handleSI@val} + \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp} + \edef\pgf@temp{\pgf@circ@handleSI@unit} + \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp} + \else + \fi + \else + \fi + } +} + +\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} } + + +%% Output routine for generic bipoles + +\def\pgf@circ@drawvoltagegeneric{ + \pgfextra{ + \ifnum \ctikzvalof{mirror value}=-1 + \ifpgf@circuit@bipole@voltage@below\pgf@circuit@bipole@voltage@belowfalse\else\pgf@circuit@bipole@voltage@belowtrue\fi + \fi + + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@voltage@angle{90} + \else + \def\pgf@circ@voltage@angle{-90} + \fi + + \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node} + \pgfkeysifdefined{\pgf@temp} + { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} } + { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} } + \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b} + \pgfkeysifdefined{\pgf@temp} + { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} } + { \edef\bumpb{\ctikzvalof{voltage/bump b}} } + } + + coordinate (pgfcirc@mid) at ($(\tikztostart) ! \distacefromnode ! (\ctikzvalof{bipole/name}.left)$) + coordinate (pgfcirc@Vfrom) at ($(pgfcirc@mid) ! -\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle:(\ctikzvalof{bipole/name}.left)$) + + coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (\ctikzvalof{bipole/name}.right)$) + coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle : (\ctikzvalof{bipole/name}.right)$) + + \ifpgf@circuit@bipole@voltage@below + coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$) + coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$) + \else + coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$) + coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$) + \fi + + \ifpgf@circuit@europeanvoltage + \ifpgf@circuit@bipole@voltage@backward + (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) .. + node[currarrow, sloped, allow upside down, pos=1] {} + (pgfcirc@Vfrom) + \else + (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) .. + node[currarrow, sloped, allow upside down, pos=1] {} + (pgfcirc@Vto) + \fi + \else + \ifpgf@circuit@bipole@voltage@backward + (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$} + (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$} + \else + (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$} + (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$} + \fi + \fi +} + +%% Output routine for voltage sources + +\def\pgf@circ@drawvoltagegenerator{ + \ifpgf@circuit@bipole@voltage@below + coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$) + coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$) + \else + coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$) + coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$) + \fi + + \ifpgf@circuit@europeanvoltage + \ifpgf@circuit@bipole@voltage@backward + (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1) + \else + (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2) + \fi + + \else % american voltage + + \pgfextra{ + \def\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}} + \def\pgf@circ@temp{battery} + \ifx\pgf@temp\pgf@circ@temp + \edef\pgf@circ@batteria{battery} + \else + \def\pgf@circ@temp{battery1} + \ifx\pgf@temp\pgf@circ@temp + \edef\pgf@circ@batteria{battery} + \else + \edef\pgf@circ@batteria{false} + \fi + \fi + \edef\pgf@circ@temp{battery} + } + + \ifx\pgf@circ@batteria\pgf@circ@temp % if it is a battery, must put + and - + \ifpgf@circuit@bipole@voltage@backward + (pgfcirc@Vcont2) node {$-$} (pgfcirc@Vcont1) node {$+$} + \else + (pgfcirc@Vcont1) node {$-$} (pgfcirc@Vcont2) node {$+$} + \fi + \fi + + \fi +} + +%% Output routine + +\def\pgf@circ@drawvoltage{ % node name + \pgfextra{ + \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} + + \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{north west} + \else \def\pgf@circ@bipole@voltage@label@anchor{south east} + \fi + \fi\fi + \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{west} + \else \def\pgf@circ@bipole@voltage@label@anchor{east} + \fi + \fi\fi + \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{south west} + \else \def\pgf@circ@bipole@voltage@label@anchor{north east} + \fi + \fi\fi + \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{south} + \else\def\pgf@circ@bipole@voltage@label@anchor{north} + \fi + \fi\fi + \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{south east} + \else\def\pgf@circ@bipole@voltage@label@anchor{north west} + \fi + \fi\fi + \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{east} + \else \def\pgf@circ@bipole@voltage@label@anchor{west} + \fi + \fi\fi + \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{north east} + \else\def\pgf@circ@bipole@voltage@label@anchor{south west} + \fi + \fi\fi + \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{north} + \else\def\pgf@circ@bipole@voltage@label@anchor{south} + \fi + \fi\fi + \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361 + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@anchor{north} + \else\def\pgf@circ@bipole@voltage@label@anchor{south} + \fi + \fi\fi + + \ifpgf@circuit@bipole@voltage@below + \def\pgf@circ@bipole@voltage@label@where{-90} + \else + \def\pgf@circ@bipole@voltage@label@where{90} + \fi + + \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance} + \pgfkeysifdefined{\pgf@temp} + { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} } + { \edef\eudist{\ctikzvalof{voltage/european label distance}} } + } + + \ifpgf@circuit@bipole@isvoltage + \pgf@circ@drawvoltagegenerator + \else + \pgf@circ@drawvoltagegeneric + \fi + (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where) + coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) ! + \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi ! + (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$) + node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0] + at (Vlab) { \pgf@circ@finallabel{voltage/} } +} + + + + +\endinput + +% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! +% \ctikzvalof{voltage/bump b} ! +% (\ctikzvalof{bipole/name}.-110) $) +% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! +% \ctikzvalof{voltage/bump b} ! +% (\ctikzvalof{bipole/name}.-70) $) +% \else +% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! +% \ctikzvalof{voltage/bump b} ! +% (\ctikzvalof{bipole/name}.110) $) +% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! +% \ctikzvalof{voltage/bump b} ! +% (\ctikzvalof{bipole/name}.70) $) +% \fi |