Wie kann ich Circuitikz-Punkte auf einem Loop-Index konditionieren?

Wie kann ich Circuitikz-Punkte auf einem Loop-Index konditionieren?

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}

Bildbeschreibung hier eingeben

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 \ifvon Dingen in \foreachSchleifen ist ziemlich gefährlich (obwohl das Problem hier ein anderes war). Ich würde \ifthenelsehier 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}

ifthenWenn Sie den Test nicht laden möchten ,

\ifnum\i=1\edef\maybedot{}\else\edef\maybedot{-*}\fi

funktioniert auch.

für die drei möglichen Optionen

verwandte Informationen