PSTricks - ще одна бібліотека для користувачів TeX. Він навіть може робити складні математичні обчислення, такі як диференціальні рівняння.
\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl,pst-circ}
\psset
{
dipolestyle=zigzag,
labelangle=0,
labeloffset=-.9,
intensitylabeloffset=-.4,
tensionstyle=pm,
tensionoffset=.9,
tensionlabeloffset=.9,
%tensioncolor=red,
%tensionlabelcolor=blue,
}
\begin{document}
\begin{pspicture}[showgrid=none](12,-12)
\pstGeonode[PosAngle={135,90,45,0,-45,-90,-135,180,45}]
(2,-2){A}
(6,-2){B}
(10,-2){C}
(10,-6){D}
(10,-10){E}
(6,-10){F}
(2,-10){G}
(2,-6){H}
(6,-6){I}
%
\resistor[intensitylabel=$i_1$,tensionlabel=$V_{HA}$](H)(A){$R_1$}
\resistor[tensionlabel=$V_{AB}$](A)(B){$R_2$}
\vdc[tensionlabel=$V_{BC}$](B)(C){$E_1$}
\resistor[tensionlabel=$V_{CB}$](C)(D){$R_3$}
%
\resistor[intensitylabel=$i_2$,tensionlabel=$V_{HI}$](H)(I){$R_4$}
\vdc[tensionlabel=$V_{ID}$](I)(D){$E_2$}
%
\resistor[intensitylabel=$i_3$,tensionlabel=$V_{HG}$](H)(G){$R_5$}
\newSwitch[ison=true,tensionlabel=$V_{GF}$](G)(F){$S_2$}
\wire(F)(E)
\resistor[tensionlabel=$V_{DE}$,dipoleconvention=generator](E)(D){$R_6$}
%
\vdc[tensionlabel=$V_{FI}$,dipoleconvention=generator](I)(F){$E_3$}
\newSwitch[intensitylabel=$i_4$,tensionlabel=$V_{BI}$,ison=false](B)(I){$S_1$}
\end{pspicture}
\end{document}