Circuitikz und senkrechte Koordinaten in ConTeXt

Circuitikz und senkrechte Koordinaten in ConTeXt

Beim Versuch, in circuitikz mit ConTeXt senkrechte Koordinaten zu verwenden, tritt ein Kompilierungsfehler auf:

\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

Ich erhalte die folgende Fehlermeldung:

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

(ALI.out) coordinate (S)Ich habe auch versucht , „and then“ zu verwenden, (S |- B) um den Punktoperator im Koordinatennamen zu vermeiden, aber der Fehler bleibt bestehen. Wenn ich mir die anderen Beiträge anschaue, sehe ich keinen üblichen Fehler in meinem Code. Gibt es ein Problem mit ConTeXt und circuitikz?

Danke im Voraus,

Antwort1

Es scheint Änderungen im Setup des Ti gegeben zu habenkZ-Bild in ; irgendwie funktioniert contextdas einfache „Aliasing“ von nicht mehr. Die gute Nachricht ist, dass die Umgebung nichts tut (und ich überlege, sie aus dem Handbuch zu entfernen). In Ihrem Fall,\startcircuitikzcircuitikz

\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

Scheint ok zu funktionieren. Ich werde jedenfalls versuchen, herauszufinden, was passiert.

Bildbeschreibung hier eingeben

Antwort2

|ConTeXt wird als aktives Zeichen (Catcode 13) eingerichtet, während TikZ erwartet ein "other" |(Catcode 12). Das bedeutet, dass Sie tatsächlich eingegeben haben , aber Ti|13=12kZ sucht nur nach .|12=12

\startcircuitikzist als abgegrenztes Makro definiert

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

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

Die Catcodes werden also "eingefroren", wenn das Argument eingescannt wird. \starttikzpicturenimmt keine Argumente an, alsoIstin der Lage, diese |mit dem entsprechenden Catcode zu scannen.

Um dies zu beheben, können wir entweder \startcircuitikzdirekt einen Alias ​​verwenden zu \starttikzpicture:

\usemodule[circuitikz]

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

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

oder wir können |den Catcode manuell korrigieren:

\usemodule[circuitikz]

\catcode`\|=12

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

Beide Optionen führen zur gleichen Ausgabe:

Ausgabe

verwandte Informationen