Elemente mit Makros in circuitikz beschriften

Elemente mit Makros in circuitikz beschriften

Gibt es eine Möglichkeit, jedem MOS-Transistorelement an einer bestimmten Stelle [ ($(M1.G)+(1.3,-0.2)$) node [below] {$M_1$}] mithilfe von Makros wie Beschriftungen hinzuzufügen \lbl{1}, sodass ich nicht jedes Mal die Beschriftung mit einer anderen Nummer wie M1, M2 usw. hinzufügen muss?

\begin{figure}[H]
\centering
    \begin{circuitikz}[scale=1]
        \ctikzset{tripoles/mos style/arrows}
        \def\Ba{2,0.5} 
        \def\lbl{1.3,-0.2}
        \draw           
            (\Ba) node [nmos] (M1) {} ($(M1.G)+(\lbl)$) node [below] {$M_1$}
            (M1.S) node [ground] {}
            ($(\Ba)+(0,2)$) node [nmos] (M2) {}($(M2.G)+(1.3,-0.2)$) node [below] {$M_2$} 
            (M1.D) --(M2.S)
            (M1.G) node[circ]{}node[left]{$V_B$}
            (M2.G) node[circ]{}node[left]{$V_{in}$} 
            ($(M1.D)+(0,0.25)$)--($(M1.D)+(1,0.25)$)node[circ]{$V_{out}$}
            (M2.D) node [rground,yscale=-1] (vdd){}   ;
    \end{circuitikz}
    \caption{\Common drain amplifier.}
\end{figure}

Bildbeschreibung hier eingeben

Antwort1

Sie können beispielsweise die Abkürzung definieren

\newcommand\mynmos[1]{node [nmos] (M#1) {} ($(M#1.G)+(\lbl)$) node [below] {$M_{#1}$}}

und verwenden Sie es als

\draw           
  (\Ba) \mynmos{1}
  (M1.S) node [ground] {}
  ($(\Ba)+(0,2)$) \mynmos{2}

(den vollständigen Code finden Sie unten).

Sie können auch nur für das Etikett ein Makro einführen. In diesem Fall können Sie es nicht aufrufen, \lblda Sie diesen Namen bereits verwenden.

\newcommand\lblnmos[1]{($(M#1.G)+(\lbl)$) node [below] {$M_{#1}$}}
...
\draw           
    (\Ba) node [nmos] (M1) {} \lblnmos{1}
    (M1.S) node [ground] {}
    ($(\Ba)+(0,2)$) node [nmos] (M2) {} \lblnmos{2}

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\newcommand\mynmos[1]{node [nmos] (M#1) {} ($(M#1.G)+(\lbl)$) node [below] {$M_{#1}$}}
    \begin{circuitikz}[scale=1]
        \ctikzset{tripoles/mos style/arrows}
        \def\Ba{2,0.5} 
        \def\lbl{1.3,-0.2}
        \draw           
            (\Ba) \mynmos{1}
            (M1.S) node [ground] {}
            ($(\Ba)+(0,2)$) \mynmos{2}
            (M1.D) --(M2.S)
            (M1.G) node[circ]{}node[left]{$V_B$}
            (M2.G) node[circ]{}node[left]{$V_{in}$} 
            ($(M1.D)+(0,0.25)$)--($(M1.D)+(1,0.25)$)node[circ]{$V_{out}$}
            (M2.D) node [rground,yscale=-1] (vdd){}   ;
    \end{circuitikz}
\end{document}

verwandte Informationen