使用连接器(点)在 circuitikz 中绘制开关

使用连接器(点)在 circuitikz 中绘制开关

我正在尝试为模拟电子报告绘制逻辑门逻辑操作的示例。在以下代码中:

  \begin{circuitikz}
\draw (-3,0) to[battery] (-3,2);
\draw (-3,2) to[switch=${\rm s_1}$] (-1,2);
\draw (-1,2) to[switch=${\rm s_2}$] (1,2);
\draw (1,2) -- (1,2);
\draw (1,2) to[lamp=L] (1,0);
\draw (1,0) -- (-3,0);
\draw (-0.8,0) node[anchor=north] {$s_1$ \underline{and} $s_2=$ L};
\draw (0.62,1) node[anchor=east] {L};
\end{circuitikz}

我注意到,如果我尝试在 switch 命令之前使用 toto[short, -*]作为连接器,它会破坏 switch 本身的定位。有没有办法在连接 switch 的线的底部放置连接器(黑点)?

M. Redaelli——

嗨,谢谢你的回答。我第一次编译图像时尝试了 ospst 命令,但我想删除箭头并将连接器放在线的底部。我问了一个关于删除箭头的问题,有人回答了。他创建了以下内容:

%macro for switches without the arrows (cspst) and (ospst)
\makeatletter
%create the shape
\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{spst}{\ctikzvalof
{bipoles/interr/height}}{

\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}  
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
\pgfusepath{draw}
}

%make the shape accessible with nice syntax
\def\pgf@circ@spst@path#1{\pgf@circ@bipole@path{spst}{#1}}
\tikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spst@path, l=#1}}
\tikzset{spst/.style = {switch = #1}}
\makeatother

对于没有箭头的开关,它运行良好。我想删除箭头并添加连接器的原因是因为我正在将我的一位电子学教授的手写笔记转换为 tex 文件。我刚刚发现 tikz 和 circuitikz,所以我对这些环境很陌生。因此,我尝试为这样的开关创建样式文件,但没有成功。

感谢您的时间,

碧玉

PS 我喜欢 CircuiTikz!

答案1

我认为 Jasper 需要如下所示的开关,但每个开关都使用一个简单的命令(我说得对吗?)。节点也可以是黑色的。就我个人而言,我需要两者。

\documentclass{article}
\usepackage[free-standing-units]{siunitx}
\usepackage{circuitikz}

\begin{document}

\begin{circuitikz}[scale=1.5]

\draw (0,0) to [V=E] (0,2)
to[short,-o](0.75,2);
\draw[ very thick](0.78,2)-- +(30:0.46);
\draw (1.25,2)to[short,o-](2,2)
to [C=$C$](2,0)
to [short,-o](1.25,0);
\draw [very thick] (1.22,0)--(0.77,0);
\draw (0.75,0)to [short,o-](0,0);

\end{circuitikz}

\end{document}

这将导致:

图像

莱昂纳多

答案2

我不确定switch应该是什么。我不记得在 CircuiTikz 中放置了那个双极子,并且您的代码无法在这里编译,对此表示抱怨。

我替换了:

\draw (-3,2) to[ospst=${\rm s_1}$] (-1,2);
\draw (-1,2) to[ospst=${\rm s_2}$] (1,2);

对我来说很管用。这就是你需要的吗?

M.

相关内容