summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex')
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex92
1 files changed, 71 insertions, 21 deletions
diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
index 6bf0b72ac7..5be686bdff 100644
--- a/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircbipoles.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2023 by Romano Giannetti
-% Copyright 2015-2023 by Stefan Lindner
-% Copyright 2013-2023 by Stefan Erhardt
-% Copyright 2007-2023 by Massimo Redaelli
+% Copyright 2018-2024 by Romano Giannetti
+% Copyright 2015-2024 by Stefan Lindner
+% Copyright 2013-2024 by Stefan Erhardt
+% Copyright 2007-2024 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2167,12 +2167,74 @@
\pgfusepath{draw}
}
+
+%% macros for the sources with plus and minus internally
%% To change the internal symbols of the voltage source american style
\ctikzset{bipoles/vsourceam/inner plus/.initial={$+$}}
% In the mayority of fonts, the size of - is smaller than +, so we have
% unaligned signs when positioned independently.
% See https://github.com/circuitikz/circuitikz/issues/721
\ctikzset{bipoles/vsourceam/inner minus/.initial={$\vphantom{+}-$}}
+%%
+%% add the possibility to change the orientation of signs
+\ctikzset{sources/symbol/sign rotation/.initial=default}% default, auto, or value
+%% this should be more or less equivalent to \ctikzset{sources/symbol/sign rotation=90}, but it's font-dependent,
+%% so you never know. Let's keep the traditional one here.
+\def\pgf@circ@vsources@signs@default{%
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}}%
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}}%
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}}%
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}}%
+ \fi
+}
+\def\pgf@circ@vsources@sign@auto@or@fix{%
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ % the distance here is choosen so that it seems ok with standard fonts... probably, it must be changed.
+ \pgfmathsetlength{\pgf@circ@res@temp}{%
+ \ctikzvalof{bipoles/vsourceam/margin}*\pgf@circ@res@up
+ -0.5*height("\ctikzvalof{bipoles/vsourceam/inner plus}")}
+ \ifx\@@rotmode\@@auto
+ \pgfmathsetmacro{\innerrot}{abs(\rot)<46?0:(abs(\rot)>134?0:90)}
+ \else
+ \ifx\@@rotmode\@@straight
+ \pgfmathsetmacro{\innerrot}{\rot}
+ \else
+ \pgfmathsetmacro{\innerrot}{\@@rotmode}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@temp}
+ \pgftext[rotate=\innerrot]{\ctikzvalof{bipoles/vsourceam/inner plus}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformxshift{-\pgf@circ@res@temp}
+ \pgftext[rotate=\innerrot]{\ctikzvalof{bipoles/vsourceam/inner minus}}
+ \endpgfscope
+ \else
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@temp}
+ \pgftext[rotate=\innerrot]{\ctikzvalof{bipoles/vsourceam/inner minus}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformxshift{-\pgf@circ@res@temp}
+ \pgftext[rotate=\innerrot]{\ctikzvalof{bipoles/vsourceam/inner plus}}
+ \endpgfscope
+ \fi
+}
+\def\pgf@circ@vsources@draw@signs{%
+ \edef\@@auto{auto}\edef\@@default{default}\edef\@@straight{straight}%
+ \edef\@@rotmode{\ctikzvalof{sources/symbol/sign rotation}}%
+ \ifx\@@rotmode\@@default
+ \pgf@circ@vsources@signs@default
+ \else
+ \pgf@circ@vsources@sign@auto@or@fix
+ \fi
+}
+
%% Independent voltage source - American style
\pgfcircdeclarebipolescaled{sources}
{}
@@ -2188,13 +2250,7 @@
\pgf@circ@draworfill
\endpgfscope
\pgf@circ@text@strokecolor
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}}
- \fi
+ \pgf@circ@vsources@draw@signs
}
%% Independent sinusoidal voltage source
@@ -2992,13 +3048,7 @@
\pgf@circ@draworfill
\endpgfscope
\pgf@circ@text@strokecolor
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
- \fi
+ \pgf@circ@vsources@draw@signs
}
%% Controlled sinusoidal voltage source
@@ -6303,7 +6353,7 @@
\pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
\pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
\pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
+ \pgfpathclose
\pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
\pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
\pgfusepath{draw}
@@ -6353,7 +6403,7 @@
\pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
\pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
\pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
+ \pgfpathclose
\pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
\pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
\pgfusepath{draw}
@@ -7090,7 +7140,7 @@
\pgfusepath{draw}
\endpgfscope{}
- \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
\pgfusepath{fill}
}