Tamanho da fonte do rótulo do resistor diagonal e setas curvas

Tamanho da fonte do rótulo do resistor diagonal e setas curvas

Estou tentando desenhar uma ponte de Wheatstone e este é o código que tenho até agora:

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

E é isso que produz:

insira a descrição da imagem aqui

Observe como são grandes os rótulos dos resistores diagonais!

Questão 1: Como posso fazer com que o tamanho da fonte desses rótulos volte ao normal (ou seja, o mesmo tamanho de $R_5$e $V$)? Não quero usar editores de tamanho de fonte como \tinyou \small; Eu já fiz isso e \tinyainda deixei o tamanho da fonte um pouco maior que o normal. Deveria haver uma maneira mais natural para o tamanho da fontenãoaumentar e ficar do jeito que deveria, não?

Questão 2: A seta longa e curva $I_a$tem um canto agudo próximo ao meio que quero suavizar (para torná-la uma curva suave), e os cantos superior e inferior da seta não parecem estar em transição muito natural (ou seja, você pode ver que há um pouco de irregularidade, a linha curva não flui naturalmente para a linha plana). Existe uma maneira fácil de corrigir esses cantos superior/médio/inferior em vez de ter que ajustar individualmente todos os in/outângulos e, em caso afirmativo, como?

Obrigado!

Responder1

Questão 1

Em vez de escalar o circuito, você pode usar x=<length>, y=<length>, para que os rótulos, por exemplo, não sejam afetados.

Questão 2

Você pode simplesmente usar --e rounded cornerspara produzir facilmente o caminho curvo suave. No exemplo abaixo, em vez 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);

eu usei

    \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);

O código; Também usei um scopeno final para simplificar o código e coloquei I_be I_ccomo nós nos arccaminhos (isso produz o posicionamento correto sem intervenção manual e simplifica o 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}

insira a descrição da imagem aqui

Responder2

Se você conseguir viver sem aplicar a transformação de coordenadas aos nós, posso oferecer um patch. O autor provavelmente esqueceu de obter o trafo atual independente da rotação. É meio tedioso proteger todas as formas possíveis dentro dos escopos, etc., então desliguei o 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}

insira a descrição da imagem aqui

informação relacionada