如果我尝试编译电路这回答,它给了我奇怪的错误:
Undefined control sequence \draw
在线上
\draw (oa.+) -| (gnn) node[ground]{};
以及以下的。
我完全复制了答案中的代码,按原样进行编译,未做任何修改。
这正常吗?如何修复?
答案1
siunitx
自问题答案撰写以来,集成已发生变化。如今,您可以通过加载选项然后使用以下形式的语法siunitx
来方便地使用circuitikz
circuitikz
siunitx
R=1<\kilo\ohm>
其余的也类似。这些更改使错误消息消失。以下是完全更正后的代码:
\documentclass{article}
\usepackage[american,siunitx]{circuitikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{circuitikz}[on grid]
\draw (0,1) node {Basic opamp};
% Define coordinates and nodes
\node (vi) {};
\node (a) [right=2 of vi] [label=below:$a$]{};
\node[ground](gnn) [below=1.0 of a,xshift=5mm] {};
\node[ground](gnp) [below=2.5 of vi] {};
\node[op amp](oa) [right=2 of a, yshift=-5mm]{};
\node (vo) [right=0.6 of oa.out]{};
\node[ground](gnd) [below=2 of vo] {};
% connect coordinates, inputs, outputs, and components, i.e. draw the circuit
\draw (gnp) to[V=1<\volt>] (vi);
\draw (vi) to[R=1<\kilo\ohm>] (oa.-);
\draw (oa.+) -| (gnn) node[ground]{};
\draw (oa.out) to[short] (vo);
\draw (vo) to[R=1<\kilo\ohm>] (gnd);
\end{circuitikz}
\end{document}
更新:也许我的代码风格不太理想或者有点深奥,但我个人会这样编写电路:
\documentclass{standalone}
\usepackage[american,siunitx]{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,0) node[op amp] (oa) {}
(oa.out) to[short] ++(0.6,0) coordinate (vo)
(oa.-) coordinate (a) node[below] {$a$}
to[R,l_=1<\kilo\ohm>] ++(-2,0) coordinate (vi)
++(0,-2.25) node[ground] (gnp) {}
to[V=1<\volt>] (vi)
(vo) to[R=1<\kilo\ohm>] (vo |- gnp)
node[ground] (gnd) {}
(oa.+) to[short] ++(-0.25,0) node[ground] (gnn) {}
;\end{circuitikz}
\end{document}
输出略有不同,因为我根据自己的喜好改变了一些间距: