根据内部节点定位 tikz 树

根据内部节点定位 tikz 树

如何根据内部节点定位 tikz 树,即不是定义根的位置,而是定义内部节点的位置?

例如,考虑以下代码。

\documentclass[border=10pt,multi,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \node {a}
    child {node at (1,0) {b}
      child {node {c}}
  };

  \node {x}
    child {node at (3,0) {y}
      child {node {z}}
  };
\end{tikzpicture}
\end{document}

这段代码确实不是产生所需的输出,但它显示的是我所想象的。

期望有两棵树,其中b和分别y位于(1,0)(3,0),其余的树在它们周围是正常的,例如,a在上方bc在下方,b尊重level distance等等。

特别是当ac成为更大的树时,在内部节点对齐两棵树就变成了繁琐的转移工作。

答案1

为了防止节点按照定义放置,可以使用 TiZ 的图形绘制功能与trees布局库。

例如,

\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}
  \graph [tree layout]
  {
    a -- { b[at={(1,0)}] , c }
  };
  \graph [tree layout]
  {
    x -- { y[at={(3,0)}] , z }
  };
\end{tikzpicture}
\end{document}

使用 LuaTeX 编译得到以下结果。

trees around nodes

如果您愿意,您可以坚持使用更详细的语法,同时仍使用算法图形绘制功能。这只是更简洁而已。

相关内容