Я хочу нарисовать цветной элемент (например, синий конденсатор), но я хочу сохранить цвет его соединений (конечных точек) в виде черных точек. Ниже приведен используемый код, который приводит к тому, что конечные точки становятся синими, тогда как я хочу, чтобы они были черными. Как это можно сделать в 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]}{}{}