Circuitikz и перпендикулярные координаты в ConTeXt

Circuitikz и перпендикулярные координаты в ConTeXt

У меня возникает ошибка компиляции при попытке использовать перпендикулярные координаты в circuitikz с 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

Я получаю следующую ошибку:

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

Я также пытался использовать(ALI.out) coordinate (S) и затем (S |- B) избегать оператора точки в имени координаты, но ошибка осталась. Просматривая другие посты, я не вижу никаких обычных ошибок в моем коде. Есть ли проблема с ConTeXt и circuitikz?

Заранее спасибо,

решение1

Похоже, в настройке Ti произошли изменения.кZ-картинка в context; каким-то образом, простое "алиасинг" \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

Кажется, работает нормально. В любом случае, я попробую проверить, что происходит.

введите описание изображения здесь

решение2

ConTeXt устанавливает| как активный персонаж (код 13), в то время как TiкZ ожидает "другое" |(catcode 12). Это означает, что вы на самом деле ввели|13=12 , но TiкZ ищет только .|12=12

\startcircuitikzопределяется как макрос с разделителями

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

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

поэтому коды «замораживаются» при сканировании аргумента.\starttikzpicture не принимает аргументов, поэтому онявляетсявозможность сканирования |с соответствующим кодом catcode.

Чтобы исправить это, мы можем либо \startcircuitikzнапрямую создать псевдоним \starttikzpicture:

\usemodule[circuitikz]

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

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

или мы можем вручную исправить |catcode:

\usemodule[circuitikz]

\catcode`\|=12

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

Оба варианта дают одинаковый результат:

выход

Связанный контент