Circuitikz:如何按相对长度单位绘制的电路原理图进行缩放?

Circuitikz:如何按相对长度单位绘制的电路原理图进行缩放?

对于以下内容,我需要:

1-根据字体大小设置的绘图比例缩放组件尺寸、电线长度、连接节点

2- 使元件和电线具有相同的厚度,该厚度取决于每个尺度的全局相对单位长度,因为电线看起来更细

3- 缩放流箭头长度,使其始终(无论绘图比例如何)覆盖电阻器末端和电感器起点之间的距离。

4-了解电线和电阻器/电感器之间的连接节点是否可以松动或平滑,而不是这种尖锐的连接。

在此处输入图片描述

\documentclass{article}
\usepackage[
american, 
siunitx , 
RPvoltages, 
]{circuitikz}
\begin{document}
    \tiny
    \begin{circuitikz}[x=3em, y=3em]
        \draw (0,2) to[R=$R_a$, o-] ++(2,0)
        to[short,f=$i_a$] ++(0.1,0) 
        to[L, cute inductor, l=$L_a$]  ++(2,0);
    \end{circuitikz}

    \normalsize
    \begin{circuitikz}[x=3em, y=3em]
        \draw (0,2) to[R=$R_a$, o-] ++(2,0)
        to[short,f=$i_a$] ++(0.1,0) 
        to[L, cute inductor, l=$L_a$]  ++(2,0);
    \end{circuitikz}

    \Large
    \begin{circuitikz}[x=3em, y=3em]
        \draw (0,2) to[R=$R_a$, o-] ++(2,0)
        to[short,f=$i_a$] ++(0.1,0) 
        to[L, cute inductor, l=$L_a$]  ++(2,0);
    \end{circuitikz}
\end{document}

答案1

第一步是确定字体的相对大小。

\documentclass{article}
\usepackage{pgfmath}

\newcommand{\scale}{}% reserve global name
\newcommand{\setscale}[1]{\sbox0{#1\strut}%
  \pgfmathdivide{\ht0}{\ht\strutbox}%
  \let\scale=\pgfmathresult}
  
\begin{document}
\setscale{\tiny}tiny \scale

\setscale{\scriptsize}scriptsize \scale

\setscale{\footnotesize}footnotesize \scale

\setscale{\small}small \scale

\setscale{\normalsize}normalsize \scale

\setscale{\large}large \scale

\setscale{\Large}Large \scale

\setscale{\huge}huge \scale

\end{document}

演示1


然后您需要将其应用于 circutikz 中的几个比例因子。

\documentclass{article}
\usepackage[
american, 
siunitx , 
RPvoltages, 
]{circuitikz}

\newcommand{\tinyscale}{0.5}
\newcommand{\Largescale}{1.5}

\begin{document}
    \tiny
    \ctikzset{bipoles/thickness=\tinyscale}
    \begin{circuitikz}[scale=\tinyscale, transform shape, use fpu reciprocal, line width={\tinyscale*0.5pt}]
        \draw (0,2) to[R=$R_a$, o-] ++(2,0)
        to[short,f=$i_a$] ++(0.1,0) 
        to[L, cute inductor, l=$L_a$]  ++(2,0);
    \end{circuitikz}

    \normalsize
    \ctikzset{bipoles/thickness=1}
    \begin{circuitikz}
        \draw (0,2) to[R=$R_a$, o-] ++(2,0)
        to[short,f=$i_a$] ++(0.1,0) 
        to[L, cute inductor, l=$L_a$]  ++(2,0);
    \end{circuitikz}

    \Large
    \ctikzset{bipoles/thickness=\Largescale}
    \begin{circuitikz}[scale=\Largescale, transform shape, use fpu reciprocal, line width={\Largescale*0.5pt}]
        \draw (0,2) to[R=$R_a$, o-] ++(2,0)
        to[short,f=$i_a$] ++(0.1,0) 
        to[L, cute inductor, l=$L_a$]  ++(2,0);
    \end{circuitikz}
\end{document}

演示2

相关内容