我尝试使用forest
分叉边选项来绘制家谱,除了绘制两个父母都显示在树中的孩子外,这种方法似乎效果很好。在这种情况下,我希望有一条线连接父母,从父母那里画出孩子。我已经使用空节点实现了类似的事情:
\documentclass{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
forked edges,
[,phantom
[Parent 1,draw,name=p1]
[
[Child 1,draw]
[Child 2,draw]
]
[Parent 2,draw,name=p2]
]
\draw (p1)--(p2);
\end{forest}
\end{document}
这将产生以下输出:
显然,下面的实际树连接和上面的连接之间的间隙很烦人,但我还没有找到消除它的方法。理想情况下,我可以延伸分叉边缘的向上连接,直到它到达父母之间的线。这样的事情可能吗?
答案1
您可以使用tikz
键添加缺失的行。这样做的好处是,如果您重复使用,您可以为其定义样式。
\documentclass{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
forked edges,
[,phantom
[Parent 1,draw,name=p1]
[,tikz={\draw (.south)|-(p1);}
[Child 1,draw]
[Child 2,draw]
]
[Parent 2,draw,name=p2,tikz={\draw ()--(p1);}]
]
\end{forest}
\end{document}
答案2
\documentclass[border=3mm]{standalone}
\usepackage[edges]{forest}
\usetikzlibrary{positioning}
\begin{document}
\begin{forest}
for tree = {draw,
forked edge,
l sep = 8mm,
fork sep = 5mm,
s sep = 9mm,
}
[,coordinate, name=root
[Child 1]
[Child 2]
]
\node[draw, left =of root, name=p1] {Parent 1};
\node[draw, right=of root, name=p2] {Parent 2};
\draw (p1)--(p2);
\end{forest}
\end{document}