Ich versuche, eine Wheatstone-Brücke zu zeichnen, und dies ist der Code, den ich bisher habe:
\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}
Und das ist das Ergebnis:
Beachten Sie, wie groß die Beschriftungen für die diagonalen Widerstände sind!
Frage 1:
Wie kann ich die Schriftgröße dieser Beschriftungen wieder auf den Normalwert bringen (also auf die gleiche Größe wie $R_5$
und $V$
)? Ich möchte keine Schriftgrößeneditoren wie \tiny
oder verwenden \small
; das habe ich bereits getan und \tiny
die Schriftgröße wird dadurch sogar noch etwas größer als normal. Es sollte einen natürlicheren Weg für die Schriftgröße gebennichtzu steigern und einfach so zu bleiben, wie es soll, oder?
Frage 2:
Der lange gebogene Pfeil $I_a$
hat in der Mitte eine scharfe Ecke, die ich glätten möchte (um eine glatte Kurve zu erhalten), und die oberen und unteren Ecken des Pfeils scheinen nicht sehr natürlich ineinander überzugehen (d. h. Sie können sehen, dass es eine gewisse Zackigkeit gibt, die gebogene Linie geht nicht natürlich in die gerade Linie über). Gibt es eine einfache Möglichkeit, diese oberen/mittleren/unteren Ecken zu reparieren, anstatt alle Winkel einzeln anpassen zu müssen in/out
, und wenn ja, wie?
Danke schön!
Antwort1
Frage 1
Anstatt die Schaltung zu skalieren, können Sie auch x=<length>
, y=<length>
, verwenden, sodass beispielsweise Beschriftungen nicht beeinträchtigt werden.
Frage 2
Sie können einfach --
und verwenden rounded corners
, um den glatten, gekrümmten Pfad einfach zu erzeugen. Im folgenden Beispiel anstelle von
\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);
ich benutzte
\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);
Der Code; ich habe scope
zur Vereinfachung des Codes am Ende zusätzlich ein verwendet und I_b
und I_c
als Knoten an den arc
Pfaden platziert (das ergibt die richtige Positionierung ohne manuelles Eingreifen und vereinfacht den Code):
\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}
Antwort2
Wenn Sie ohne die Koordinatentransformation auf die Knoten auskommen, kann ich Ihnen einen Patch anbieten. Der Autor hat wahrscheinlich vergessen, den aktuellen Trafo unabhängig von der Rotation zu machen. Es ist ziemlich mühsam, alle möglichen Formen innerhalb der Bereiche usw. zu schützen, also habe ich den Trafo einfach ausgeschaltet.
\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}