Я новичок вcircuitikz
и довольно новичок в TikZ, и у меня, казалось бы, простая проблема. Метки на моих резисторах находятся на противоположных сторонах, по непонятной мне причине.
\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}[node distance = 0.5cm, auto, font=\tiny, inner sep =0.8mm,american voltages]
\ctikzset {label/align = straight }
%PSU
\draw[dashed](0.5,-3.5)rectangle(3.5,2.5);
\node at (2,2.7) (PSU_l){PSU};
\draw (2,0) to[V=$V_{\mathrm{DS}}$,*-*] (2,2);
\draw (2,-3) to[V=$V_{\mathrm{GS}}$,*-*] (2,-1);
\draw (2,-1) to (4,-1) to (4,0) to (2,0);
%Load resistors
\draw (2,2) to (4,2);
\draw (4,2)to[R=$R_{\mathrm{L1}}$,*-*] (4,0);
\draw (2,-3) to (4,-3);
\draw(4,-3)to[R=$R_{\mathrm{L2}}$,*-*] (4,-1);
\end{tikzpicture}
\end{document}
Я мог бы, по-видимому, разместить метки (полу)вручную (поскольку я не знаю, как разместить узел относительно пути, поэтому мне пришлось бы размещать их полностью вручную на данный момент), но я уверен, что должен быть способ указать, с какой стороны резистора (или другой линии) размещать метку.
решение1
Как уже упоминалось в комментариях, вы получаете разное размещение, поскольку пути используют разные направления: первый компонент находится на пути, идущем вниз, а второй — на пути, идущем вверх.
circuitikz
использует направление пути для размещения меток; по умолчанию метки размещаются справа для путей, идущих вниз, и выше для путей, идущих слева направо; метки размещаются слева для путей, идущих вверх, и ниже для путей, идущих справа налево. Место размещения по умолчанию можно изменить с помощью модификаторов l^
, l_
(см. второй код ниже).
Чтобы получить единообразный результат, вы можете просто рисовать компоненты, используя пути в одном направлении, например, для второго компонента вместо
\draw(4,-3)to[R=$R_{\mathrm{L2}}$,*-*] (4,-1);
вы можете использовать
\draw(4,-1)to[R=$R_{\mathrm{L2}}$,*-*] (4,-3);
Полный пример:
\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}[node distance = 0.5cm, auto, font=\tiny, inner sep =0.8mm,american voltages]
\ctikzset {label/align = straight }
%PSU
\draw[dashed](0.5,-3.5)rectangle(3.5,2.5);
\node at (2,2.7) (PSU_l){PSU};
\draw (2,0) to[V=$V_{\mathrm{DS}}$,*-*] (2,2);
\draw (2,-3) to[V=$V_{\mathrm{GS}}$,*-*] (2,-1);
\draw (2,-1) to (4,-1) to (4,0) to (2,0);
%Load resistors
\draw (2,2) to (4,2);
\draw (4,2)to[R=$R_{\mathrm{L1}}$,*-*] (4,0);
\draw (2,-3) to (4,-3);
\draw(4,-1)to[R=$R_{\mathrm{L2}}$,*-*] (4,-3);
\end{tikzpicture}
\end{document}
Другой вариант — нарисовать пути в любом направлении, а затем использовать синтаксис l^=
or l_=
для размещения меток в соответствующих местах:
\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}[node distance = 0.5cm, auto, font=\tiny, inner sep =0.8mm,american voltages]
\ctikzset {label/align = straight }
%PSU
\draw[dashed](0.5,-3.5)rectangle(3.5,2.5);
\node at (2,2.7) (PSU_l){PSU};
\draw (2,0) to[V=$V_{\mathrm{DS}}$,*-*] (2,2);
\draw (2,-3) to[V=$V_{\mathrm{GS}}$,*-*] (2,-1);
\draw (2,-1) to (4,-1) to (4,0) to (2,0);
%Load resistors
\draw (2,2) to (4,2);
\draw (4,2)to[R=$R_{\mathrm{L1}}$,*-*] (4,0);
\draw (2,-3) to (4,-3);
\draw(4,-3)to[R,l_=$R_{\mathrm{L2}}$,*-*] (4,-1);
\end{tikzpicture}
\end{document}
решение2
Решение PSTricks:
\documentclass{article}
\usepackage{pst-circ}
\begin{document}
\begin{pspicture}(7.25,10.4)
\pnodes{P}(0,0)(0,0)(0,10)(5,10)(2.5,1)(2.5,4.5)(6,4.5)(6,1)(2.5,5.5)(2.5,9)(6,9)(6,5.5)
\psframe[linestyle = dashed](P1)(P3)
\pcline[linestyle = none, offset = 9pt](P2)(P3)
\ncput{\textsc{psu}}
\psset{arrows = *-*, dipolestyle = zigzag, labelInside = 2, labeloffset = 1}
\Ucc(P4)(P5){$V_{\textsc{gs}}$}
\wire(P5)(P6)
\resistor(P6)(P7){$R_{\textsc{l}2}$}
\wire(P7)(P4)
\Ucc(P8)(P9){$V_{\textsc{ds}}$}
\wire(P9)(P10)
\resistor(P10)(P11){$R_{\textsc{l}1}$}
\wire(P11)(P8)
\end{pspicture}
\end{document}