ConTeXt 中的 Circuitikz 和垂直坐标

ConTeXt 中的 Circuitikz 和垂直坐标

当我尝试在 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),而 TiZ 期望输入“其他” |(类别代码 12)。这意味着您实际上输入的是,但 Ti|13=12Z 只是在寻找。|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

两个选项都提供相同的输出:

输出

相关内容