Estoy intentando dibujar un puente de Wheatstone y este es el código que tengo hasta ahora:
\documentclass[12pt]{article}
\usepackage[americanvoltages,fulldiodes,siunitx]{circuitikz}
\usepackage[pdftex]{graphicx}
\usepackage[width=16.00cm, height=22.00cm]{geometry}
\usepackage{letltxmacro}
\begin{document}
\begin{circuitikz}[scale=2.5]\draw
(0,0) to[battery1, l=$V$] (0,2) -- (2,2)
to[R=$R_1$,*-*] (1,1)
to[R=$R_3$, *-*] (2,0) -- (0,0);
\draw (2,2) to[R=$R_2$, *-*] (3,1)
to[R=$R_4$, *-*] (2,0);
\draw (1,1) to[R=$R_5$, *-*] (3,1);
\draw[>=latex,->,color=magenta,text=black, thick] (0.6,1.9)
to[out=-0,in=-0] (1.4,1.9) to[out=8,in=70] (0.8,1)node[anchor=east]{$I_a$}
to[out=-70,in=-0] (1.4,0.1) to[out=-0,in=-0] (0.5,0.1);
\draw[>=latex,->,color=magenta,text=black, thick](1.7,1.3)arc(220:-50:0.4 and 0.15);
\draw[>=latex,<-,color=magenta,text=black, thick](1.7,0.8)arc(-220:50:0.4 and 0.15);
\filldraw[fill=black] (2,1.5) circle(0pt)node[anchor=south]{$I_b$};
\filldraw[fill=black] (2,0.78) circle(0pt)node[anchor=north]{$I_c$};
\end{circuitikz}
Y esto es lo que produce:
¡Observe cuán grandes son las etiquetas de las resistencias diagonales!
Pregunta 1:
¿Cómo puedo hacer que el tamaño de fuente de estas etiquetas vuelva a ser normal (es decir, el mismo tamaño que $R_5$
y $V$
)? No quiero utilizar editores de tamaño de fuente como \tiny
o \small
; Ya lo hice e incluso \tiny
sigo haciendo que el tamaño de fuente sea un poco más grande de lo normal. Debería haber una forma más natural para el tamaño de fuente.noaumentar y permanecer como se supone que debe ser, ¿no?
Pregunta 2:
La flecha curva larga $I_a$
tiene una esquina afilada cerca del centro que quiero suavizar (para que sea una curva suave), y las esquinas superior e inferior de la flecha no parecen tener una transición muy natural (es decir, se puede ver (que hay un poco de irregularidad, la línea curva no fluye naturalmente hacia la línea plana). ¿Existe una manera fácil de arreglar estas esquinas superior/media/inferior en lugar de tener que modificar individualmente todos los in/out
ángulos? Si es así, ¿cómo?
¡Gracias!
Respuesta1
Pregunta 1
En lugar de escalar el circuito, puedes usar x=<length>
, y=<length>
, para que las etiquetas, por ejemplo, no se vean afectadas.
Pregunta 2
Simplemente puede usar --
y rounded corners
para producir fácilmente un camino curvo suave. En el siguiente ejemplo, en lugar de
\draw[>=latex,->,color=magenta,text=black, thick] (0.6,1.9)
to[out=-0,in=-0] (1.4,1.9) to[out=8,in=70] (0.8,1)node[anchor=east]{$I_a$}
to[out=-70,in=-0] (1.4,0.1) to[out=-0,in=-0] (0.5,0.1);
solía
\draw[>=latex,->,color=magenta,text=black, thick,rounded corners=7pt]
(0.6,1.9) -- (1.6,1.9) --
(0.7,1) node[anchor=east]{$I_a$} --
(1.6,0.1) -- (0.5,0.1);
El código; También utilicé scope
al final para simplificar el código y coloqué I_b
y I_c
como nodos en las arc
rutas (esto produce el posicionamiento correcto sin intervención manual y simplifica el código):
\documentclass[12pt]{article}
\usepackage[americanvoltages,fulldiodes,siunitx]{circuitikz}
\usepackage{graphicx}
\usepackage[width=16.00cm, height=22.00cm]{geometry}
\usepackage{letltxmacro}
\begin{document}
\begin{circuitikz}[x=2.5cm,y=2.5cm]
\draw
(0,0) to[battery1, l=$V$] (0,2) -- (2,2)
to[R=$R_1$,*-*] (1,1)
to[R=$R_3$, *-*] (2,0) -- (0,0);
\draw
(2,2) to[R=$R_2$, *-*] (3,1)
to[R=$R_4$, *-*] (2,0);
\draw
(1,1) to[R=$R_5$, *-*] (3,1);
\begin{scope}[>=latex,color=magenta,thick,text=black]
\draw[->,rounded corners=7pt]
(0.6,1.9) -- (1.6,1.9) --
(0.7,1) node[anchor=east]{$I_a$} --
(1.6,0.1) -- (0.5,0.1);
\draw[->]
(1.7,1.3) arc(220:-50:0.4 and 0.15)
node[pos=0.5,above] {$I_b$};
\draw[<-]
(1.7,0.8) arc(-220:50:0.4 and 0.15)
node[midway,above] {$I_c$};
\end{scope}
\end{circuitikz}
\end{document}
Respuesta2
Si puede vivir sin aplicar la transformación de coordenadas a los nodos, puedo ofrecerle un parche. El autor probablemente se olvidó de independizar el tráfico actual de la rotación. Es un poco tedioso proteger todas las formas posibles dentro de los visores, etc., así que simplemente apagué el trafo.
\documentclass[12pt]{article}
\usepackage[americanvoltages,fulldiodes,siunitx]{circuitikz}
\usepackage[width=16.00cm, height=22.00cm]{geometry}
\usepackage{letltxmacro}
\makeatletter
\def\pgf@circ@drawrotlabel{
\pgfextra{
% calcolo rotazione label
\def\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% àncora label
\edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
\edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
\ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
\pgfmathsubtract{\pgf@circ@direction}{180}
\edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
\pgfmathadd{\pgf@circ@temp}{180} %%%
\edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
\fi\fi
\ifnum \ctikzvalof{mirror value} = -1
\pgfmathadd{\pgf@circ@temp}{180}
\edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
\fi
}
coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
(labelcoor) node [transform shape=false, rotate=\pgfcirclabrot] {\pgf@circ@finallabel{}}
}
\begin{document}
\begin{circuitikz}[scale=2.5]
\draw (0,0) to[battery1, l=$V$] (0,2) -- (2,2) to[R,l=$R_1$] (1,1) to[R,l=$R_3$, *-*] (2,0) -- (0,0);
\draw (2,2) to[R=$R_2$, *-*] (3,1)to[R=$R_4$, *-*] (2,0);
\draw (1,1) to[R=$R_5$, *-*] (3,1);
\draw[>=latex,->,color=magenta,text=black, thick] (0.6,1.9)
to[out=-0,in=-0] (1.4,1.9) to[out=8,in=70] (0.8,1)node[anchor=east]{$I_a$}
to[out=-70,in=-0] (1.4,0.1) to[out=-0,in=-0] (0.5,0.1);
\draw[>=latex,->,color=magenta,text=black, thick](1.7,1.3)arc(220:-50:0.4 and 0.15);
\draw[>=latex,<-,color=magenta,text=black, thick](1.7,0.8)arc(-220:50:0.4 and 0.15);
\filldraw[fill=black] (2,1.5) circle(0pt)node[anchor=south]{$I_b$};
\filldraw[fill=black] (2,0.78) circle(0pt)node[anchor=north]{$I_c$};
\end{circuitikz}
\end{document}