我继续学习 Circuitikz,尝试解决稍微复杂一点的电路。我尝试重现 3.3(第 32 页)中出现的图表,其中包括一个 AO 和两个晶体管。复制并粘贴手册中给出的代码后,我遇到了一些理解问题和错误:
- 第 11 行(
\draw (bb) --++(1,0) node[npn, anchor=B](Q1){} \bjtname{Q1};
)和第 12 行\draw (bb1) --++(1,0) node[npn, anchor=B](Q2){} \bjtname{Q2};
导致我出现“预期 + 或 -”和“放弃此路径”错误:我必须上传特定的包吗? - 前两行是干什么的?
\def\killdepth#1{{\raisebox{0pt}[\height][0pt]{#1}}}
和\newcommand\bjtname[1]{($(#1.C)!0.5!(#1.E)$) node[anchor=west]{\killdepth{#1}} }
感谢您的帮助。
我复制了手册的代码
\documentclass{standalone}
\usepackage[european, straightvoltages]{circuitikz}
\usepackage{siunitx}
\begin{document}
\def\killdepth#1{{\raisebox{0pt}[\height][0pt]{#1}}}
\newcommand\bjtname[1]{($(#1.C)!0.5!(#1.E)$) node[anchor=west]{\killdepth{#1}} }
\begin{circuitikz}[american, cute inductors]
\node [op amp](A1){\texttt{OA1}};
\draw (A1.-) to[short] ++(0,1) coordinate(tmp) to[R, l_=$R$] (tmp -| A1.out) to[short] (A1.out);
\draw (tmp) to[short] ++(0,1) coordinate(tmp) to[C=$C$] (tmp -| A1.out) to[short] (A1.out);
\draw (A1.+) to [battery2, invert] ++(0,-2.5) node[ground](GND){};
\draw (A1.-) to [L=$L$] ++(-2,0) coordinate(tmp) to[sV, l=$v_s$, fill=yellow] (tmp |-GND) node[ground]{};
\draw (A1.out) to[R=$R_s$] ++(2,0) coordinate(bb) to[I, l_=$I_B$, invert] ++(0,2) node[vcc](VCC){};
\draw (bb) to[D, l=$D$, *-] ++(0,-2) coordinate(bb1) to[R=$R_m$] ++(0,-2) node[vee](VEE){};
\draw (bb) --++(1,0) node[npn, anchor=B](Q1){} \bjtname{Q1};
\draw (bb1) --++(1,0) node[pnp, anchor=B](Q2){} \bjtname{Q2};
\draw (Q1.E) -- (Q2.E) ($(Q1.E)!0.5!(Q2.E)$) to [short, *-o, name=S] ++(2.5,0) node[right]{$v_{o_Q}$};
\draw (S.s) to[european resistor, l=$Z_L$, *-] (S.s|-GND) node[ground]{};
\draw (Q1.C) -- (Q1.C|-VCC) node[vcc]{\SI{5}{V}};17\draw (Q2.C) -- (Q2.C|-VEE) node[vee]{\SI{-5}{V}};
\end{circuitikz}
\end{document}
答案1
好吧,一旦修复了代码片段以便可以编译,我至少可以回答这些问题:
你的电路中没有错误;请注意,通常是由于忘记了计算坐标中的
+ or - expected
闭合而引起的,例如(找到两个坐标之间的中点,参见 Ti$
($(a)!0.5!(b)$)
钾Z 手册 13.5“坐标计算”,大约第 145 页)。\bjtname
是我在 0.9.7 版本中修复自动标签定位之前用来排版晶体管名称的宏;你可以在手册circuitikz
第 3.17.4 节第 77 页左右看到更多注释:我应该更改教程;现在写作应该
node[npn](Q){Q}
可以正常工作。谢谢你的提醒,我会尽快处理。如果你不熟悉宏,你可以看看这个很好的解释。(向下滚动到“定义命令”)。\killdepth
是另一个宏;我在这里使用了纯 TeX 语法,这是我在手册中应该更改的另一件事。手册中有解释,我将在这里复制它,因为我认为我无法更好地解释它(没有版权问题,是我写的!)...(第 17-18 页 --- 99% 的时间你可以忘记它,但是,TeX/LaTeX 主要是对排版很挑剔...)。