TikZ:如何在路徑建立過程中將目前座標記憶到變數中

TikZ:如何在路徑建立過程中將目前座標記憶到變數中

我正在使用 CircuiTikZ 創建電路。

我經常需要連接到之前使用相對座標創建的某個點。

現在我必須提前計算這些座標。相反,我希望能夠在路徑創建期間創建一個“坐標變數”,並在以後使用該變數。另一種方法是提取雙極端子的座標。

需要的結果

在此輸入影像描述

解法一(絕對座標)

這個解決方案是不可接受的,因為它會導致程式碼非常脆弱。

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

相關內容