我正在尝试标记两个电路元件之间的节点电压,但似乎无法将标签 (V(s)) 垂直置于元件之间。我这里漏掉了什么?我试图实现图中的电路。 这是我目前所拥有的。
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\begin{frame}{Circuit 3}
\begin{center}
\begin{circuitikz}[american]
\ctikzset{bipoles/thickness=2}
\draw (0,0) to[short, f>^=$I(s)$] (0,-1) -- (-1,-1);
\draw (-1,-1) to[L, l_=$sL$] (-1,-3);
\draw (0,-1) -- (1,-1) to[isource, l=$\frac{i(0^-)}{s}$] (1,-3) -- (-1,-3);
\draw (0,-3) to[short] (0,-4);
\draw (0,-1) to[open, v=$V(s)$] (0,-3);
\end{circuitikz}
\end{center}
\end{frame}
\end{document}
答案1
更新 2020-05-15
有一个新的拉取请求即将发布的 1.1.2 版本应该可以修复此问题,以便问题中的代码可以开箱即用。
原始答案
为了“揭开”其to[open, v=...]
工作原理的神秘面纱:由于历史原因,电压放置circuitikz
与电压约定一起诞生european
;因此,短电压标签在这里有某种逻辑:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[RPvoltages]{circuitikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\begin{circuitikz}[european voltages]
\ctikzset{bipoles/thickness=2}
\draw (0,0) to[short, f>^=$I(s)$] (0,-1) -- (-2,-1);
\draw (-2,-1) to[L, l_=$sL$] (-2,-3);
\draw (0,-1) -- (2,-1) to[isource, l=$\frac{i(0^-)}{s}$] (2,-3) -- (-2,-3);
\draw (0,-3) to[short] (0,-4);
\draw (0,-1) to[open, v=$V(s)$] (0,-3);
\end{circuitikz}
\end{document}
...这很好。也许我应该修改代码,以便能够american voltage
按照open
你的想法(如果你在https://github.com/circuitikz/circuitikz/issues我会跟踪它 --- 我正在考虑重写电压代码),但目前,标签位置与使用的电压类型(等)无关american
。因此,您使用手动定位的想法是正确的。
作为补偿,我可以提供我的方法。我使用命名坐标和宏来控制电压和相对运动(这样,如果您想更改组件的位置,您总是只需更改一个数字):
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[RPvoltages]{circuitikz}
\usetikzlibrary{positioning, calc}
\def\putvoltage(#1)(#2)#3{%
\node[below] at (#1) {$+$};
\node[above] at (#2) {$-$};
\node at($(#1)!0.5!(#2)$) {#3};
}
\begin{document}
\begin{circuitikz}[american]
\ctikzset{bipoles/thickness=2}
\draw (0,0) to[short, f>^=$I(s)$] ++(0,-1) coordinate(top) % change the -1 to move everything down
-- ++(-2,0) coordinate(Rtop); % change the -2 to move right branch
\draw (Rtop) to[L, l_=$sL$] ++(0,-2) coordinate (Rbot);
\draw (top) -- ++(2,0) coordinate(Ltop) to[isource, l=$\frac{i(0^-)}{s}$ ] ++(0,-2) coordinate(Lbot);
\draw (Rbot) to[short] (Lbot);
\coordinate(bot) at (Rbot -| top); % vertically from top, horizontally form Rbot
\draw (bot) -- ++(0,-1);
% \draw (top) to[open, v=$V(s)$] (bot);
\putvoltage(top)(bot){$V(s)$}
\end{circuitikz}
\end{document}
答案2
看看,下面的方案是不是你在寻找的:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\begin{frame}{Circuit 3}
\begin{center}
\begin{circuitikz}[american]
\ctikzset{bipoles/thickness=2}
\draw (0,0) to[short, f>^=$I(s)$,-*] ++ (0,-1) coordinate (aux1)
-- ++ (+1.5,0)
to[isource, l=$\frac{i(0^-)}{s}$, v>=$V(s)$] ++ (0,-3)
-| ++ (-1.5,-1)
(aux1) -- ++ (-1.5,0)
to[L, l=$sL$] ++ (0,-3)
to[short,-*] ++ (1.5,0);
\end{circuitikz}
\end{center}
\end{frame}
\end{document}
编辑:电压降从电感转移到电流源
答案3
我没有使用 \draw (0,-1) to[open, v=$V(s)$] (0,-3);
我原始问题中的。我只是手动将“+”、“-”和“V(s)”放置在适当的位置。这不是那么优雅,但它给出了所需的结果。也许将来我可以揭开 \draw to[open] 工作原理的神秘面纱。修改后的代码如下:
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\usepackage{amsmath}
\begin{document}
\begin{frame}
\begin{center}
\begin{circuitikz}[american]
\ctikzset{bipoles/thickness=2}
\draw (0,0) to[short, f>^=$I(s)$] (0,-1)node[below]{$+$} -- (-1,-1);
\draw (-1,-1) to[L, l_=$sL$, name=L1] (-1,-3);
\draw (0,-1) -- (1,-1) to[isource, l=$\frac{i(0^-)}{s}$] (1,-3) -- (-1,-3);
\draw (0,-3)node[above]{$-$} to[short] (0,-4);
\node at (0,-2) {$V(s)$};
%\draw (0,-1) to[open, v=$V(s)$] (0,-3);
\end{circuitikz}
\end{center}
\end{frame}
\end{document}