circuitikz 和 ConTeXT

circuitikz 和 ConTeXT

我想使用circuitikzConTeXT,但是我收到一条错误消息,! Undefined control sequence.

我的代码是:

\usemodule[tikz] 

\usemodule[circuitikz][european]

\starttext

\startcircuitikz

\draw (0,0) to[R, l=$R_1$] (2,0);

\stopcircuitikz

\stoptext

手册中提出了一种解决方案circuitikz

“在 ConTEXt 中实际使用 CircuiTikZ 和 TikZ 版本 2 时,会出现一个错误,内容如下

! 未定义控制序列。\tikz@cc@mid@checks -> \pgfutil@ifnextchar!

Aditya Mahajan 向我提出了解决方案,涉及修改 TikZ 中的文件:

以下是修复方法tikzlibrarycalc.code.tex

\def\tikz@cc@mid@checks{
   \pgfutil@ifnextchar !{%AM: Added space
     \tikz@cc@mid%
   }{%
     \advance\pgf@xa by\tikz@cc@factor\pgf@xb%
     \advance\pgf@ya by\tikz@cc@factor\pgf@yb%
     \tikz@cc@parse% continue
}% }
\def\tikz@cc@mid !{%AM Added space
   \pgfutil@ifnextchar({%
     \tikz@scan@one@point\tikz@cc@project%
4
}{%
     \tikz@cc@mid@num%
   }%
} "

我需要修改 TikZ 中的一个文件,但我不知道在哪里可以找到这个文件,也不明白需要在这个文件中更改什么。

感谢您的帮助。

梅卡迪克特

答案1

作为一种解决方法,您可以单独设置所需的选项,因为european只是这些选项集合的简写。例如:

\usemodule[circuitikz]
\ctikzset{current=european, voltage=european, resistor=european, inductor=european}

\starttext

\starttikzpicture

\draw (0,0) to[R, l=$R_1$] (2,0);

\stoptikzpicture

\stoptext

欧洲的

答案2

不幸的是,该circuitikz模块不承认普通european选项。它采用key=value类似于的列表\ctikzset。因此,要获得欧洲电阻器,必须传递resistor=european给模块。此外,你在 circuitikz 之前加载tikz模块,否则密钥将不会被解析(我猜它们会被默默转发给tikz后者,然后简单地丢弃它们)。

\usemodule[tikz]
\usemodule[circuitikz][resistor=european]
\starttext
\startcircuitikz
  \draw (0,0) to[R, l=$R_1$] (2,0);
\stopcircuitikz
\stoptext

在此处输入图片描述

相关内容