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
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. ( \currentcoordinate
Marco 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}
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}