我想用下面的代码画一棵树,但是连接 S0 和 S1 的线不够长,如下图所示,有人可以帮帮我吗?
\documentclass[tikz]{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{level 1/.style={level distance=0.7cm, sibling distance=4.5cm}}
\tikzset{level 2/.style={level distance=0.7cm, sibling distance=4.5cm}}
\tikzset{bag/.style={text width=20em,text centered,yshift=-0.2cm}}
\begin{tikzpicture}[grow=down, -stealth]
{\node[bag]{$S_0{:}(m)$}
child{ edge from parent node[left=0.1cm]{$$}; \node[bag]{$S_1{:}(i_1)$}
child{ edge from parent node[right=0.1cm]{$$}; \node[bag]{$S_4{:}(s)$}
}
}
child{ edge from parent node[right=0.1cm]{$$};
\node[bag,yshift=-1.0cm]{$S_2{:}(t_1)$}
child{ edge from parent node[left=0cm]{$$}; \node[bag]{$S_5{:}(t_1{+}t_2)$}
}
child{ edge from parent node[right=0cm]{$$}; \node[bag]{$S_6{:}(t_1{+}t_3)$}
}
}
child{edge from parent node[right=0.1cm]{$$}; \node[bag]{$S_3{:}(t_3)$}
child{ edge from parent node[right=0.1cm]{$$}; \node[bag]{$S_6{:}(t_1{+}t_3)$}
}
};
}
\end{tikzpicture}
\end{document}
答案1
从您绘制的蓝色区域来看,我猜您指的是 S0 和 S2。您正在为边缘放置空节点,然后放置额外的\node
语法。将所有内容转换为默认条目会得到预期的输出,但我不确定您想要的最终产品是什么。
\documentclass[tikz]{standalone}
\tikzset{level 1/.style={level distance=0.7cm, sibling distance=4.5cm},
level 2/.style={level distance=1cm, sibling distance=4.5cm},
bag/.style={text width=20em,text centered,yshift=-0.2cm}}
\begin{document}
\begin{tikzpicture}[grow=down,-stealth]
\node[bag]{$S_0{:}(m)$}
child{node[bag]{$S_1{:}(i_1)$}
child{
node[bag]{$S_4{:}(s)$}
}
}
child{ node[bag,yshift=-1.0cm]{$S_2{:}(t_1)$}
child{
node[bag]{$S_5{:}(t_1{+}t_2)$}
}
child{ node[bag]{$S_6{:}(t_1{+}t_3)$}
}
}
child{ node[bag]{$S_3{:}(t_3)$}
child{ node[bag]{$S_6{:}(t_1{+}t_3)$}
}
};
\end{tikzpicture}
\end{document}
如果您想将第一级箭头延伸到节点,那么您需要减小节点大小,因为节点宽度为 20em 并且形状边框与内容相比太大。