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 circuitikz
Farbverwaltung 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:
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}
Antwort2
Ab Seite 57 des Handbuchs
Anlegen an den Kondensator
\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.tex
im Befehl definiert \drawpoles
. Dieser Code kann im Handumdrehen mithilfe des xpatch
Pakets geändert werden, das den Befehl bereitstellt \xpatchcmd
, der eine Such- und Ersetzungsaktion für einen Befehl ausführt.
Im MWE unten \drawpoles
verwendet der geänderte Befehl einen neuen Befehl \polecolor
für die Farbe, der innerhalb des Dokuments geändert werden kann. Beachten Sie, dass dies das Starten eines neuen \draw
Befehls 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:
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]}{}{}