O posicionamento do rótulo do circuitikz parece inconsistente - como consertar?

O posicionamento do rótulo do circuitikz parece inconsistente - como consertar?

eu sou novocircuitikze bastante novo no TikZ, e tem um problema aparentemente simples. As etiquetas dos meus resistores estão em lados opostos, sem nenhum motivo que eu possa encontrar.

saída

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

Presumivelmente, eu poderia colocar os rótulos (semi) manualmente (como não sei como colocar um nó em relação a um caminho, teria que colocá-los totalmente manualmente por enquanto), mas tenho certeza de que deveria haver uma maneira de dizer qual lado do resistor (ou outra linha) colocar a etiqueta.

Responder1

Como foi mencionado nos comentários, você obtém um posicionamento diferente porque diferentes direções são usadas pelos caminhos: o primeiro componente está em um caminho que vai para baixo e o segundo está em um caminho que vai para cima.

circuitikzusa a direção do caminho para colocar os rótulos; por padrão, os rótulos são colocados à direita para caminhos que vão para baixo e acima para caminhos que vão da esquerda para a direita; os rótulos são colocados à esquerda para caminhos que vão para cima e abaixo para caminhos que vão da direita para a esquerda. O local de posicionamento padrão pode ser alterado usando os modificadores l^, l_(veja o segundo código abaixo).

Para obter um resultado consistente, você pode simplesmente desenhar seus componentes usando caminhos na mesma direção, portanto, para o segundo componente, em vez de

\draw(4,-3)to[R=$R_{\mathrm{L2}}$,*-*] (4,-1); 

você pode usar

\draw(4,-1)to[R=$R_{\mathrm{L2}}$,*-*] (4,-3); 

Um exemplo completo:

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

insira a descrição da imagem aqui

Outra opção é desenhar seus caminhos em qualquer direção e então usar a sintaxe l^=ou l_=para colocar os rótulos no local apropriado:

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

Responder2

Uma solução 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}

saída

informação relacionada