
Tengo un error de compilación cuando intento usar coordenadas perpendiculares en circuitoikz con 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
Obtuve el siguiente error :
Package PGF Math Error: Unknown function `out' (in 'out |- B')
También intenté usar (ALI.out) coordinate (S)
y luego (S |- B)
evitar el operador de punto en el nombre de las coordenadas, pero el error persiste. Al mirar las otras publicaciones, no veo ningún error habitual en mi código. ¿Hay algún problema con ConTeXt y circuitoikz?
Gracias de antemano,
Respuesta1
Parece haber habido cambios en la configuración del Ti.kImagen Z en context
; De alguna manera, el simple "aliasing" \startcircuitikz
ya no funciona. La buena noticia es que el circuitikz
entorno no hace nada (y estoy considerando eliminarlo del manual). En tu caso,
\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
Parece funcionar bien. De todos modos, intentaré comprobar qué está pasando.
Respuesta2
ConTeXt se configura |
como un carácter activo (catcode 13) mientras que TikZ espera un "otro" |
(código cat 12). Esto significa que realmente escribiste , pero Ti|13=12
kZ sólo está buscando .|12=12
\startcircuitikz
se define como una macro delimitada
% Lines 131--134 of m-circuitikz.mkxl
\aliased\let\stopcircuitikz\relax
\permanent\protected\def\startcircuitikz#1\stopcircuitikz
{\starttikzpicture#1\stoptikzpicture}
por lo que los catcodes se "congelan" cuando se escanea el argumento. \starttikzpicture
No acepta argumentos, por lo queescapaz de escanear el |
con el catcode apropiado.
Para solucionar este problema, podemos usar un alias \startcircuitikz
directamente para \starttikzpicture
:
\usemodule[circuitikz]
\let\startcircuitikz\starttikzpicture
\let\stopcircuitikz\stoptikzpicture
\startTEXpage[offset=1em]
\startcircuitikz
\draw (0, 0) to (0, 0 -| 1, 1);
\stopcircuitikz
\stopTEXpage
o podemos corregir manualmente |
el código cat:
\usemodule[circuitikz]
\catcode`\|=12
\startTEXpage[offset=1em]
\startcircuitikz
\draw (0, 0) to (0, 0 -| 1, 1);
\stopcircuitikz
\stopTEXpage
Ambas opciones dan el mismo resultado: