circuitikz ラベルの配置が一貫していないようです。どうすれば修正できますか?

circuitikz ラベルの配置が一貫していないようです。どうすれば修正できますか?

私は初心者ですcircuitikzTikZ は初心者ですが、一見単純な問題があります。抵抗器のラベルが反対側にありますが、理由はわかりません。

出力

\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

コメントで述べられているように、パスによって異なる方向が使用されるため、配置が異なります。最初のコンポーネントは下向きのパス上にあり、2 番目のコンポーネントは上向きのパス上にあります。

circuitikzパスの方向を使用してラベルを配置します。デフォルトでは、下向きのパスの場合はラベルは右側に配置され、左から右に向かうパスの場合は上に配置されます。上向きのパスの場合はラベルは左側に配置され、右から左に向かうパスの場合は下に配置されます。デフォルトの配置場所は、l^,l_修飾子を使用して変更できます (以下の 2 番目のコードを参照)。

一貫した結果を得るには、同じ方向のパスを使用してコンポーネントを描画するだけで済みます。つまり、2番目のコンポーネントでは、

\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}

ここに画像の説明を入力してください

もう 1 つのオプションは、任意の方向にパスを描画し、l^=または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}

出力

関連情報