用块绘制偶极子和三极子

用块绘制偶极子和三极子

为了绘制circuitikz带有变压器的图,我必须先画出变压器,如下面的代码所示。

%Flyback
\begin{circuitikz}[scale = 1.5] \draw
    (0,0) node[transformer, yscale=1.5](T) {} 
    (T.A2)  
        to [short] ($(T.A2)+(-1.5,0)$)
        to [V, l=$V_S$, invert] ($(T.A1)+(-1.5,0)$)     
        to [nos, l=S] (T.A1)    
    (T.B1)
        to [D, l=D] ++(2,0) coordinate (Node1)  
        to [short] ++(2,0)
        to [R, l_=R, v^=$V_o$] ($(T.B2)+(4,0)$)
        to [short] (T.B2)
    (Node1)
        to [pC, l_=C, *-*, invert] ($(T.B2)+(2,0)$) 
    %Transformer labels
    (T.inner dot A1) node[circ]{}
    (T.inner dot B2) node[circ]{}
    ($(T.base)+(0,0.3)$) node{$N_1$ : $N_2$}
;
\end{circuitikz}

在此处输入图片描述

这使得绘图变得相当困难,因为我必须先画出变压器,然后根据初始变压器的锚点画出整个图,

因此,如果我要画出下面的电路,那就非常困难了。

在此处输入图片描述

那么,如何“从左到右”绘制带有变压器的电路,例如以最西南的坐标为 (0,0),并基于此绘制图形?

还有另一个问题,我查看了手册circuitikz并显示了下一个例子:

在此处输入图片描述

据我了解,以下代码可实现红色矩形:

\draw[red, thick] (1.5,2.5) rectangle (4.5,3.5)

但是当我尝试这样做时,LyX 拒绝完成编译过程。我只circuitikz从 MikTeX 前端安装,找不到tikz包。circuitikz可以这样做吗,还是我需要另一个包?

答案1

正如我在评论中提到的,LyX 无法完成编译,因为缺少分号。有时 TiZ 出现错误,但不幸的是,有时它会一直运行下去。


我想我已经找到了你的主要问题的答案。为了“从左到右”绘制,你需要改变变压器的大小,使其高度和宽度为一些整数尺寸。我发现变压器的高度和宽度大约是 值的 1.5 倍(bipoles/length不明白为什么它不是 1 或 2)。因此,如果我希望它的高度为 2 厘米,我必须添加bipoles/length=1.333333cm

现在高度为 2cm,您可以使用普通的笛卡尔坐标。以下代码使用变压器绘制了一个简单的图形,但它字面上地从左到右绘制。

\documentclass[margin=3]{standalone}
\usepackage[americaninductors]{circuitikz}
\begin{document}
\begin{circuitikz}
\ctikzset{bipoles/length=1.33333333cm} % 4/3 so that the height of the 
                                       % transformer is exactly 2
\draw[*-] (0,0) -- (1,0);
\draw[*-] (0,2) -- (1,2);
\node[transformer core] at (2,2) {};
\draw[-*] (3,0) -- (4,0);
\draw[-*] (3,2) -- (4,2);
\end{circuitikz}
\end{document}

在此处输入图片描述

现在,通过这个技巧,您可以绘制复杂的图形(我希望如此)。祝您好运!

答案2

可以使用 来定位变压器[anchor=A1]。此外,还可以使用(A|-B)(A-|B)协议来定位交叉线的交叉点。

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}[scale = 1.5]
  \draw
    (0,0) coordinate (P1)
        to [nos, l=S] ++(1.5,0)
        node[transformer, yscale=1.5, anchor=A1] (T) {}
    (T.A2)
        to [short] (P1 |- T.A2)
        to [V, l=$V_S$, invert] (P1);
  \draw
    (T.B1)
        to [D, l=D] ++(2,0) coordinate (Node1)  
        to [short] ++(2,0) coordinate(P2)
        to [R, l_=R, v^=$V_o$] (P2 |- T.B2)
        to [short] (T.B2)
    (Node1)
        to [pC, l_=C, *-*, invert] (T.B2 -| Node1) 
    %Transformer labels
    (T.inner dot A1) node[circ]{}
    (T.inner dot B2) node[circ]{}
    ($(T.base)+(0,0.3)$) node{$N_1$ : $N_2$}
;
\end{circuitikz}
\end{document}

演示

答案3

虽然我认为John Kormylo 的回答对于可用版本 (0.9.0) 来说可能是正确的circuitikz,我只是想说这个问题促使我添加一个自 0.9.1 以来可用的选项,该选项将允许移除四极子的水平“挡板”。

摘自 0.9.1 版手册

这将为您绘制电路时提供更多的灵活性。

您可以在以下位置查看拉取请求https://github.com/circuitikz/circuitikz/pull/208

相关内容