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}

Связанный контент