Цветной элемент с черными соединениями в circuitikz

Цветной элемент с черными соединениями в circuitikz

Я хочу нарисовать цветной элемент (например, синий конденсатор), но я хочу сохранить цвет его соединений (конечных точек) в виде черных точек. Ниже приведен используемый код, который приводит к тому, что конечные точки становятся синими, тогда как я хочу, чтобы они были черными. Как это можно сделать в circuitikz? Я был бы признателен за вашу помощь, так как я искал везде, но не смог найти никакой помощи по этому вопросу.

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

решение1

Ну, ну --- я должен признать, что управление circuitikzцветом довольно глючное (и я только что заметил утечку в руководстве, которую постараюсь исправить), но вы можете определить своего рода «всегда черные» столбы, например, так:

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

что приводит к:

введите описание изображения здесь

Если вам нужно заменить полюса в уже созданной схеме, вы можете просто изменить определение стандартных полюсов:

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

введите описание изображения здесь

решение2

Со страницы 57 руководства

введите описание изображения здесь

Применяем к конденсатору

введите описание изображения здесь

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

решение3

Вы можете добавить настройку цвета в код, который рисует столбы. Это определяется в файле pgfcircbipoles.tex, в команде \drawpoles. Изменение этого кода может быть выполнено на лету с помощью xpatchпакета, который предоставляет команду \xpatchcmd, которая выполняет действие поиска и замены в команде.

В MWE ниже измененная команда \drawpolesиспользует новую команду \polecolorдля цвета, который можно изменить в документе. Обратите внимание, что это требует запуска новой \drawкоманды, если цвет необходимо изменить в схеме.

МВЭ:

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

Результат:

введите описание изображения здесь

Для более старых версий circuitikz(до 0.9.1) патч выглядит следующим образом:

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

Связанный контент