ループ インデックスで circuitikz ドットを条件付けるにはどうすればよいですか?

ループ インデックスで circuitikz ドットを条件付けるにはどうすればよいですか?

ループのいくつかの反復でのみ、circuitikz のジャンクション ドットを使用しようとしていますが、失敗します。

\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 にはドットがありませんが、R2 には R0 のようにドットを付けたいです。どうすればこれを機能させることができますか? (実際の例はより複雑で、このようなことをすると繰り返しコードを大幅に節約できます)

答え1

ここでの問題は、おそらくエラーで気づいたよう\tikzsetに、(古い、最も避けるべき構文を使用しているにもかかわらず)キー/tikz/-*(矢印)を設定していることです。

prova.tex|20 error| Package pgf Error: Unknown arrow tip kind '*'.
prova.tex|20 error| Package pgf Error: Unknown arrow tip kind '*'.

極の正しいキーは なので/tikz/circuitikz/-*、次のように機能します。

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

\ifループ内で物事を混ぜるのは\foreach非常に危険です (ただし、ここでも問題はありました)。\ifthenelseここでは、スタイルの代わりにいくつかのマクロを使用します。

\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、テスト

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

も動作します。

3つの選択肢を検討

関連情報