4

I have created a new circuit symbol for battery source (var battery). There are two problems and one question:

  1. I would like for minus to be always horizontal.
  2. I would like to control how plus and minus are oriented (e.g. plus up or plus down).
  3. Is it possible to change graphical representation of + and - with text symbols?

Regards, Marko

\documentclass[12pt,a4paper]{article}
\input{glava}
\usepackage{tikz}

\begin{document}

\usetikzlibrary{circuits.ee}
\usetikzlibrary{circuits.ee.IEC}

\tikzset{circuit declare symbol = var battery}
\tikzset{set var battery graphic = var battery IEC graphic}
\tikzset{var battery IEC graphic/.style=
  {transform shape, circuit symbol lines, circuit symbol size = width
2.5 height 2.5,
   shape=generic circle IEC, /pgf/generic circle IEC/before
background=
    {\pgfpathcircle{\pgfpoint{0.45pt}{0pt}}{0.1pt}
     \pgfpathcircle{\pgfpoint{-0.45pt}{0pt}}{0.1pt}
     \pgfpathmoveto{\pgfpoint{-1.0pt}{0pt}}
     \pgfpathlineto{\pgfpoint{-0.6pt}{0pt}}
     \pgfpathmoveto{\pgfpoint{1.0pt}{0pt}}
     \pgfpathlineto{\pgfpoint{0.6pt}{0pt}}
     % PLUS SYMBOL
     \pgfpathmoveto{\pgfpoint{-0.45pt}{0.25pt}}
     \pgfpathlineto{\pgfpoint{-0.45pt}{0.65pt}}
     \pgfpathmoveto{\pgfpoint{-0.25pt}{0.45pt}}
     \pgfpathlineto{\pgfpoint{-0.65pt}{0.45pt}}
     % MINUS SYMBOL
     \pgfpathmoveto{\pgfpoint{0.25pt}{0.45pt}}
     \pgfpathlineto{\pgfpoint{0.65pt}{0.45pt}}
     \pgfusepathqstroke}}}

\begin{tikzpicture}[circuit ee IEC,semithick,x=1cm,y=1cm]
\draw (0,0) to [capacitor] (3,0)
to [resistor] (3,2)
to [var battery] (0,2)
to [var battery={info'={$U_3$}}] (0,0);
\end{tikzpicture}

\end{document} 
4

Here's one solution. It uses \pgftransformresetnontranslation to make sure the minus is typeset the right way round, and then sets a new scaling factor as a multiple of \tikzcircuitssizeunit, which makes sure the symbol scales according to the <size> circuit symbols style.

\documentclass[12pt,a4paper]{article}
%\input{glava}
\usepackage{tikz}

\begin{document}

\usetikzlibrary{circuits.ee}
\usetikzlibrary{circuits.ee.IEC}

\newif\ifreversepolarity
\tikzoption{reversepolarity}[true]{\reversepolaritytrue}


\tikzset{circuit declare symbol = var battery}
\tikzset{set var battery graphic = var battery IEC graphic}
\tikzset{var battery IEC graphic/.style=
  {transform shape, circuit symbol lines, circuit symbol size = width
2.5 height 2.5,
   shape=generic circle IEC, /pgf/generic circle IEC/before
background=
    {
     \pgfpathcircle{\pgfpoint{0.45pt}{0pt}}{0.1pt}
     \pgfpathcircle{\pgfpoint{-0.45pt}{0pt}}{0.1pt}
     \pgfpathmoveto{\pgfpoint{-1.0pt}{0pt}}
     \pgfpathlineto{\pgfpoint{-0.6pt}{0pt}}
     \pgfpathmoveto{\pgfpoint{1.0pt}{0pt}}
     \pgfpathlineto{\pgfpoint{0.6pt}{0pt}}
     \pgfusepathqstroke
     % PLUS AND MINUS SYMBOL
     \pgfgettransform\savedtransform
     \pgftransformshift{\pgfpoint{0.45pt}{0.45pt}}
     \pgftransformresetnontranslations
     \pgftransformscale{0.075\tikzcircuitssizeunit}
     \pgftext{\bf{\ifreversepolarity$-$\else$+$\fi}}
     \pgfsettransform\savedtransform
     \pgftransformshift{\pgfpoint{-0.45pt}{0.45pt}}
     \pgftransformresetnontranslations
     \pgftransformscale{0.075\tikzcircuitssizeunit}
     \pgftext{\bf{\ifreversepolarity$+$\else$-$\fi}}
     \pgfsettransform\savedtransform
     }}}

\begin{tikzpicture}[circuit ee IEC,semithick,x=1cm,y=1cm]
\draw (0,0) to [capacitor] (3,0)
to [resistor] (3,2)
to [var battery,reversepolarity,tiny circuit symbols] (0,2)
to [var battery={info'={$U_3$}},huge circuit symbols] (0,0);
\end{tikzpicture}

\end{document} 

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.