TikZ: cómo memorizar las coordenadas actuales en una variable durante la creación de una ruta

TikZ: cómo memorizar las coordenadas actuales en una variable durante la creación de una ruta

Estoy creando circuitos eléctricos usando CircuiTikZ.

Muy a menudo necesito conectarme a un punto determinado, que se ha creado previamente utilizando coordenadas relativas.

Ahora tengo que calcular estas coordenadas por adelantado. En cambio, quiero poder crear una "variable de coordenadas" durante la creación de la ruta y usar esta variable más adelante. Otra forma sería extraer las coordenadas de una terminal bipolar.

Resultado necesario

ingrese la descripción de la imagen aquí

Solución 1 (coordenadas absolutas)

Esta solución es inaceptable porque genera un código muy frágil.

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

Solución 2 (usando matemáticas arcanas)

Esta es mi solución actual. Obviamente parece simple y no es gran cosa aquí porque es un MWE, pero en mis esquemas se vuelve bastante complicado.

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

Solución preferida №1 (anclajes)

Desafortunadamente esto no funciona porque el ancla está en elbipolo mismo, y no en el terminal. ( \currentcoordinatemarco tomado deaquí).

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

Solución preferida №2 (memorizar coordenadas en una variable)

Esto sería perfecto.

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

Respuesta1

Las coordenadas nombradas ya existen en TikZ. Incluso tienen una sintaxis mejor que la que propones.

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

ingrese la descripción de la imagen aquí

También puede simplemente dibujar todo en una sola ruta y no usar coordenadas con nombre en absoluto.

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

información relacionada