circuitikz:使用 \pgfmathparse 设置颜色

circuitikz:使用 \pgfmathparse 设置颜色
\documentclass[a4paper]{article} 
\usepackage{tikz} 
\usepackage{circuitikz} \usetikzlibrary{shapes.geometric,arrows,shapes,decorations.markings} \begin{document} 
\begin{circuitikz} [american currents]  
\foreach \x in {1,2,3} {    
\def\myr{\pgfmathparse{int(mod(\x,2))}\pgfmathresult}   
  \draw (\x,0) [nos=\myr, color={rgb:red,1; blue,0}] to (\x,1); % <---
} 
\end{circuitikz} 
\end{document}

上述代码生成了附图。我希望​​开关 0 为蓝色。将突出显示的行更改为

\draw (\x,0) [nos=\myr, color={rgb:red,\myr; blue,1-\myr}] to (\x,1);

导致 texmaker 5.0.3 在 osx 上崩溃。我该如何解决这个问题?

答案1

看起来这和着色中使用的有关1-\myr。一种解决方案是使用 来导出红色和蓝色。使用这种方法时,您需要在定义颜色时\pgfmathparse进行扩展,因此使用 而不是。我还将 放在了定义之外。\pgfmathresult\xdef\def\pgfmathparse

\documentclass[a4paper]{article} 
\usepackage{tikz} 
\usepackage{circuitikz} 
\usetikzlibrary{shapes.geometric,arrows,shapes,decorations.markings} 
\begin{document} 
\begin{circuitikz} [american currents]  
  \foreach \x in {1,2,3} {    
    \pgfmathparse{int(mod(\x,2))}\xdef\myr{\pgfmathresult}
    \pgfmathparse{int(1-mod(\x,2))}\xdef\myb{\pgfmathresult}
    \draw (\x,0) [nos=\myr, color={rgb:red,\myr; blue,\myb}] to (\x,1);
  } 
\end{circuitikz} 
\end{document}

在此处输入图片描述

相关内容