Preciso de interruptores diferentes daqueles dentro do circuitikz. Já os desenhei com apenas algumas linhas, mas gostaria de usá-los como os outros componentes padrão do circuitikz. Encontrei apenas alguns tutoriais que adicionam algumas linhas a um componente existente, como um resistor, mas não tenho ideia de como adicionar uma peça totalmente nova. Talvez alguns de vocês sejam capazes de fazer isso?
Aqui está meu exemplo mínimo de trabalho:
\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}
O resultado:
Eu gostaria de obter o mesmo resultado com isso:
\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}
Obrigado!
Responder1
Usei os mesmos parâmetros de altura, largura e profundidade para Offner e 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}