在 circuitikz 中自定义开关符号

在 circuitikz 中自定义开关符号

如何全局自定义这些开关(创建 \newcommand 或自定义环境)

\documentclass[]{standalone}
    \usepackage{amsmath}
    \usepackage{tikz}
    \usepackage{circuitikz}

    \begin{document}

    \begin{circuitikz} 
        \draw (0,0) node[spdt, xscale=-1] (Sw) {} (Sw.in) node[right] {in} (Sw.out 1) node[left] {out 1} (Sw.out 2) node[left] {out 2};
    \end{circuitikz} %yscale = -1

    \begin{circuitikz} 
        \draw (0,0) node[spdt] (Sw) {} (Sw.in) node[left] {in} (Sw.out 1) node[right] {out 1} (Sw.out 2) node[right] {out 2};
    \end{circuitikz}


    \end{document}

在此处输入图片描述

有这样的盒子吗?

在此处输入图片描述

编辑:即使参考手册也足够了

答案1

看起来你复制了代码,却没有理解这个概念

    \draw (0,0) node[spdt, xscale=-1] (Sw) [red]{a}

(0,0)是节点的坐标,最初你还没有给出名称{}

我给它取名为 {a},由于 xscale=-1,所以它是反转的(与镜像相同)

    \draw [red, thick] (Sw.in) -- (Sw.out 2);

只需从您命名的节点 (Sw.in) 到 (Sw.out 2) 画一条线

在此处输入图片描述

你想要的是以下

在此处输入图片描述

平均能量损失

\documentclass[]{standalone}
    \usepackage{amsmath}
    \usepackage{tikz}
    \usepackage{circuitikz}

    \begin{document}

    \begin{circuitikz} 
        \draw (0,0) node[spdt, xscale=-1] (Sw) {} 
        (Sw.in) node[right] {in} 
        (Sw.out 1) node[left] {out 1} 
        (Sw.out 2) node[left] {out 2};
        \draw [red, thick] (-0.4,-0.4) rectangle (0.4,0.4);%<-----added rectangle
    \end{circuitikz} %yscale = -1

    \begin{circuitikz} 
        \draw (0,0) node[spdt] (Sw) {} 
        (Sw.in) node[left] {in} 
        (Sw.out 1) node[right] {out 1} 
        (Sw.out 2) node[right] {out 2};
    \end{circuitikz}

    \end{document}

编辑

添加

\newcommand environ

平均能量损失

\documentclass{article}
\usepackage{circuitikz}

\begin{document}
\newcommand\boxspdt{%
    \begin{circuitikz} 
        \draw (0,0) node[spdt, xscale=-1] (Sw) {} 
        (Sw.in) node[right] {in} 
        (Sw.out 1) node[left] {out 1} 
        (Sw.out 2) node[left] {out 2};
        \draw [red, thick] (-0.4,-0.4) rectangle (0.4,0.4);
    \end{circuitikz} %yscale = -1
   }

\boxspdt
\end{document}

编译

    \boxspdt

会给

在此处输入图片描述

附言 你应该能够

\begin{circuitikz}...\end{circuitikz} 

超出上述定义;那么,你的来源将会有

\begin{circuitikz}
\boxspdt
 :
 : 
<optional other components can be added here other code here>
 :
 :
 \end{circuitikz}

(在这种情况下,您可能还想添加一种命名 spdt 的方法。也许是一个可选参数。)

答案2

可以使用节点的其他锚点(Sw)在其周围绘制一个框,尽管它会穿过inout锚点。由于 calc tikzlibrary 已加载,因此添加偏移量相对容易。

注意[xscale=-1]反转westeast锚定。

\documentclass[]{standalone}
    \usepackage{amsmath}
    \usepackage{circuitikz}

    \begin{document}

    \begin{circuitikz} 
        \draw (0,0) node[spdt, xscale=-1] (Sw1) {} (Sw1.in) node[right] {in} (Sw1.out 1) node[left] {out 1} (Sw1.out 2) node[left] {out 2};
        \draw[red] ($(Sw1.south east)+(4pt,-3pt)$)  rectangle ($(Sw1.north west)+(-4pt,3pt)$);
        \draw (3,0) node[spdt] (Sw2) {} (Sw2.in) node[left] {in} (Sw2.out 1) node[right] {out 1} (Sw2.out 2) node[right] {out 2};
        \draw[red] ($(Sw2.south west)+(4pt,-3pt)$)  rectangle ($(Sw2.north east)+(-4pt,3pt)$);
    \end{circuitikz}

\end{document}

演示

相关内容