关于荷兰电流源符号的帮助

关于荷兰电流源符号的帮助

我想创建一个电流源,就像许多荷兰电路书籍中提到的那样。标准的欧洲组件不是我想要的。我想要这样的东西:

\documentclass[a4paper]{article}

\usepackage{tikz}
\usepackage[european]{circuitikz}

\begin{document}

\begin{figure}[!ht]
\begin{circuitikz}
\draw (0,0) to[I, l=$I_B$] (0,2);
\draw [->] (-0.5,0.65) -- (-0.5,1.35);
\end{circuitikz}
\end{figure}

\end{document}

在代码中,我自己绘制了箭头(作为电流源符号的一部分)。但我希望有一个完整的circuitikz符号。另外,我希望箭头和箭头旁边的符号$I_B$稍微靠左一点。我试图研究电流源的circuitikz代码,但我认为我的知识太贫乏了。

答案1

我从 circuitikz 中获取了当前源,并添加了来自这个答案(或多或少)。

标签位置由组件和的边框决定[inner sep],因此移动标签的最简单方法就是在标签内添加空间。

\documentclass[a4paper]{article}

\usepackage{tikz}
\usepackage[european]{circuitikz}

\makeatletter
\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
    \pgfpointorigin
    \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
    \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
    \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
    \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
  \pgfusepath{draw}
  \pgfscope
    \pgfsetarrowsend{latex'}
    \pgfpathmoveto{\pgfpoint{0.8\pgf@circ@res@left}{1.2\pgf@circ@res@up}}
    \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
    \pgfusepath{draw}   %draw arrow
  \endpgfscope
}
\makeatother

\begin{document}

\begin{figure}[!ht]
\begin{circuitikz}
%\tikzset{every node/.style={inner sep=1em}}
\draw (0,0) to[I, l={$I_B$~},name=A] (0,2);
%\draw[red] (A.sw) rectangle (A.ne);
\end{circuitikz}
\end{figure}

\end{document}

演示


为了获得更多控制,请用节点替换标签:

\begin{document}

\begin{circuitikz}
\draw (0,0) to[I, name=A] (0,2);
\node[left=2pt] at (A.n) {$I_A$};

\draw (0,0) to[I, name=B] (2,0);
\node[above=2pt] at (B.n) {$I_B$};
\end{circuitikz}

\end{document}

相关内容