
ConTeXt を使用して circuitikz で垂直座標を使用しようとすると、コンパイル エラーが発生します。
\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)
また、座標名でドット演算子を回避するためにand thenを使用しようとしました(S |- B)
が、エラーはそのままです。他の投稿を見ると、コードに通常のエラーは見当たりません。ConTeXt と circuitikz に問題があるのでしょうか?
少し早いですがお礼を、
答え1
Tiの設定に変更があったようですけの Z 画像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はアクティブ文字(catcode 13)として設定され、TiけZは「その他」|
(catcode 12)を期待しています。これは、実際には と入力したが、Ti|13=12
けZ は だけを探しています。|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
どちらのオプションでも同じ出力が得られます。