Elemento colorido com conexões pretas no circuitikz

Elemento colorido com conexões pretas no circuitikz

Quero desenhar um elemento colorido (digamos, um capacitor azul), mas quero manter a cor de suas conexões (pontos finais) como pontos pretos. O código usado é fornecido abaixo, o que resulta em pontos finais azuis, enquanto eu os quero pretos. Como isso pode ser feito no circuitikz? Gostaria de receber sua ajuda, pois procurei por tudo, mas não consegui encontrar nenhuma ajuda sobre isso.

\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}

Responder1

Bom, bom --- tenho que admitir que o circuitikzgerenciamento de cores é bastante bugado (e só notei um vazamento no manual, que vou tentar corrigir), mas dá para definir uma espécie de postes "sempre pretos" assim:

\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}

o que resulta em:

insira a descrição da imagem aqui

Se o que você precisa é substituir os pólos de um circuito já feito, basta alterar a definição dos pólos padrão:

\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}

insira a descrição da imagem aqui

Responder2

Da página 57 do manual

insira a descrição da imagem aqui

Aplicando ao capacitor

insira a descrição da imagem aqui

\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}

Responder3

Você pode adicionar uma configuração de cor ao código que desenha os pólos. Isso é definido no arquivo pgfcircbipoles.tex, no comando \drawpoles. A alteração desse código pode ser feita instantaneamente usando o xpatchpacote, que fornece o comando \xpatchcmdque executa uma ação de pesquisa e substituição em um comando.

No MWE abaixo o comando modificado \drawpolesutiliza um novo comando \polecolorpara a cor, que pode ser alterado dentro do documento. Observe que isso requer o início de um novo \drawcomando se a cor precisar ser alterada dentro de um circuito.

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}

Resultado:

insira a descrição da imagem aqui

Para versões mais antigas circuitikz(antes de 0.9.1), o patch é o seguinte:

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

informação relacionada