当我尝试在 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 设置|
为活动字符(catcode 13),而 Ti钾Z 期望输入“其他” |
(类别代码 12)。这意味着您实际上输入的是,但 Ti|13=12
钾Z 只是在寻找。|12=12
\startcircuitikz
定义为分隔宏
% Lines 131--134 of m-circuitikz.mkxl
\aliased\let\stopcircuitikz\relax
\permanent\protected\def\startcircuitikz#1\stopcircuitikz
{\starttikzpicture#1\stoptikzpicture}
因此,当扫描参数时,catcode 会被“冻结”。\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
两个选项都提供相同的输出: