我已经尝试编译包含 tikzcircuit 的文件几个小时了(>6 小时),在 overleaf 上。当对 circuitikz 进行注释时,文件可以毫无问题地进行编译。但是,一旦我取消注释,就会出现错误(超时)。我就是搞不懂。这是电路:
\documentclass{article}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\begin{figure}
\centering
\begin{circuitikz}[scale=0.8]\draw
\draw [short,*-](0,0)to(0,-0.1);
(0,0)node[label={[font=\footnotesize]above:1}] {}] to
\draw[short](8,2)to(8,0);
\draw[short](0,0)to(0,2);
\draw(0,-2)to[L,l=$L_1$,-*](0,0);
\draw[short](0,0)to(1,0)
to[C,l=$C_1$](1,-2);
\draw (1,0)to[L,l=$L_2$](4,0);
% \draw[short](4,0)to(4,0)
\draw(4,0)to [R,l=$R_1$,*-](4,-2);
\draw[short](4,0)to(4.1,0)
to[C,l=$C_2$](8,0);
\draw(8,0)to[R,l=$R_2$,*-](8,-2);
\draw(0,2)to[R,l=$R_3$](8,2);
\draw[short](0,-2)to(8,-2);
\draw(8,-2) node[ground]{};
{[anchor=south east] (0,0) node {1} (4,0) node {2} (8,0) node {3}}
;
\end{circuitikz}
\end{figure}
\end{document}
我想可能是因为 Overleaf 的服务器或者其他什么原因,所以我选择尝试在我的计算机上用 latex 编译它。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}
\usetikzlibrary{positioning}
\usepackage[compatibility]{circuitikzgit}
\ctikzset{bipoles/length=.9cm}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
\draw (0,0) to [resistor={name=R}] (0,2)
to[diode={name=D}] (3,2);
\draw (0,0) to[*R=$R_1$] (1.5,0) to[*Tnpn] (3,0)
to[*D](3,2);
\end{tikzpicture}
\end{document}
它也不能编译!调试的第二步是尝试tikz 文档(最后一个例子是第 222 页),字面意思是“复制粘贴”。令我惊讶的是,我得到了以下错误:
我是不是漏掉了什么?我真的不明白哪里出了问题。
答案1
在你的第一个例子中你得到
! Package tikz Error: Giving up on this path. Did you forget a semicolon?.
\draw
从第 8 行开始,由于第一条路径上的重复
\draw
\draw [short,*-](0,0)to(0,-0.1);
如果你删除其中一个,\draw
它不会出错,但会发出警告
Missing character: There is no ( in font nullfont!
Missing character: There is no 0 in font nullfont!
Missing character: There is no , in font nullfont!
Missing character: There is no 0 in font nullfont!
Missing character: There is no ) in font nullfont!
Missing character: There is no n in font nullfont!
...
因为路径语法错误
(0,0)node[label={[font=\footnotesize]above:1}] {}] to
它没有前导\draw
,也没有;
但我不知道你的意图是什么。
答案2
在您的第一个例子中,除了 David Carlisle 发现的无限循环之外,您的circuitikz
wires 语法也是错误的。short
是路径元素样式,并且必须用作to
命令的样式。否则,作用域将出错,并且可能发生任何事情。通常会发生不好的事情。
你不能使用
\draw[short] (0,0) to (0,1);
正确的语法是
\draw(0,0) to[short] (0,1);
关于你的第二个例子,你正在circuitikz
与 Ti 的内部电路库混合使用钾Z. 虽然有兼容模式标志,但不推荐使用,也没有经过大量测试。不要这么做。