
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 context
das 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,\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
Scheint ok zu funktionieren. Ich werde jedenfalls versuchen, herauszufinden, was passiert.
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=12
kZ sucht nur nach .|12=12
\startcircuitikz
ist 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. \starttikzpicture
nimmt keine Argumente an, alsoIstin der Lage, diese |
mit dem entsprechenden Catcode zu scannen.
Um dies zu beheben, können wir entweder \startcircuitikz
direkt 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: