![CircuiTikZ:创建一个命令来调整单个组件的大小](https://linux22.com/image/397666/CircuiTikZ%EF%BC%9A%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E6%9D%A5%E8%B0%83%E6%95%B4%E5%8D%95%E4%B8%AA%E7%BB%84%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F.png)
正如经常被问到的那样,我想调整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
是一种形状,而不是一种风格。所以 Ti钾Z 发现没有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
。