使用 necommand 缩放 CircuiTikz 中的组件

使用 necommand 缩放 CircuiTikz 中的组件

我的问题是:CircuiTikz 中的缩放组件

我想将单个 circuitikz 组件缩放到各种尺寸,例如使用命令

/tikz/circuitikz/bipoles/length=1cm

是否可以将其与 '\newcommand' 一起使用?如何使用?

我已经试过了

\draw (0,0) to[/tikz/circuitikz/bipoles/length=1cm,inductor] (3,0);

运行得很好。但是它不能

\newcommand{\compScale}[1]{/tikz/circuitikz/bipoles/length=#1cm}

在序言和

\draw (0,0) to[\compScale{1},inductor] (3,0);

我收到错误:

! Package pgfkeys Error: I do not know the key '/tikz/circuitikz/bipoles/length =1cm' and I am going to ignore it. Perhaps you misspelled it.

答案1

在手册中,您可以发现建议的缩放组件的方法是使用其类scale参数。更改双极基极长度是可以的,但一般来说(您应该对整个电路或至少整个路径进行此操作。查看手册,第 23 页左右,组件缩放)。

正确的方法是使用类缩放(不幸的是,您必须对任何类别的组件使用特定的键;我可以考虑在将来添加通用缩放,尽管我不确定它的实用性)。

就像(阅读评论;compScale宏是来自一只友善的猫咪给出了很好的回答):

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

\newcommand{\compScale}[1]{/tikz/circuitikz/bipoles/length=#1cm}
%
% use a specific scaled component, maybe with a parameter.
%
\tikzset{
    bigL/.style={L, inductors/scale=1.5},
    scaled L/.style={L, inductors/scale=#1},
    scaled/.default=1, % or whatever
}
\begin{document}
\begin{circuitikz}
    \draw (0,0) to[/tikz/circuitikz/bipoles/length=2cm,inductor=L, o-o] ++(3,0) to [L=L, o-o] ++(3,0);
\end{circuitikz}

\bigskip

\begin{circuitikz}
\draw (0,0) to[style/.expanded=\compScale{2},inductor=L, o-o] ++(3,0) to [L=L, o-o] ++(3,0);
\end{circuitikz}

\bigskip

\begin{circuitikz}
\draw (0,0) to[bigL, l=L, o-o] ++(3,0) to [scaled L=0.8, l=L, o-o] ++(3,0);
\end{circuitikz}

\end{document}

(请注意由于局部变化而在两极产生的伪影bipoles/lenght

在此处输入图片描述

答案2

欢迎!您需要扩展宏。

\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
\draw (0,0) to[/tikz/circuitikz/bipoles/length=1cm,inductor] (3,0);
\end{circuitikz}

\newcommand{\compScale}[1]{/tikz/circuitikz/bipoles/length=#1cm}
\begin{circuitikz}
\draw (0,0) to[style/.expanded=\compScale{1},inductor] (3,0);
\end{circuitikz}

\begin{circuitikz}
\draw (0,0) to[style/.expanded=\compScale{2},inductor] (3,0);
\end{circuitikz}

\end{document}

在此处输入图片描述

我想,如果你解释清楚你真正想做什么,就会有更好的选择。John Kormylo 的评论,可以定义一种cscale按一定因子缩放组件的样式。

\documentclass{article}
\usepackage{circuitikz}
\makeatletter
\tikzset{cscale/.code={\pgf@circ@Rlen=#1\pgf@circ@Rlen},cscale/.default=1}
\makeatother
\begin{document}
\begin{circuitikz}
\draw (0,0) to[cscale=1,inductor] (3,0);
\end{circuitikz}

\begin{circuitikz}
\draw (0,0) to[cscale=2,inductor] (3,0);
\end{circuitikz}
\end{document}

在此处输入图片描述

相关内容