TikZ: パス​​作成中に現在の座標を変数に記憶する方法

TikZ: パス​​作成中に現在の座標を変数に記憶する方法

CircuiTikZを使用して電気回路を作成しています。

相対座標を使用して以前に作成された特定のポイントに接続する必要があることがよくあります。

現時点では、これらの座標を事前に計算する必要があります。代わりに、パスの作成中に「座標変数」を作成し、後でこの変数を使用できるようにしたいと考えています。別の方法としては、バイポール ターミナルの座標を抽出することです。

必要な結果

ここに画像の説明を入力してください

解決策1(絶対座標)

この解決策は、非常に脆弱なコードにつながるため、受け入れられません。

\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$] ++(2,0);
    \draw (0,0) -- (0,1) to [R=$R$] (4,1) -- (4,0);
\end{circuitikz}

解決策 2 (難解な数学を使用)

これが私の現在の解決策です。明らかに、これは MWE なので単純で大した問題ではないように見えますが、私のスキームでは非常に複雑になります。

\newcommand{\mylength}{2}
\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(\mylength,0) to [R=$R$] ++(\mylength,0);
    \draw (0,0) -- (0,1) to [R=$R$] (\mylength*2,1) -- (\mylength*2,0);
\end{circuitikz}

推奨ソリューション №1 (アンカー)

残念ながら、これは機能しません。アンカーが双極子自体、端末上ではなく。(\currentcoordinateマルコはここ)。

\makeatletter
\newcommand\currentcoordinate{\the\tikz@lastxsaved,\the\tikz@lastysaved}
\makeatother
\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$, name=MyResistor] ++(2,0);
    \draw (0,0) -- (0,1) to [R=$R$] (MyResistor.east |- \currentcoordinate) -- (MyResistor.east);
\end{circuitikz}

推奨ソリューション №2 (変数の座標を記憶する)

これなら完璧です。

\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$, name=MyResistor] ++(2,0) [\MyVariable=\currentcoordinate];
    \draw (0,0) -- (0,1) to [R=$R$] (\MyVariable |- \currentcoordinate) -- (\MyVariable);
\end{circuitikz}

答え1

名前付き座標は TikZ にすでに存在します。それらは、あなたが提案するものよりも優れた構文を持っています。

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$, name=MyResistor] ++(2,0) coordinate (lr);
    \draw (0,0) -- (0,1) coordinate (ul) to [R=$R$] (lr |- ul) -- (lr);
\end{circuitikz}
\end{document}

ここに画像の説明を入力してください

名前付き座標をまったく使用せずに、全体を単一のパス上に描画することもできます。

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
  \draw ( 0,0) to [R=$R$]
      ++( 2,0) to [R=$R$]
      ++( 2,0) to [short]
      ++( 0,1) to [R,l_=$R$]
      ++(-4,0) to[short]
        ( 0,0) -- cycle;
\end{circuitikz}
\end{document}

関連情報