CircuiTikZ:创建一个命令来调整单个组件的大小

CircuiTikZ:创建一个命令来调整单个组件的大小

正如经常被问到的那样,我想调整circuitikz环境中单个组件的大小,这可以通过传递给组件选项来实现/tikz/circuitikz/bipoles/length=<length>。我有以下示例:

\documentclass{article}
\usepackage[american]{circuitikz}

\begin{document}
    \begin{circuitikz}
        \draw node[ground,/tikz/circuitikz/bipoles/length=2cm]{} to [C] (0,2) to [L] (2,2) to [C] (2,0) to node[ground,/tikz/circuitikz/bipoles/length=2cm]{} (2,0);
        \draw (2,2) to [pC] (4,2) to [R](4,0) to node[ground,/tikz/circuitikz/bipoles/length=2cm]{} (4,0)
        (5,2) node[npn](npn1) {}
        (4,2) to [short] (npn1.base)
        (npn1.emitter) to [R,/tikz/circuitikz/bipoles/length=1cm] (5,0)
        to node[ground]{}(5,0)
        (npn1.collector) to[R,/tikz/circuitikz/bipoles/length=1cm] (5,4)
        to[short](4,4) to [R] (4,2)
        (5,4) node[vcc] (5,4){$Vcc$}
        ;
    \end{circuitikz}
\end{document}

我想缩放除一个之外的所有地面节点,使其长度为 2cm,为此,我想创建一个命令,类似于\newcommand{\setsize}[1]{/tikz/circuitikz/bipoles/length=#1}但似乎不起作用。这只是因为不必一直写/tikz/circuitikz/...。该命令也应该适用于其他组件。

答案1

这个答案为您提供了一种重新定义的方法ground,但也给出了警告。让我们首先回顾一下为什么(或如何)node[ground]起作用。ground是一种形状,而不是一种风格。所以 TiZ 发现没有ground定义样式,然后检查形状,找到它。因此,可以在第一阶段进行拦截,然后定义

\tikzset{ground/.style={shape=ground,/tikz/circuitikz/bipoles/length=2cm}}

现在Z 会找到一种样式ground,说“啊哈,OP 想让我使用形状ground,并将双极长度设置为 2 厘米。是的,女士/先生/鸭子/考拉!”。这是完整的示例:

\documentclass{article}
\usepackage[american]{circuitikz}
\tikzset{ground/.style={shape=ground,/tikz/circuitikz/bipoles/length=2cm}}
\begin{document}
    \begin{circuitikz}
        \draw node[ground]{} to [C] (0,2) to [L] (2,2) to [C] (2,0) to node[ground]{} (2,0);
        \draw (2,2) to [pC] (4,2) to [R](4,0) to node[ground]{} (4,0)
        (5,2) node[npn](npn1) {}
        (4,2) to [short] (npn1.base)
        (npn1.emitter) to [R,/tikz/circuitikz/bipoles/length=1cm] (5,0)
        to node[ground]{}(5,0)
        (npn1.collector) to[R,/tikz/circuitikz/bipoles/length=1cm] (5,4)
        to[short](4,4) to [R] (4,2)
        (5,4) node[vcc] (5,4){$Vcc$}
        ;
    \end{circuitikz}
\end{document}

在此处输入图片描述

至少在这个例子中,这种方法确实有效。但请注意,这不是最稳定的方法。如果在此之前有东西被拦截怎么办?一种不太容易受到攻击的方法是

\tikzset{my ground/.style={shape=ground,/tikz/circuitikz/bipoles/length=2cm}}

然后在节点中使用my ground而不是ground。为了进一步激发这种方法,请考虑有人定义样式\tikzset{circle/.style={shape=rectangle}}并造成很多混乱的情况。另一方面,除了这个警告之外,这种方法circuitikz还允许您修改 和的所有形状tikz

相关内容