我对以下代码有疑问:
\begin{tikzpicture} [level distance=4mm]
\path [
every node/.style={ball color=red,inner sep=1.5pt},
level 2/.style={sibling distance=22mm},
level 5/.style={sibling distance=3mm}
]
node{} child foreach \perI in {1,...,6} {
node{} child { node{} child { node{} child {
node{} child foreach \perII in {1,...,5} {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{}
}}}}}}}}}}}}}}}}}}}}
}}}}
}
;
\end{tikzpicture}
当我使用 pdflatex(使用 MiKTeX)编译它时,出现以下错误消息:
! TeX capacity exceeded, sorry [grouping levels=255].
我猜我遇到了递归级别的限制。有什么办法可以解决这个问题吗?
请注意,我实际上需要一棵更长的树(总共 48 个级别)——不要问为什么,说来话长。
我唯一的想法是提前在第二个命令下生成长路径foreach
,然后在每个节点中重复使用它,即 30 次 - 但我不知道如何做到这一点。
(我试过了\path[save to=\tmpPath]
,但它似乎用绝对坐标保存了它,所以我没能得到我需要的 30 份副本。)
答案1
您可以使用 achain
代替child
ren 来表示底部的长路径。如果使用node distance=\tikzleveldistance, on grid, join
,节点的放置将与树级相同,并且您将获得节点之间的连接线。
这将使用以下方式进行编译pdflatex
:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots, pgfplotstable}
\usetikzlibrary{chains}
\pgfplotstableread{volcano.dat}\datatable
\begin{document}
\begin{tikzpicture} [level distance=4mm]
\path [
every node/.style={ball color=red,inner sep=1.5pt},
level 2/.style={sibling distance=22mm},
level 5/.style={sibling distance=3mm}
]
node{} child foreach \perI in {1,...,6} {
node{} child { node{} child { node{} child {
node{} child foreach \perII in {1,...,5} {
node [start chain=going below]{}
\foreach \perIII in {1,...,25}{
node [node distance=\tikzleveldistance,
on grid,
on chain,
join
] {}
}
}
}
}}
}
;
\end{tikzpicture}
\end{document}
答案2
检查一下
\begin{tikzpicture} [level distance=4mm]
\path [
every node/.style={ball color=red,inner sep=1.5pt},
level 2/.style={sibling distance=22mm},
level 5/.style={sibling distance=3mm}
]
node{} child foreach \perI in {1,...,6} {
node{} child { node{} child { node{} child {
node{} child foreach \perII in {1,...,5} {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
node{} child { node{} child { node{} child { node{} child {
% node{}
}}}}}}}}}}}}}}}}}}}}
}}}}
}
;
\end{tikzpicture}