为了绘制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 无法完成编译,因为缺少分号。有时 Ti钾Z 出现错误,但不幸的是,有时它会一直运行下去。
我想我已经找到了你的主要问题的答案。为了“从左到右”绘制,你需要改变变压器的大小,使其高度和宽度为一些整数尺寸。我发现变压器的高度和宽度大约是 值的 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 以来可用的选项,该选项将允许移除四极子的水平“挡板”。
这将为您绘制电路时提供更多的灵活性。
您可以在以下位置查看拉取请求https://github.com/circuitikz/circuitikz/pull/208