使用 circuitikz 绘制电气图

使用 circuitikz 绘制电气图

我查看了文档和示例加拿大运输安全局, 但circuitikz很难掌握。

我正在尝试创造

通缉

以下是我目前所掌握的信息:

\documentclass[convert = false]{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
  \draw (-.5, 0) to[L, l = L] (1.4, 0)
           to[R, l = R] (5, 0);
\end{circuitikz}
\end{document}

但间距很奇怪,我似乎不知道如何设置它。

答案1

我也发现circuitikz文档有点欠缺,但通过检查示例可以学到很多东西。快速[circuitikz]在网站上搜索会找到更多示例。此外,还有一些其他circuitikz示例可从texample.net

关于间距,我的主要建议(实际上适用于任何矢量图形包)是在开始时对所有内容进行参数化;不要使用“魔法数字”。您的电路将更容易调整;移动东西将变得轻而易举。见下文。

在此处输入图片描述

\documentclass[convert = false]{article}
\usepackage[american]{circuitikz}
\begin{document}
\begin{circuitikz}[scale=2]
    \def\xPortLeft{0}
    \def\yTerminalBottom{0}
    \def\yL{1.5}
    \def\xL{1}
    \def\xR{1.75}
    \def\xC{2.25}
    \def\xPortRight{3}
    % left loop
    \draw                               (\xPortLeft,\yL)
            to[L=$L$, o-]               (\xL, \yL)
            to[R=$R$]                   (\xR, \yL)
            to[short]                   (\xC,\yL)
            to[C, l_=$C$,*-*]           (\xC,\yTerminalBottom)
            to[short,i=$i(t)$]          (\xPortLeft,\yTerminalBottom)
            to[open,v^>=$v_1(t)$,o-o]   (\xPortLeft,\yL);
    % right branch
    \draw                               (\xC,\yL)
            to[short]                   (\xPortRight,\yL)
            to[open,v^=$v_2(t)$,o-o]    (\xPortRight,\yTerminalBottom)
            to[short]                   (\xC,\yTerminalBottom);
\end{circuitikz}
\end{document}

答案2

方法如下。定义(x,y)每个电路节点的坐标(一般来说,2cm 的间隔就相当不错了),然后使用to[options]连接所有节点,其中options可以分别为标签/电流/电压名称使用 R、L、C、开路(电路)、短路(电路)、l(abel)=、v=、i​​=。诸如 和 等变体v^旨在v_将标签放在电路元件的两侧。至于 KVL 的电流环路,此解决方案使用amssymb带节点技术的封装来实现这一点。默认情况下,每个分支上的电流都带有标签,如电容器分支中所示。

在此处输入图片描述

代码:

\documentclass[convert = false, border=10pt,]{standalone}
\usepackage[american,siunitx]{circuitikz}
\usepackage{latexsym,amssymb,amsmath}
\begin{document}
\begin{circuitikz}
\draw (-.5, 2) to[L, l = $L$] (2, 2) to [R, l = $R$] (4, 2) to [short](6,2)
(4,2) to[C,l=$C$] (4,0)
(-0.5,2) to [open, v=$v_1(t)$,o-o](-0.5,0)
(6,2) to [open, v=$v_2(t)$,o-o] (6,0)   % use v^=$V_2$, if you want it on the right side.
(-0.5,0)--(6,0)
(1.5,1) node[scale=3]{$\circlearrowright$}
(1.5,1) node{$i_1$};
\end{circuitikz}
\end{document}

答案3

如果允许 PSTricks,您可以执行以下操作:

\documentclass{article}

% PSTricks.
\usepackage{
  pst-circ,
  pst-bspline,
  pstricks-add
}
\psset{unit = 0.8}

% Width and height of the diagram.
\def\width{12}
\def\height{6}

% Calculating width and height of picture.
\usepackage{xfp}
\newcommand*\Width{\fpeval{\width+0.4}}
\newcommand*\Height{\fpeval{\height+0.82}}

\begin{document}

% Drawing.
\begin{pspicture}(-0.4,-0.05)(\Width,\Height)
  % Coordinates for the ends of the wires.
  \pnodes{P}%
    (0,0)(0,0)% Doubled to let the nodes start from P1 instead of P0.
    (\fpeval{0.70*\width},0)%
    (\width,0)%
    (0,\height)%
    (\fpeval{0.35*\width},\height)%
    (\fpeval{0.70*\width},\height)
    (\width,\height)
  % Wires and components.
  \wire[arrows = o-o](P1)(P3)
  \coil[arrows = o-](P4)(P5){$L$}
  \resistor[arrows = -o, dipolestyle = zigzag](P5)(P6){$R$}
  \wire[arrows = o-o](P6)(P7)
  \capacitor[arrows = *-*](P2)(P6){$C$}
  % Labels.
  \uput[90](P1){$-$}
  \uput[90](P3){$-$}
  \uput[270](P4){$+$}
  \uput[270](P7){$+$}
 {\psset{linestyle = none}
  \pcline(P1)(P4)
  \ncput*{$v_1(t)$}
  \pcline(P3)(P7)
  \ncput*{$v_2(t)$}}
  % Direction of the current.
  \psBspline[arrows = ->]%
       (\fpeval{0.7*\width-3.0},\fpeval{\height-1})%
       (\fpeval{0.7*\width-1.2},\fpeval{\height-1})%
       (\fpeval{0.7*\width-1.2},1)%
       (\fpeval{0.7*\width-3.0},1)
  \rput(\fpeval{0.7*\width-2.2},\fpeval{\height/2}){$i(t)$}
\end{pspicture}

\end{document}

输出

这里,pst-circ用于绘制电气元件,pst-bspline用于绘制弯曲的箭头,pstricks-add用于设置标签。

图表的宽度和高度可以自由选择,并自动计算图片相应的宽度和高度。

注意:使用 Herbert Voß 的软件包进行此类绘图的优点pst-circ是所有宏都是(或多或少)不言自明的,因此如果需要,代码很容易编辑。此外,文档有很多例子。

答案4

这只是 PSTricks 的另一种解决方案。

\documentclass[pstricks,12pt]{standalone}
\usepackage{pst-circ}
\def\Tension(#1)(#2)#3{\uput[-90](#1){$+$}\uput[90](#2){$-$}\rput([nodesep=1.5]{#2}#1){#3}}
\begin{document}
\begin{pspicture}(-1,1)(9,-4)
    \pnodes(0,0){A}(3,0){B}(6,0){C}(8,0){D}([offset=-3]A){A'}([offset=-3]B){B'}([offset=-3]C){C'}([offset=-3]D){D'}
    \coil[arrows=o-,labeloffset=20pt](A)(B){$L$}
    \resistor[dipolestyle=zigzag,labeloffset=18pt](B)(C){$R$}
    \wire[arrows=-o](C)(D)
    \capacitor[arrows=*-*,labeloffset=-24pt](C)(C'){$C$}
    \wire[arrows=o-o](A')(D')
    \Tension(A)(A'){$v_1(t)$}
    \Tension(D)(D'){$v_2(t)$}
    \pcbar[linearc=20pt,arm=50pt]{->}([offset=-20pt]B)([offset=20pt]B')
    \nbput[labelsep=12pt]{$i(t)$}
\end{pspicture}
\end{document}

在此处输入图片描述

笔记

    % \the following tensions don't work temporarily
    %\tension[tensionstyle=pm](A)(A'){$v_1(t)$}
    %\tension[tensionstyle=pm](D)(D'){$v_2(t)$}

相关内容