![在电路图中,如何避免标签相互重叠、添加 +/- 以及添加自定义元素?](https://linux22.com/image/236344/%E5%9C%A8%E7%94%B5%E8%B7%AF%E5%9B%BE%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E6%A0%87%E7%AD%BE%E7%9B%B8%E4%BA%92%E9%87%8D%E5%8F%A0%E3%80%81%E6%B7%BB%E5%8A%A0%20%2B%2F-%20%E4%BB%A5%E5%8F%8A%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%83%E7%B4%A0%EF%BC%9F.png)
我把它剪掉以避免混淆。
我有这张照片:
我画出了这个:
代码如下:
\begin{figure}
\begin{circuitikz}[european]
\draw[o-] (0,2.2) to (0,4);
\draw (0,4) -- (1,4);
\draw (1,4) to[R,l_=\SI{1}{\kilo\ohm},-*] (1,2) to[R,l_=\SI{500}{\ohm},-*] (1,0)
-- (0,0);
\draw[-o] (0,0) -- (0,1.5);
\draw (1,2) -- (3,2);
\draw (3,2) -- (4,2) node[component]{A} -- (5,2);
\draw (3,0) -- (3,1) node[component]{V} -- (3,2);
\draw
(6,2.27) node[njfet]{}
node[anchor=east] {G}
node[anchor=north] {D}
node[anchor=south] {S};
\draw (6,0) -- (6,2);
\draw (6,3) -- (6,4);
\draw (1,0) -- (8,0);
\draw (2,0) to[C,l^=\SI{4.7}{\nano\farad},*-*] (2,2);
\draw (7,0) -- (7,2) node[component]{V} -- (7,4);
\draw (6,4) -- (6.5,4) node[component]{A} -- (8,4);
\draw[o-] (8,2.2) to (8,4);
\draw[-o] (8,0) to (8,1.5);
\end{circuitikz}
\end{figure}
我想你应该知道问题出在哪里了:
- 如何在节点上添加 + 和 - ?
- 如何让文字不互相重叠?
- 当我尝试按照手册中的方法为 jfet 编写代码时,出现了有关 (njfet. G) 内容的错误...
那么关于如何解决这个问题有什么建议吗?
编辑:哦,我能以某种方式修改元素吗?因为,例如,npn BJT 有指向发射极外的箭头,我需要它指向发射极内...
答案1
为了避免重叠,绘制组件,然后在组件旁边绘制并旋转文本。
要改变箭头方向,请更改元素:njfet(输出)更改为 pjfet(输入)或 npn(输出)更改为 pnp(输入)。
它还可能有助于“拉伸”或“压缩”电路的某些部分。尝试一下这个重新制作的示例,看看它是否适合您。
\documentclass{article}
\usepackage[european]{circuitikz}
\usepackage{siunitx}
\begin{document}
%----Fet circuit
\begin{circuitikz}[european]
\draw (3,3.5) node[above] {FET circuit};
\draw
(0,2.2) node[left] {$+$} to[short,o-] (0,4);
\draw (0,4) -- (1,4);
%\draw (1,4) to[R,l^=\SI{1}{\kilo\ohm},-*] (1,2)
% to[R,l^=\SI{500}{\ohm},-*] (1,0) -- (0,0);
\draw (1,4) to[R,-*] (1,2)
to[R,-*] (1,0) -- (0,0);
% place labels for resistors
\draw (0.5,1.5) node[rotate=90,left]{500 $\Omega$};
\draw (0.5,3.2) node[rotate=90,left]{1 $\Omega$};
\draw (0,1.5) node[left] {$-$} to[short,o-] (0,0);
\draw (1,2) -- (3.6,2);
\draw (3.6,2) to[ammeter] (5,2);
\draw (3.5,0) to[voltmeter] (3.5,2);
\draw
(6,2.27) node[njfet] (fet) {}
(fet.G) node[anchor=south] {G}
(fet.D) node[anchor=north east] {D}
(fet.S) node[anchor=south east] {S};
\draw (6,0) -- (fet.S);
\draw (fet.D) -- (6,4);
\draw (1,0) -- (9,0);
%\draw (2,0) to[C,l_=\SI{4.7}{\nano\farad},*-*] (2,2);
\draw (2,0.6) node[right]{4.7 nF};
\draw (2,0) to[C,*-*] (2,2);
\draw (8,0) to[voltmeter] (8,4);
\draw (6,4) to[ammeter] (8,4) -- (9,4);
\draw (9,2.2) to[short,o-] (9,4);
\draw (9,0) to[short,-o] (9,1.5);
\end{circuitikz}
\end{document}
答案2
对于 + 和 - :在适当的位置添加节点。例如,在代码的开头:
\draw (0,2.2) node[left] {$+$} to[short,o-] to (0,4);
(请注意,我也改变了圆圈的创建方式)
我在文档中找不到任何关于它的具体信息。我建议做的是稍微移动一些组件(例如将电容器和电压表向右移动)并使用较小的字体。另一种方法是添加显式节点。然后您可以完全控制放置。
对于 jfet 上的标签:所有节点都相对于点 (6,2.27) 放置。您希望标签相对于组件放置。为此,为组件命名并相对于输入和输出 (G、D 和 S) 放置标签节点:
\draw (6,2.27) node[njfet] (myname){} (myname.G) node[anchor=east] {G} (myname.D) node[anchor=north] {D} (myname.S) node[anchor=south] {S};