TikZ: So speichern Sie die aktuelle Koordinate während der Pfaderstellung in einer Variablen

TikZ: So speichern Sie die aktuelle Koordinate während der Pfaderstellung in einer Variablen

Ich erstelle elektrische Schaltkreise mit CircuiTikZ.

Ziemlich oft muss ich eine Verbindung zu einem bestimmten Punkt herstellen, der zuvor mithilfe relativer Koordinaten erstellt wurde.

Im Moment muss ich diese Koordinaten im Voraus berechnen. Stattdessen möchte ich während der Pfaderstellung eine „Koordinatenvariable“ erstellen und diese Variable später verwenden können. Eine andere Möglichkeit wäre, die Koordinaten eines Bipolterminals zu extrahieren.

Benötigtes Ergebnis

Bildbeschreibung hier eingeben

Lösung 1 (absolute Koordinaten)

Diese Lösung ist inakzeptabel, da sie zu einem sehr fragilen Code führt.

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

Lösung 2 (mithilfe geheimer Mathematik)

Dies ist meine aktuelle Lösung. Offensichtlich sieht es hier einfach und nicht so wichtig aus, da es sich um ein MWE handelt, aber in meinen Schemata wird es ziemlich kompliziert.

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

Bevorzugte Lösung Nr. 1 (Anker)

Leider funktioniert das nicht, da der Anker auf demBipol selbst, und nicht auf dem Terminal. ( \currentcoordinateMarco entnommen ausHier).

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

Bevorzugte Lösung Nr. 2 (Speichern der Koordinaten in einer Variablen)

Das wäre perfekt.

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

Antwort1

Benannte Koordinaten gibt es bereits in TikZ. Sie haben sogar eine schönere Syntax als die von Ihnen vorgeschlagene.

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

Bildbeschreibung hier eingeben

Sie könnten das Ganze auch einfach auf einem einzigen Pfad zeichnen und überhaupt keine benannten Koordinaten verwenden.

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

verwandte Informationen