Estou criando circuitos elétricos usando CircuiTikZ.
Muitas vezes preciso me conectar a um determinado ponto, que foi criado anteriormente usando coordenadas relativas.
Agora tenho que calcular essas coordenadas com antecedência. Em vez disso, quero poder criar uma "variável de coordenadas" durante a criação do caminho e usar essa variável posteriormente. Outra forma seria extrair as coordenadas de um terminal bipolar.
Resultado necessário
Solução 1 (coordenadas absolutas)
Esta solução é inaceitável porque conduz a um código muito 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}
Solução 2 (usando matemática misteriosa)
Esta é a minha solução atual. Obviamente parece simples e não é grande coisa aqui porque é um MWE, mas nos meus esquemas fica bem 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}
Solução preferida nº 1 (âncoras)
Infelizmente isso não funciona, porque a âncora está nopróprio bipolar, e não no terminal. ( \currentcoordinate
marco retirado deaqui).
\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}
Solução preferida №2 (memorizar coordenadas em uma variável)
Isso seria perfeito.
\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}
Responder1
Coordenadas nomeadas já existem no TikZ. Eles ainda têm uma sintaxe melhor do que a que você propõe.
\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}
Você também pode desenhar tudo em um único caminho e não usar coordenadas nomeadas.
\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}