Farbiges Element mit schwarzen Anschlüssen in circuitikz

Farbiges Element mit schwarzen Anschlüssen in circuitikz

Ich möchte ein farbiges Element zeichnen (sagen wir einen blauen Kondensator), aber die Farbe seiner Verbindungen (Endpunkte) soll schwarze Punkte bleiben. Der verwendete Code ist unten angegeben und führt dazu, dass die Endpunkte blau sind, obwohl ich sie schwarz haben möchte. Wie kann ich das in Circuitikz machen? Ich wäre Ihnen für Ihre Hilfe dankbar, da ich überall gesucht habe, aber keine Hilfe dazu finden konnte.

\begin{document}
\usepackage{circuitikz}
\begin{center}
\begin{circuitikz} 
  \draw(0,0) to [C,l_=$C$,*-*,color=blue](0,2);
\end{circuitikz}
\end{center}
\end{document}

Antwort1

So, so --- ich muss zugeben, dass die circuitikzFarbverwaltung ziemlich fehlerhaft ist (und mir ist gerade eine Lücke im Handbuch aufgefallen, die ich zu beheben versuchen werde), aber Sie können eine Art „immer schwarze“ Pole wie folgt definieren:

\documentclass[border=10pt]{standalone}
\usepackage[RPvoltages]{circuitikz}
% this is what the OP asked for
% notice that the manual is buggy
% always black pole styles
\tikzset{bcirc/.style={circ, color=black}}
\ctikzset{b-b/.style = {bipole nodes={bcirc}{bcirc}}} 
% for fun
\tikzset{gcirc/.style={circ, color=green}, 
        rsquare/.style={osquarepole, fill=yellow,
        % you must use the circuitikz explicitly here
        circuitikz/color=blue}}
\ctikzset{c-c/.style = {bipole nodes={gcirc}{rsquare}}}
\begin{document}
\begin{circuitikz} 
    \draw[](0,0) to [C,l_=$C$, color=blue, b-b] ++ (0,2);
    \draw[color=blue](2,0) to [C,l_=$C$, b-b] ++ (0,2);
    % for fun
    \draw[](4,0) to [C,l_=$C$, color=red, c-c] ++ (0,2);
\end{circuitikz}
\end{document}

was dazu führt:

Bildbeschreibung hier eingeben

Wenn Sie die Pole in einem bereits erstellten Schaltkreis ersetzen möchten, können Sie einfach die Definition der Standardpole ändern:

\documentclass[border=10pt]{standalone}
\usepackage[RPvoltages]{circuitikz}
% this is what the OP asked for
% notice that the manual is buggy
% always black pole styles
\tikzset{bcirc/.style={circ, color=black}}
\ctikzset{*-*/.style = {bipole nodes={bcirc}{bcirc}}}
\ctikzset{-*/.style = {bipole nodes={none}{bcirc}}}
\ctikzset{*-/.style = {bipole nodes={bcirc}{none}}}
\begin{document}
\begin{circuitikz}
    \draw[](0,0) to [C,l_=$C$, color=blue, *-*] ++ (0,2);
    \draw[color=blue](2,0) to [C,l_=$C$, *-] ++ (0,2);
    \draw[](4,0) to [C,l_=$C$, color=red, -*] ++ (0,2);
\end{circuitikz}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Ab Seite 57 des Handbuchs

Bildbeschreibung hier eingeben

Anlegen an den Kondensator

Bildbeschreibung hier eingeben

\documentclass{standalone}
\usepackage[american,cuteinductors]{circuitikz}
\usetikzlibrary{shapes,arrows,circuits,calc,babel}
\usepackage{pgfplots}

\tikzset{
    % R/.append style={color=red},
    C/.append style={color=blue},
    % battery1/.append style={color=green},
}

\begin{document}
\begin{tikzpicture}[transform shape, scale=1.0,thick]

\draw (0,0)node[circ]{} to [C = $C$] (0,2)node[circ]{};

\end{tikzpicture}  
\end{document}

Antwort3

Sie können dem Code, der die Masten zeichnet, eine Farbeinstellung hinzufügen. Diese ist in der Datei pgfcircbipoles.texim Befehl definiert \drawpoles. Dieser Code kann im Handumdrehen mithilfe des xpatchPakets geändert werden, das den Befehl bereitstellt \xpatchcmd, der eine Such- und Ersetzungsaktion für einen Befehl ausführt.

Im MWE unten \drawpolesverwendet der geänderte Befehl einen neuen Befehl \polecolorfür die Farbe, der innerhalb des Dokuments geändert werden kann. Beachten Sie, dass dies das Starten eines neuen \drawBefehls erfordert, wenn die Farbe innerhalb eines Schaltkreises geändert werden muss.

MWE:

\documentclass{article}
\usepackage{circuitikz}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\drawpoles}{(\tikztostart) node[\pgf@circ@temp]}{(\tikztostart) node[\pgf@circ@temp,color=\polecolor]}{}{}
\xpatchcmd{\drawpoles}{(\tikztotarget) node[\pgf@circ@temp]}{(\tikztotarget) node[\pgf@circ@temp,color=\polecolor]}{}{}
\def\polecolor{black}
\makeatother

\begin{document}
\begin{center}
\begin{circuitikz}
  \draw(0,0) to [capacitor,l_=$C$,*-*,color=blue](0,2);
  \def\polecolor{green}
  \draw(0,0) -- (2,0) to [capacitor,l_=$C$,*-*,color=blue](2,2) -- (0,2);
\end{circuitikz}


\end{center}
\end{document}

Ergebnis:

Bildbeschreibung hier eingeben

Für ältere Versionen circuitikz(vor 0.9.1) lautet der Patch wie folgt:

\xpatchcmd{\drawpoles}{(\tikztostart) node[circ]}{(\tikztostart) node[circ,color=\polecolor]}{}{}
\xpatchcmd{\drawpoles}{(\tikztotarget) node[circ]}{(\tikztotarget) node[circ,color=\polecolor]}{}{}

verwandte Informationen