CircuiTikZ - altera a posição da etiqueta de tensão ao longo do desenho aberto

CircuiTikZ - altera a posição da etiqueta de tensão ao longo do desenho aberto

Existe uma maneira de ajustar a aparência de uma etiqueta de tensão entre dois pontos? Por padrão, o rótulo $U_1$será colocado no meio da seta de tensão, mas quero que apareça em um ponto relativo ao comprimento da seta de tensão, por exemplo, em um quarto ou em 70%.

\usepackage[americaninductors, straightvoltages]{circuitikz}

\begin{document}
    \begin{circuitikz}
        \draw (0,0) to [open, v^=$U_1$] (2,0);
    \end{circuitikz}
\end{document} 

insira a descrição da imagem aqui

Responder1

Depende basicamente de quão novo é o seu arquivo circuitikz. Desde 1.2.1 você pode usar as coordenadas para tensões e fazer algo assim:

\documentclass[a4paper,12pt]{article}
\usepackage[EFvoltages, americaninductors, straightvoltages]{circuitikz}

\begin{document}
    \begin{circuitikz}
        \draw 
        (0,0) to [open, v, name=O1] (2,0);
        \draw [thin, -Triangle] (O1-Vfrom) -- (O1-Vto) node[above, pos=0.2]{$U_1$};
    \end{circuitikz}
\end{document}

Imagem de exemplo

Observe que adicionei a opção de direção de tensão (veja os avisos!). eu copio aquia parte relevante do manual...

Trecho do manual 1.2.3 do circuitikz

Responder2

Espero ter entendido bem. Você pode mudar o rótulo manualmente usando o comando \mkern<value>... apenas isso é como um exemplo.

\documentclass[a4paper,12pt]{article}
\usepackage[americaninductors, straightvoltages]{circuitikz}

\begin{document}
    \begin{circuitikz}
        \draw (0,0) to [open, v^=$U_1$] (2,0);
        \draw (0,0) to [open, v^=$\mkern30mu U_2$] (2,0);
    \end{circuitikz}
\end{document} 

insira a descrição da imagem aqui

Responder3

uma solução é um nó extra na posição correta e substituir a etiqueta de tensão por um espaço protegido como este

\documentclass[a4paper,12pt]{article}
\usepackage[americaninductors, straightvoltages]{circuitikz}

\begin{document}
    \begin{circuitikz}
        \draw 
        (0,0) to [open, v=\ ] (2,0)
        (0.5,0) node[above]{$U_1$};
    \end{circuitikz}
\end{document} 

insira a descrição da imagem aqui

mas não é uma solução muito inteligente...

informação relacionada