Circuitikz - Flechas de voltaje rectas con longitud fija

¿Cómo puedo dibujar todas las flechas de voltaje con la misma longitud fija (definida por el usuario)? Gracias de antemano por su apoyo.
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[european,straightvoltages]{circuitikz}
\ctikzset{bipoles/thickness=1}
\begin{document}
\begin{circuitikz}[line width = 0.35mm,voltage shift = 0.5]
\draw (0,0)
to[vsource, v_<=$U_0$] (0,4)
to[R,v>=$U_1$] ++(5,0);
\draw (5,4)
to[R,v>=$U_2$] ++(0,-4);
\draw (5,4)
to[short] ++({2.5},0)
to[R,v>=$U_3$] ++(0,-2)
to[R,v>=$U_4$] ++(0,-2)
to[short] (0,0);
\end{circuitikz}
\end{document}
Respuestas
Aparentemente, las flechas de voltaje no dependen del tamaño de la resistencia sino de la distancia entre las coordenadas entre las que se dibuja una resistencia. En otras palabras, debe proporcionar estas distancias de igual tamaño:
\documentclass[margin=3mm]{standalone}
\usepackage[european, straightvoltages]{circuitikz}
\ctikzset{bipoles/thickness=1}
\begin{document}
\begin{circuitikz}[
line width = 0.8pt,
voltage shift = 0.5]
\draw (0,0) to[vsource, v_<=$U_0$] (0, 4) -- ++ (0.5,0)
to[R,v>=$U_1$] ++ (2, 0) -- ++ (0.5,0) coordinate (aux)
-- ++ (0,-1)
to[R,v>=$U_2$] ++ (0,-2) -- ++ (0 ,-1)
(aux) to[short] ++ (2, 0)
to[R,v>=$U_3$] ++ (0,-2)
to[R,v>=$U_4$] ++ (0,-2)
to[short] (0,0);
\end{circuitikz}
\end{document}
lo que da:

Esto puede considerarse como características incorrectas del paquete. Espero que uno de los autores del paquete vea pronto su pregunta y sugiera una solución mejor o proporcione alguna solución al paquete.
Como dijo @Zarko (¡Por cierto, gracias!), La longitud y la posición de la flecha depende de la rama en la que se encuentren, y no del tamaño del componente. Esta fue una decisión de diseño desde los albores de los tiempos (para circuitikz
), mucho antes de que comenzara a mantenerlo conjuntamente, por lo que básicamente está escrito en piedra.
Puedo pensar en una posible bandera para cambiar esto (tan pronto como tenga un poco de tiempo), pero observe que hay muchas solicitudes de "deshacerse de bicicletas" para estas cosas ... mucha gente tiene gustos diferentes ( y el derecho a tenerlos!)
Así que recientemente agregué la posibilidad de "voltajes, corrientes y flujos avanzados" (manual alrededor de la página 155), y puedes obtener fácilmente lo que quieres aunque la sintaxis no es tan agradable (estoy pensando en cambiar esto también, pero no es fácil hacer una cosa general).
Entonces, por ejemplo (lea los comentarios)
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[european,straightvoltages,EFvoltages]{circuitikz}
\ctikzset{bipoles/thickness=1}
\newcommand{\fixedvlen}[3][0.75cm]{% [semilength]{node}{label}
% get the center of the standard arrow
\coordinate (#2-Vcenter) at ($(#2-Vfrom)!0.5!(#2-Vto)$);
% draw an arrow of a fixed size around that center and on the same line
\draw[blue, -Triangle] ($(#2-Vcenter)!#1!(#2-Vfrom)$) -- ($(#2-Vcenter)!#1!(#2-Vto)$);
% position the label as it where if standard voltages were used
\node[blue, anchor=\ctikzgetanchor{#2}{Vlab}] at (#2-Vlab) {#3};
}
\begin{document}
\begin{circuitikz}[line width = 0.35mm,voltage shift = 0.5]
\draw (0,0)
% using name=... and v_< without arguments enables the labels and nodes
% for personalized voltages.
to[vsource, bipole/is voltage=false, v_<, name=u0] (0,4)
to[R,v>, name=u1] ++(5,0);
\draw (5,4)
to[R,v>, name=u2] ++(0,-4);
\draw (5,4)
to[short] ++({2.5},0)
to[R,v>,name=u3] ++(0,-2)
to[R,v>,name=u4] ++(0,-2)
to[short] (0,0);
% add the personalized voltages
\fixedvlen{u0}{$U_0$}
\fixedvlen{u1}{$U_1$}
\fixedvlen[1cm]{u2}{$U_2$} % longer, to show off
\fixedvlen{u3}{$U_3$}
\fixedvlen{u4}{$U_4$}
\end{circuitikz}
\end{document}

Observe que agregué la bipole/is voltage=false
bandera al generador para suprimir el tratamiento especial para él.
Esta técnica es bastante poderosa --- realmente puede personalizar voltajes, corrientes y flujos de la manera que se sienta mejor (en este caso los coloreé de azul, solo como un ejemplo, pero las posibilidades son ilimitadas). Además, si mantiene un nombre coherente, puede simplificar mucho la cosa ... por ejemplo, puede cambiar las 5 líneas finales (perdiendo la U_2
longitud diferente ) con:
\foreach \ii in {0,...,4} {\fixedvlen{u\ii}{$U_\ii$}}
actualización: agregaré este ejemplo (y otro para flechas de voltaje con una longitud basada en la longitud del componente) en el manual: https://github.com/circuitikz/circuitikz/pull/466
Basado en las sugerencias de @Rmano, aquí hay una solución con la longitud y el color individuales de las flechas de voltaje, y la punta de flecha correcta de CircuiTikZ. Si desea que todas las flechas tengan el mismo aspecto, configure todos los parámetros con los mismos valores, por ejemplo, utilizando el bucle \ foreach.
\documentclass[border=1mm]{standalone}
\usepackage[european,straightvoltages,EFvoltages]{circuitikz}
% Set CircuiTikZ arrow dimensions
\makeatletter
\newdimen\ctikzAL\newdimen\ctikzAW
\pgfmathsetlength{\ctikzAL}{ 1.7 * \pgf@circ@Rlen / \ctikzvalof{current arrow scale} + 2*\pgflinewidth}
\pgfmathsetlength{\ctikzAW}{ 1.6 * \pgf@circ@Rlen / \ctikzvalof{current arrow scale} + 2*\pgflinewidth}
\makeatother
% #1 – Color, #2 – Length, #3 – Short name, #4 – Long name
\newcommand{\fxdvlen}[4][black]{
\coordinate (#3-Vcenter) at ($(#3-Vfrom)!0.5!(#3-Vto)$);
\draw[#1, -{Triangle[length=\the\ctikzAL, width=\the\ctikzAW]}] ($(#3-Vcenter)!#2!(#3-Vfrom)$) -- ($(#3-Vcenter)!#2!(#3-Vto)$);
\node[#1, anchor=\ctikzgetanchor{#3}{Vlab}] at (#3-Vlab) {#4};
}
\begin{document}
\begin{circuitikz}[line width = 0.35mm,voltage shift = 0.5]
\ctikzset{bipoles/thickness=1}
\draw (0,0)
% using name=... and v_< without arguments enables the labels and nodes for personalized voltages
to[vsource, bipole/is voltage=false, v_<, name=u0, i>=$I$] (0,3)
to[R,v>, name=u1] ++(3,0);
\draw (3,3)
to[R,v>, name=u2] ++(0,-3);
\draw (3,3)
to[short] ++(1.5,0)
to[R,v>,name=u3] ++(0,-1.5)
to[R,v>,name=u4] ++(0,-1.5)
to[short] (0,0);
%\foreach \ii in {0,...,4} {\fxdvlen[blue]{5mm}{u\ii}{$U_\ii$}}
Individual voltage arrows
\fxdvlen[red]{7mm}{u0}{$U_0$}
\fxdvlen[green]{6mm}{u1}{$U_1$}
\fxdvlen[blue]{5mm}{u2}{$U_2$}
\fxdvlen[brown]{4mm}{u3}{$U_3$}
\fxdvlen{3mm}{u4}{$U_4$}
\end{circuitikz}
\end{document}
