
Ich versuche, Verbindungspunkte in Circuitikz nur bei einigen Iterationen einer Schleife zu verwenden, aber es schlägt fehl.
\documentclass[border=6mm]{standalone}
\usepackage[siunitx, american]{circuitikz}
\begin{document}
\usetikzlibrary{calc}
\begin{tikzpicture}[
font=\sffamily,
every node/.style = {align=center}
]
\foreach[count=\i] \x in {0,3}
{
\ifnum\i=1
\tikzstyle{maybedot} = []
\else
\tikzstyle{maybedot} = [-*]
\fi
\draw (\x,0) to [R, l_={$R_\i$}, maybedot] (\x, 3) to [short, maybedot](\x,5);
}
\draw (-2,0) to [R, l_={$R_0$ \\ noloop}, -*] (-2, 3) to [short, -*](-2,5);
\end{tikzpicture}
\end{document}
R1 hat korrekterweise keine Punkte, aber ich möchte, dass R2 Punkte wie in R0 hat. Wie kann ich das zum Laufen bringen? (Mein echtes Beispiel ist komplizierter und so etwas würde mir eine Menge sich wiederholenden Code ersparen)
Antwort1
Das Problem besteht hier darin, dass Sie \tikzset
(obwohl Sie die alte, am besten zu vermeidende Syntax verwenden) den Schlüssel (einen Pfeil) festlegen /tikz/-*
, wie Sie wahrscheinlich in den Fehlern bemerkt haben:
prova.tex|20 error| Package pgf Error: Unknown arrow tip kind '*'.
prova.tex|20 error| Package pgf Error: Unknown arrow tip kind '*'.
Der richtige Schlüssel für die Pole ist /tikz/circuitikz/-*
, so funktioniert es:
\documentclass[border=6mm]{standalone}
\usepackage[siunitx, american, RPvoltages]{circuitikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[
font=\sffamily,
every node/.style = {align=center},
]
\foreach[count=\i] \x in {0,3}
{
\ifnum\i=1
\ctikzset{maybedot/.style={}}
\else
\ctikzset{maybedot/.style={-*}}
\fi
\draw (\x,0) to [R, l_={$R_\i$}, maybedot] (\x, 3)
to [short, maybedot](\x,5);
}
\draw (-2,0) to [R, l_={$R_0$ \\ noloop}, -*] (-2, 3) to [short, -*](-2,5);
\end{tikzpicture}
\end{document}
Das Mischen \if
von Dingen in \foreach
Schleifen ist ziemlich gefährlich (obwohl das Problem hier ein anderes war). Ich würde \ifthenelse
hier und ein paar Makros anstelle von Stilen verwenden:
\documentclass[border=6mm]{standalone}
\usepackage{ifthen}
\usepackage[siunitx, american, RPvoltages]{circuitikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[
font=\sffamily,
every node/.style = {align=center},
]
\foreach[count=\i] \x in {0,3}
{
\ifthenelse{\i = 1}{\edef\maybedot{}}{\edef\maybedot{-*}}
\draw (\x,0) to [R, l_={$R_\i$}, \maybedot] (\x, 3)
to [short, \maybedot](\x,5);
}
\draw (-2,0) to [R, l_={$R_0$ \\ noloop}, -*] (-2, 3) to [short, -*](-2,5);
\end{tikzpicture}
\end{document}
ifthen
Wenn Sie den Test nicht laden möchten ,
\ifnum\i=1\edef\maybedot{}\else\edef\maybedot{-*}\fi
funktioniert auch.