Circuitikz e coordenadas perpendiculares no ConTeXt

Circuitikz e coordenadas perpendiculares no ConTeXt

Tenho um erro de compilação ao tentar usar coordenadas perpendiculares no circuitikz com 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

Estou tendo o erro a seguir :

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

Também tentei usar (ALI.out) coordinate (S)e depois (S |- B) evitar o operador ponto no nome da coordenada, mas o erro permanece. Olhando as outras postagens, não vejo nenhum erro usual no meu código. Há algum problema com ConTeXt e circuitikz?

Agradeço antecipadamente,

Responder1

Parece ter havido mudanças na configuração do TikImagem Z em context; de alguma forma, o simples "aliasing" \startcircuitikznão está mais funcionando. A boa notícia é que o circuitikzambiente não faz nada (e estou pensando em removê-lo do manual). No seu 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 bem. De qualquer forma, tentarei verificar o que está acontecendo.

insira a descrição da imagem aqui

Responder2

ConTeXt é configurado |como um personagem ativo (catcode 13) enquanto TikZ espera um “outro” |(catcode 12). Isso significa que você realmente digitou , mas Ti|13=12kZ está apenas procurando .|12=12

\startcircuitikzé definido como uma macro delimitada

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

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

então os catcodes ficam "congelados" quando o argumento é digitalizado. \starttikzpicturenão aceita argumentos, entãoécapaz de digitalizar o |com o catcode apropriado.

Para corrigir isso, podemos alias \startcircuitikzdiretamente para \starttikzpicture:

\usemodule[circuitikz]

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

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

ou podemos corrigir manualmente |o catcode de:

\usemodule[circuitikz]

\catcode`\|=12

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

Ambas as opções fornecem a mesma saída:

saída

informação relacionada