Mymindmap/.style 中的思维导图属性(增长周期、级别 1 等)

Mymindmap/.style 中的思维导图属性(增长周期、级别 1 等)

我很清楚这\tikzset一点\tikzstyle

但我缺少一些东西来将代码从一个翻译到另一个。

引出相关问题,我怎样才能将grow cyclic,shape=circle,very thick,level distance=13mm,cap=round定义思维导图的放入其中MyMindmap/.style

根据封面上的简化版本tikzpgf手册对于风格化的思维导图(您会注意到\tikzstyle以下内容)

在此处输入图片描述

\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap}

\begin{document}
\tikzstyle{level 1}=[sibling angle=120]
\tikzstyle{level 2}=[sibling angle=60]
\tikzstyle{level 3}=[sibling angle=30]
\tikzstyle{every node}=[fill]
\tikzstyle{edge from parent}=[draw]
\tikz [grow cyclic,shape=circle,very thick,level distance=13mm,cap=round]
\node {} child [color=\A] foreach \A in {red,green,blue}
{ node {} child [color=\A!50!\B] foreach \B in {red,green,blue}
{ node {} child [color=\A!50!\B!50!\C] foreach \C in {black,gray,white}
{ node {} }
}};

\end{document}

但我正在努力将其切换到tikzset grammar。下面的 MWE 不起作用。

\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap}

\begin{document}

\tikzset{
level 1/.style={sibling angle=120},
level 2/.style{sibling angle=60},
level 3/.style{sibling angle=30},
}

\begin{tikzpicture}
[grow cyclic,shape=circle,very thick,level distance=13mm,cap=round,level 1, level 2, level 3,every node/.style{fill},edge from parent/.style{draw},]
\node {} child [color=\A] foreach \A in {red,green,blue}
{ node {} child [color=\A!50!\B] foreach \B in {red,green,blue}
{ node {} child [color=\A!50!\B!50!\C] foreach \C in {black,gray,white}
{ node {} }
}
};
\end{tikzpicture}

答案1

你确实只是缺少了=符号(四个)。正确的语法是

\tikzset{level 2/.style={sibling angle=60}}

并不是

\tikzset{level 2/.style{sibling angle=60}}

=因此之后缺少四个/.style

\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap}

\begin{document}

\tikzset{
level 1/.style={sibling angle=120},
level 2/.style={sibling angle=60},
level 3/.style={sibling angle=30},
}

\begin{tikzpicture}
[grow cyclic,shape=circle,very thick,
level distance=13mm,cap=round,level 1, level 2, level 3,
every node/.style={fill},edge from parent/.style={draw},]
\node {} child [color=\A] foreach \A in {red,green,blue}
{ node {} child [color=\A!50!\B] foreach \B in {red,green,blue}
{ node {} child [color=\A!50!\B!50!\C] foreach \C in {black,gray,white}
{ node {} }
}
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

附带说明一下,将\tikzsets 放在环境之外tikzpicture,这相当于在文档级别设置 pgf 键,在某种程度上违背了使用的目的\tikzset,因为这些设置适用于所有内容tikzpicture,但对于standalone仅包含此图片的文档来说,这并不是什么问题。

至于评论,当然你可以将风格组合成一种新的风格。

\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap}

\begin{document}

\tikzset{Mymindmap1/.style={grow cyclic,shape=circle,
very thick, level distance=13mm,cap=round,
every node/.style={fill},edge
from parent/.style={draw}, 
level 1/.style={sibling angle=120},
level 2/.style={sibling angle=60},
level 3/.style={sibling angle=30},
}}

\begin{tikzpicture}[Mymindmap1]
\node {} child [color=\A] foreach \A in {red,green,blue}
{ node {} child [color=\A!50!\B] foreach \B in {red,green,blue}
{ node {} child [color=\A!50!\B!50!\C] foreach \C in {black,gray,white}
{ node {} }
}
};
\end{tikzpicture}
\end{document}

但是,level 1/.style像第一个 MWE 中那样设置,然后只包括 justlevel 1只会“意外地”产生预期的效果,并且可能会产生不良的副作用。也就是说,只包括level 1在样式列表中Mymindmap1只会评估样式。你必须告诉 TiZ 明确表示,level 1/.style={...}因为它将“尝试一下”

 \tikzset{level/.try=\the\tikztreelevel,level \the\tikztreelevel/.try}%

副作用(在这种情况下)是,如果您拥有更高的级别,他们将拥有您放置的sibling angle最后一种level <n>风格。

相关内容