ConTeXt における Circuitikz と直交座標

ConTeXt における Circuitikz と直交座標

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)として設定され、TiZは「その他」|(catcode 12)を期待しています。これは、実際には と入力したが、Ti|13=12Z は だけを探しています。|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

どちらのオプションでも同じ出力が得られます。

出力

関連情報