
У меня есть следующий код
\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}
и я хочу создать макрос для замены, draw=[colorname]!70,fill=[colorname]!10
где colorname — это любой цвет из пакета xcolor или, по крайней мере, собственные цвета LaTeX. Этот макрос должен принимать имя цвета как параметр (аргумент, idk). Таким образом, я могу раскрасить узел, вызвав что-то вроде:
\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}