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