tikz 电路:如何改变电阻“可调”箭头的颜色?

tikz 电路:如何改变电阻“可调”箭头的颜色?

我正在尝试更改添加到电阻上的箭头的颜色,以指示它是可调的。我似乎只能更改电阻符号的颜色、电阻的导线和符号,但不能更改可调箭头。这是我的最小工作示例:

\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=blueadjustable={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}

输出

在此处输入图片描述

相关内容