Circuitikz 和 ConTeXt 中的垂直座標

Circuitikz 和 ConTeXt 中的垂直座標

當我嘗試在 Circuitikz 中使用 ConTeXt 的垂直座標時,出現編譯錯誤:

\usemodule[tikz]

\usemodule[circuitikz]
\ctikzset{current=european, voltage=european, resistor=european, inductor=european}

\starttext
\startcircuitikz
  \draw (0, 0)
  node [en amp, noinv input up] (ALI) {}
  (ALI.+) -- ++(-1, 0) coordinate (A)
  (ALI.-) -- ++(0, -1.5) coordinate (B)
  to [R, l=$R_1$] (ALI.out |- B); 
\stopcircuitikz
\stoptext

我收到以下錯誤:

Package PGF Math Error: Unknown function `out' (in 'out |- B')

我還嘗試使用(ALI.out) coordinate (S)then(S |- B) 來避免坐標名稱中的點運算符,但錯誤仍然存在。查看其他帖子,我在程式碼中沒有看到任何常見錯誤。 ConTeXt 和 Circuitikz 有問題嗎?

預先感謝,

答案1

Ti的設定似乎發生了變化kZ 圖中context;不知何故,簡單的「別名」\startcircuitikz不再起作用了。好消息是circuitikz環境沒有任何作用(我正在考慮將其從手冊中刪除)。就你而言,

\usemodule[tikz]

\usemodule[circuitikz]
\ctikzset{current=european, voltage=european, resistor=european, inductor=european}

\starttext
\starttikzpicture
  \draw (0, 0)
  node [en amp, noinv input up] (ALI) {}
  (ALI.+) -- ++(-1, 0) coordinate (A)
  (ALI.-) -- ++(0, -1.5) coordinate (B)
  to [R, l=$R_1$] (ALI.out |- B); 
\stoptikzpicture
\stoptext

似乎工作正常。無論如何,我會嘗試檢查發生了什麼。

在此輸入影像描述

答案2

ConTeXt 設定|為活動角色(目錄代碼 13),而 TikZ 需要「其他」|(類別代碼 12)。這意味著您實際上輸入了,但是 Ti|13=12kZ只是在尋找。|12=12

\startcircuitikz被定義為分隔宏

% Lines 131--134 of m-circuitikz.mkxl
\aliased\let\stopcircuitikz\relax

\permanent\protected\def\startcircuitikz#1\stopcircuitikz
  {\starttikzpicture#1\stoptikzpicture}

所以當掃描參數時,catcodes 被「凍結」\starttikzpicture能夠|使用適當的catcode掃描。

為了解決這個問題,我們可以\startcircuitikz直接使用別名\starttikzpicture

\usemodule[circuitikz]

\let\startcircuitikz\starttikzpicture
\let\stopcircuitikz\stoptikzpicture

\startTEXpage[offset=1em]
\startcircuitikz
    \draw (0, 0) to (0, 0 -| 1, 1);
\stopcircuitikz
\stopTEXpage

或者,我們可以手動更正|的catcode:

\usemodule[circuitikz]

\catcode`\|=12

\startTEXpage[offset=1em]
\startcircuitikz
    \draw (0, 0) to (0, 0 -| 1, 1);
\stopcircuitikz
\stopTEXpage

兩個選項給出相同的輸出:

輸出

相關內容