我有这个 TikZ 代码:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture} [
level 1/.style={sibling distance = 2cm, level distance = 1cm},
level 2/.style={sibling distance = 1cm},
level 3/.style={sibling distance = 1cm},
every node/.style={circle, draw=black, minimum size = 0.5cm},
edge from parent/.style={red,thick,draw}
]
\node{}
child { node {}
child { node {} }
child { node {}
child { node {} }
child { node {} }
}
}
child { node {}
child { node {} }
child { node {} }
}
child { node {} }
;
\end{tikzpicture}
\end{document}
它产生了这样的图片:
底部节点为什么较粗?
答案1
样式会继承到子节点。手册在第 18.6 节末尾的注释中提到了这一点。Tikz 的其他地方也存在这种情况。
在这种情况下,解决方案是通过指定“每个节点”的样式来覆盖它,即
every node/.style={circle, draw=black, thin, minimum size = 0.5cm}
请注意,“细”实际上是正常的线宽。
编辑:由于我在查找内容时收到了回复,所以我想通过引用手册中的相关部分来提供更多信息;
除了插入来自父路径的边之外,来自父路径的边操作还有另一个效果:选项直接插入到来自父路径的边之前,并且在插入路径之前还会安装以下样式:
注意:在添加父路径边之前插入的选项适用于整个子路径。因此,不可能用红色绘制一个圆圈作为子路径的一部分,然后用蓝色绘制父路径的边。但是,与往常一样,子节点是一个节点,可以用完全不同的方式绘制。
对于有关修改特定路径的后续问题。我会将手册解读为您必须手动将样式应用于节点。
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} [
level 1/.style={sibling distance = 2cm, level distance = 1cm},
level 2/.style={sibling distance = 1cm},
level 3/.style={sibling distance = 1cm},
every node/.style={circle, draw=black, minimum size = 0.5cm}
]
\begin{scope}[xshift=6cm, edge from parent/.style={red,thin,draw}]
\node{}
child { node {}
child { node {} }
child { node {} edge from parent[thick]
child { node[thin] {} } % Overriding the inherited thick property.
child { node[thin] {} } % Overriding the inherited thick property.
}
}
child { node {}
child { node {} }
child { node {} }
}
child { node {} }
;
\end{scope}
\end{tikzpicture}
\end{document}
答案2
问题是由命令thick
中的参数引起的edge from parent.style
。如果你在样式thin
规范中添加every node
该参数,问题就会消失。
\begin{tikzpicture} [
level 1/.style={sibling distance = 2cm, level distance = 1cm},
level 2/.style={sibling distance = 1cm},
level 3/.style={sibling distance = 1cm},
every node/.style={circle, draw=black,thin, minimum size = 0.5cm}
]
...