孩子与父母保持一致

孩子与父母保持一致

我已经为此寻找了几个小时的例子,但不幸的是我找不到一个可以用的例子,很抱歉造成您的不便...在下面的例子中,我希望父级$v_1$和第二个子级之间有垂直对齐$v_4$,因为它稍微向右,但这个问题对于几个子级和他们的父级来说更为普遍,我希望它具有一定的“对称性”,这是我的例子。

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, forest, tikz}

\begin{document}
\begin{forest}
      for tree={anchor=center},
        [$v_1$
            [$v_2$
                [$v_3$[\scriptsize $3$, edge=densely dotted, l=.75cm]]
                [$v_4$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
                [$v_6$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
            ]
            [$v_4$
                [$v_2$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
                [$v_5$[\scriptsize $1$, edge=densely dotted, l=.75cm]]
                [$v_7$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
            ]
            [$v_5$
                [$v_3$[\scriptsize $3$, edge=densely dotted, l=.75cm]]
                [$v_4$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
            ]
        ]
      \end{forest}
\end{document}

答案1

该包具有您想要在根上使用的密钥forestcaligncalign child

[v_1, calign=child, calign child=2 …]

如果您有三个以上的孩子,calign child则需要进行更改或自动评估forest(例如,calign child=int(n_children/2)+1孩子数量为偶数)。

我擅自使用它math content来制作您的树,并将叶子的选项放入一种自动样式中,该样式仅在节点没有子节点时才应用。

代码

\documentclass[12pt,tikz]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
  for tree={
    math content,
    where={n_children==0}{font=\scriptsize, edge=densely dotted, l=.75cm}{}
  }
  [v_1, calign=child, calign child=2
      [v_2
          [v_3[3]]
          [v_4[2]]
          [v_6[2]]
      ]
      [v_4
          [v_2[2]]
          [v_5[1]]
          [v_7[2]]
      ]
      [v_5
          [v_3[3]]
          [v_4[2]]
      ]
  ]
\end{forest}
\end{document}

输出

在此处输入图片描述

答案2

不确定这是否正是您想要的,但您可以通过使用和计算平均值来强制位于和v_4的中点。潜在的不良后果是后续子代的间距不均匀。v_2v_5before computing xy

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, forest, tikz}

\begin{document}
\begin{forest}
      for tree={anchor=center},
        [$v_1$
            [$v_2$
                [$v_3$[\scriptsize $3$, edge=densely dotted, l=.75cm]]
                [$v_4$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
                [$v_6$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
            ]
            [$v_4$, before computing xy={s/.average={s}{siblings}}
                [$v_2$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
                [$v_5$[\scriptsize $1$, edge=densely dotted, l=.75cm]]
                [$v_7$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
            ]
            [$v_5$
                [$v_3$[\scriptsize $3$, edge=densely dotted, l=.75cm]]
                [$v_4$[\scriptsize $2$, edge=densely dotted, l=.75cm]]
            ]
        ]
      \end{forest}
\end{document}

相关内容