
當我嘗試在 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=12
kZ只是在尋找。|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
兩個選項給出相同的輸出: