![tikz 电路:如何改变电阻“可调”箭头的颜色?](https://linux22.com/image/455633/tikz%20%E7%94%B5%E8%B7%AF%EF%BC%9A%E5%A6%82%E4%BD%95%E6%94%B9%E5%8F%98%E7%94%B5%E9%98%BB%E2%80%9C%E5%8F%AF%E8%B0%83%E2%80%9D%E7%AE%AD%E5%A4%B4%E7%9A%84%E9%A2%9C%E8%89%B2%EF%BC%9F.png)
我正在尝试更改添加到电阻上的箭头的颜色,以指示它是可调的。我似乎只能更改电阻符号的颜色、电阻的导线和符号,但不能更改可调箭头。这是我的最小工作示例:
\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{circuits.ee.IEC}
\begin{document}
\begin{tikzpicture}[very thick, circuit ee IEC, set resistor graphic=var resistor IEC graphic]
\draw [red] (0.0, 0.0) to [resistor={blue, adjustable, info'={$R$}}] (3.0, 0.0);
\end{tikzpicture}
\end{document}
生成如下图像:
我尝试过adjustable=blue
和adjustable={color=blue}
,但都没有用。有什么想法吗?
答案1
选项adjustable
会向节点添加注释。您可以使用选项为此类注释添加颜色annotation arrow/.append style={every edge/.append style={blue}}
。因此,您可以执行以下操作:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{circuits.ee.IEC}
\begin{document}
\begin{tikzpicture}[
very thick,
circuit ee IEC,
set resistor graphic=var resistor IEC graphic,
annotation arrow/.append style={every edge/.append style={blue}},
]
\draw[red] (0.0, 0.0) to[resistor={blue, adjustable, info'={$R$}}] (3.0, 0.0);
\end{tikzpicture}
\end{document}
如果只想为特定的箭头着色,也可以将此选项附加到to
具有该resistor
选项的路径后,如:
\draw[red] (0.0, 0.0) to[annotation arrow/.append style={every edge/.append style={blue}}, resistor={blue, adjustable, info'={$R$}}] (3.0, 0.0);
正如@Qrrbrbirlbel 在评论中指出的那样,你甚至可以直接写:
\draw[red] (0.0, 0.0) to[resistor={blue, adjustable={every edge/.append style={blue}}, info'={$R$}}] (3.0, 0.0);
这是为什么呢?如果你查看注释的代码,你会发现注释一般是这样声明的:
\tikzset{
circuit declare annotation/.style args={#1#2#3}{%
#1/.style={
append after command={%
\bgroup
[current point is local=true]
[every circuit annotation/.try]
[every #1/.try]
[shift={(\tikzlastnode.north)}]
[annotation arrow,->]
[label distance=#2,##1]
#3
\tikz@after@path%
\egroup%
}
}
},
annotation arrow/.style = {
/utils/exec={\pgfsetarrowoptions{direction ee}{.4*\the\tikzcircuitssizeunit+.3*\the\pgflinewidth}},
>=direction ee,
}
}%
而具体的注解定义本质上只包含路径声明,比如:
\tikzset{circuit declare annotation={adjustable}{1.5\tikzcircuitssizeunit}
{
[shift=(\tikzlastnode.center)]
(-1.5\tikzcircuitssizeunit,-1.5\tikzcircuitssizeunit) edge[line to] (1.5\tikzcircuitssizeunit,1.5\tikzcircuitssizeunit)
}
}%
为了给这条路径涂上颜色,比如说蓝色,我们需要blue
在路径声明的边缘添加选项,我们可以使用 来实现every edge/.append style={blue}
。
答案2
具体来说:
\tikz\path {[blue] (0,0) edge[line to] (1,1) };
没有画出蓝线,这就是这里发生的情况:您给注释的任何选项,例如,adjustable = blue
都放在构成该箭头路径的实际边缘前面。
(电阻器本身是一个节点,并且节点也不会将其选项传递给放置在节点之后的路径上的注释。)
我们可以修补注释定义样式declare circuits annotation
,但这需要您分步circuits
加载。circuits.ee.IEC
在这里,我仅定义注释的大写变体,将其值转发给every edge
注释内的样式。
当然,如果你想让所有的注释都变成蓝色,你最好这样做
annotation arrow/.append style={every edge/.append style=blue}
或者如果你只想要可调节的蓝色:
every adjustable/.append style={every edge/.append style=blue}
也许你想要所有可调电阻都是蓝色的:
adj resistor/.style={resistor={blue,#1,adjustable={every edge/.append style=blue}}},
adj resistor'/.style={resistor={blue,#1,adjustable'={every edge/.append style=blue}}},
adj resistor/.default=,
adj resistor'/.default=,
然后您就可以使用它了to[adjresistor]
。
代码
\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{
/utils/tempa/.style={
\MakeUppercase #1/.style={#1={every edge/.append style={##1}}},
\MakeUppercase #1/.default=},
/utils/tempa/.list={adjustable, adjustable', direction info, light emitting, light dependent}}
\begin{document}
\begin{tikzpicture}[very thick, circuit ee IEC, set resistor graphic=var resistor IEC graphic]
\draw [red] (0.0, 0.0) to [resistor={blue, Adjustable=blue, info'={$R$}}] (3.0, 0.0);
\end{tikzpicture}
% \tikz\path {[blue] (0,0) edge[line to] (1,1) };
\end{document}