Necesito interruptores diferentes a los que están dentro de circuitikz. Ya los dibujé con solo algunas líneas pero me gustaría usarlos como los demás componentes estándar en circuitikz. Solo encontré algunos tutoriales que agregan algunas líneas a un componente existente como una resistencia, pero no tengo idea de cómo agregar una pieza completamente nueva. ¿Quizás alguno de ustedes sea capaz de hacer eso?
Aquí está mi ejemplo mínimo de trabajo:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[european]{circuitikz}
\begin{document}
\begin{circuitikz}
% Normally Open Switch
\draw[thick] (0,0) --++(0,0.5)--++(-0.4,1) coordinate (sw)
($(sw)+(0.4,0)$) --++(0,0.5);
% Normally Closed Switch
\draw[thick] (3,0) --++(0,0.5)--++(0.4,1) coordinate (sw)
($(sw)+(-0.4,-0.4)$) --++(0,0.9)
($(sw)+(-0.4,-0.4)$) --++(0.4,0);
\end{circuitikz}
\end{document}
El resultado:
Me gustaría obtener el mismo resultado con esto:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[european]{circuitikz}
\begin{document}
\begin{circuitikz}
% Normally Open Switch
\draw (0,0) to[nos] (0,2);
% Normally Closed Switch
\draw (3,0) to[ncs] (3,2);
\end{circuitikz}
\end{document}
¡Gracias!
Respuesta1
Utilicé los mismos parámetros de altura, ancho y profundidad para Offner y Schliesser.
\documentclass[border=5pt]{standalone}
%\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
%\usepackage[ngerman]{babel}
\usepackage[european]{circuitikz}
\makeatletter
\ctikzset{bipoles/offner/height/.initial=.35}
\ctikzset{bipoles/offner/width/.initial=.5}
\ctikzset{bipoles/offner/depth/.initial=.1}
\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/offner/depth}}{nos}{\ctikzvalof{bipoles/offner/height}}{\ctikzvalof{bipoles/offner/width}}{
\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
\pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
\pgfusepath{draw}
}
\def\nospath#1{\pgf@circ@bipole@path{nos}{#1}}
\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\nospath, l=#1}}
\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/offner/height}}{ncs}{\ctikzvalof{bipoles/offner/depth}}{\ctikzvalof{bipoles/offner/width}}{
\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
\pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@down}}
\pgfusepath{draw}
\pgfsetlinewidth{\pgfstartlinewidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
\pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
\pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@down}}
\pgfusepath{draw}
}
\def\ncspath#1{\pgf@circ@bipole@path{ncs}{#1}}
\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\ncspath, l=#1}}
\makeatother
\begin{document}
\begin{circuitikz}
% Normally Open Switch
\draw (0,0) to[nos] (0,2);
% Normally Closed Switch
\draw (3,0) to[ncs] (3,2);
\end{circuitikz}
\end{document}