我很清楚这\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}
附带说明一下,将\tikzset
s 放在环境之外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
只会评估样式。你必须告诉 Ti钾Z 明确表示,level 1/.style={...}
因为它将“尝试一下”
\tikzset{level/.try=\the\tikztreelevel,level \the\tikztreelevel/.try}%
副作用(在这种情况下)是,如果您拥有更高的级别,他们将拥有您放置的sibling angle
最后一种level <n>
风格。