tikz でノードに色を付けるマクロを設定する

tikz でノードに色を付けるマクロを設定する

次のコードがあります

\documentclass[a0paper,landscape]{article}
\usepackage{tikz}
\usepackage{geometry}
\usetikzlibrary{arrows,patterns,shapes,positioning}
\geometry{margin = .5in}


\begin{document}
    \centering
    \begin{tikzpicture}[
        roundnode/.style = {circle,very thick,draw=blue!70,fill=blue!5,minimum size=7mm},
        cloudnode/.style = {cloud,cloud puffs=10, cloud puff arc=60,draw=cyan!70,fill=cyan!5,minimum width = 5mm,minimum height= 3mm}, 
        rectnode/.style = {rectangle,draw = green!60,fill=green!5,minimum size = 7mm},
    ]
    % Nodes
    \node[roundnode] (titulo) at (0,0) {Eletricidade};
    \node[rectnode,draw=yellow!70,fill=yellow!10] (carga) at (0, -3) {Cargas Elétricas};
    \node[rectnode,draw=red!70,fill=red!5,below left= of carga] (positivas) {Positivas};
    \node[rectnode,draw=blue!70,fill=blue!10,below right= of carga] (negativas) {Negativas};
    
    % Lines
    \begin{scope}[>=stealth,thick]
    \draw[->] (titulo) -- (carga) node [pos=.5,right] {Estuda os fenômenos relacionados a};
    \draw (carga) -- (0,-4)  node [below= 4mm]{Que podem ser} ;
    \draw[->](0,-4) -- (negativas);
    \draw[->](0,-4) -- (positivas);
    \end{scope}
    \end{tikzpicture}
\end{document}

そして、colorname が xcolor パッケージの任意の色、または少なくとも LaTeX ネイティブの色であるところを置換するマクロを作成したいと考えていますdraw=[colorname]!70,fill=[colorname]!10。このマクロは、色名をパラメーター (引数、わかりません) として受け取る必要があります。そうすれば、次のように呼び出すことでノードに色を付けることができます。

\node[rectnode,nodecolor=blue,{other options}] at ({coordinate}) {Anything}

皆さん助けてくれませんか?

答え1

スタイルに引数を渡したり、デフォルト値を設定したりすることもできます。

 rectnode/.style = {rectangle,draw = #1!60,fill=#1!5,minimum size = 7mm},
 rectnode/.default = green

ここで#1スタイルに渡される引数を表します。ノードでデフォルトの緑色を使用するには、次のようにします。

\node[rectnode] ...

しかし、別の色にしたい場合は、例えば

\node[rectnode=blue] ...

代わりに、完全なコード:

\documentclass{article}
\usepackage{tikz}
\usepackage{geometry}
\usetikzlibrary{arrows,patterns,shapes,positioning}
\geometry{margin = .5in}


\begin{document}
    \centering
    \begin{tikzpicture}[
        roundnode/.style = {circle,very thick,draw=blue!70,fill=blue!5,minimum size=7mm},
        cloudnode/.style = {cloud,cloud puffs=10, cloud puff arc=60,draw=cyan!70,fill=cyan!5,minimum width = 5mm,minimum height= 3mm}, 
        rectnode/.style = {rectangle,draw = #1!60,fill=#1!5,minimum size = 7mm},
        rectnode/.default = green
    ]
    % Nodes
    \node[roundnode] (titulo) at (0,0) {Eletricidade};
    \node[rectnode=yellow] (carga) at (0, -3) {Cargas Elétricas};
    \node[rectnode=red,below left= of carga] (positivas) {Positivas};
    \node[rectnode=blue,below right= of carga] (negativas) {Negativas};
    
    % Lines
    \begin{scope}[>=stealth,thick]
    \draw[->] (titulo) -- (carga) node [pos=.5,right] {Estuda os fenômenos relacionados a};
    \draw (carga) -- (0,-4)  node [below= 4mm]{Que podem ser} ;
    \draw[->](0,-4) -- (negativas);
    \draw[->](0,-4) -- (positivas);
    \end{scope}
    \end{tikzpicture}
\end{document}

関連情報