Circuitikz y coordenadas perpendiculares en ConTeXt

Circuitikz y coordenadas perpendiculares en ConTeXt

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" \startcircuitikzya no funciona. La buena noticia es que el circuitikzentorno 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.

ingrese la descripción de la imagen aquí

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=12kZ sólo está buscando .|12=12

\startcircuitikzse 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. \starttikzpictureNo acepta argumentos, por lo queescapaz de escanear el |con el catcode apropiado.

Para solucionar este problema, podemos usar un alias \startcircuitikzdirectamente 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:

producción

información relacionada