texlabels := 1; tracingstats:=1; %prologues:=2; u:=10bp; input mpcirc; texprolog := texprolog & "\def\ii{_{\rm{in}}}\def\oo{_{\rm{out}}}"; verbatimtex \def\ii{_{\rm{in}}}\def\oo{_{\rm{out}}} etex %expandafter show get_vars_nest_(1); %end def depsource (expr curin, curout, lb) = u:=1cm; h:=1.5u; w:=1.5u; pair arrsep, arrdir; arrsep:=(.1u,.1u); arrdir:=(.3u,0); prepare (ioc1,ioc2,ioc3,ioc4); if curout: prepare (gm); betw.d (gm) 4,3; setlab.gm.lab (lb)(bot)(bot); else: prepare (rm); betw.u (rm) 3,4; setlab.rm.lab (lb)(top)(top); fi; z1=origin; z2=z1+(0,h); z3=z1+(w,0); z4=z1+(w,h); % fix the bounding box draw z1 + (-1.3w,-.35h) withpen pencircle scaled 0; draw z4 + (1.3w,.35h) withpen pencircle scaled 0; conn.h (z1,ioc1.a) -w; conn.h (z2,ioc2.a) -w; conn.h (z3,ioc3.a) w; conn.h (z4,ioc4.a) w; ioc1t=ioc2t=T.l; % label.lft (btex$\mu v_1$etex, epos.lft(rm1)); edraw; draw z1+(-.5w,-.25w) -- z2+(-.5w,.25w) -- z4+(.5w,.25w) -- z3+(.5w,-.25w) -- cycle dashed evenly scaled 1; if curin: drawarrow ioc2a+arrsep -- ioc2a+arrsep+arrdir; label.top (btex$i_1$etex, ioc2a+arrsep+.5arrdir); awire (z1,z2); else: label.top (btex$-$etex, ioc1); label.bot (btex$+$etex, ioc2); label (btex$v_1$etex, .5[ioc1,ioc2]); fi; if curout: drawarrow ioc4a-(arrsep yscaled -1) -- ioc4a-(arrsep yscaled -1)-arrdir; label.top (btex$i_2$etex, ioc4a-(arrsep yscaled -1) -.5arrdir); else: label.top (btex$-$etex, ioc3); label.bot (btex$+$etex, ioc4); label (btex$v_2$etex, .5[ioc3,ioc4]); fi; enddef; beginfig(1) depsource (false,false,btex$\mu v_1$etex); endfig; beginfig(2) depsource (true,false,btex$r_m i_1$etex); endfig; beginfig(3) depsource (false,true,btex$g_m v_1$etex); endfig; beginfig(4) depsource (true,true,btex$\alpha i_1$etex); endfig; end