答案1
注意:由于这是一道代答题,且没有提供 MWE,因此我不太可能回答有关此问题的更多问题。我这样做是为了自己练习。
\documentclass{report}
\usepackage{circuitikz}
\tikzset{% from https://tex.stackexchange.com/a/134090/117534
declare function={% in case of CVS which switches the arguments of atan2
atan3(\a,\b)=ifthenelse(atan2(0,1)==90, atan2(\a,\b), atan2(\b,\a));},
kinky cross radius/.initial=+.125cm,
@kinky cross/.initial=+, kinky crosses/.is choice,
kinky crosses/left/.style={@kinky cross=-},kinky crosses/right/.style={@kinky cross=+},
kinky cross/.style args={(#1)--(#2)}{
to path={
let \p{@kc@}=($(\tikztotarget)-(\tikztostart)$),
\n{@kc@}={atan3(\p{@kc@})+180} in
-- ($(intersection of \tikztostart--{\tikztotarget} and #1--#2)!%
\pgfkeysvalueof{/tikz/kinky cross radius}!(\tikztostart)$)
arc [ radius =\pgfkeysvalueof{/tikz/kinky cross radius},
start angle=\n{@kc@},
delta angle=\pgfkeysvalueof{/tikz/@kinky cross}180 ]
-- (\tikztotarget)}}}
\begin{document}
\begin{circuitikz}
\draw[color=orange,thick]
(-2,1) node[spdt,yscale=-1] (bottom-spdt) {}
(-2,3) node[spdt,yscale=-1] (top-spdt) {}
(top-spdt.in) to (bottom-spdt.in)
(top-spdt.out 2) to ++(3,0)
to[lamp,/tikz/circuitikz/bipoles/length=1cm] ++(0,-2.5) to ++(0,-1.5)
to[battery1] ++(-2,0) node(batt-left){}
|- (bottom-spdt.out 1)
(top-spdt.out 1) -| node(intersect){} (batt-left)
;
\draw[thick, color=violet!70]
(bottom-spdt.out 2) to[kinky cross=(intersect)--(batt-left)] ++(3,0)
;
\end{circuitikz}
\end{document}