Set label name on two lines in CircuiTikZ
Here I provide a different solution from the one suggested by Peter.
Basically, I define a new kind of label lx
that accepts two commands: the first one is the component name (for example R_1
, C_1
) and the second is dedicated to the component value. Its behaviour is similar to the standard l
, therefore the followings:
lx_=...
lx^=...
hold. In conclusion, the command should be used as:
lx_={component_name and component_value}
For instance:
lx^={C$_1$ and \SI{1}{\farad}}
Here is the complete example:
\documentclass{article}
\usepackage[siunitx]{circuitikz}
\makeatletter
\ctikzset{lx/.code args={#1 and #2}{
\pgfkeys{/tikz/circuitikz/bipole/label/name=\parbox{1cm}{\centering #1 \\ #2}}
\ctikzsetvalof{bipole/label/unit}{}
\ifpgf@circ@siunitx
\pgf@circ@handleSI{#2}
\ifpgf@circ@siunitx@res
\edef\pgf@temp{\pgf@circ@handleSI@val}
\pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
\edef\pgf@temp{\pgf@circ@handleSI@unit}
\pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
\else
\fi
\else
\fi
}}
\ctikzset{lx^/.style args={#1 and #2}{
lx=#2 and #1,
\circuitikzbasekey/bipole/label/position=90 }
}
\ctikzset{lx_/.style args={#1 and #2}{
lx=#1 and #2,
\circuitikzbasekey/bipole/label/position=-90 }
}
\makeatother
\begin{document}
\begin{circuitikz}
\draw (0,-3) to [R, lx_={R$_1$ and \SI{510}{\ohm}}] (2,-3);
\draw (6,-3) to [C, lx^={C$_1$ and \SI{1}{\farad}}] (8,-3);
\end{circuitikz}
\end{document}
Result: