在族谱中,“妻子”与“丈夫 1”育有四个孩子,后来又与“丈夫 2”育有四个孩子,但没有孩子。
\documentclass{standalone}
\usepackage[all]{genealogytree}
\begin{document}
\begin{genealogypicture}[
template=signpost,
]
child{
p{Husband1}
g{Wife}
c{Child1} c{Child2} c{Child3} c{Child4}
union{
p{Husband2}
}
}
\end{genealogypicture}
\end{document}
显示为 。
边缘被放置在不同的高度以避免冲突。我更希望将通往丈夫 2 的边缘置于另一边缘之上,以避免边缘交叉。我可以明确地将边缘向上移动,
union[subtree={edges={yshift=+5mm}}]{
p{Husband2}
屈服。
为了获得良好的结果,我还需要降低另一条边。这似乎是一种笨拙的解决方法,可以撤消已经完成的移动工作,所以我想知道我如何才能告诉 genealogytree 我想要的边的顺序。
如果我把丈夫2作为“主要”伴侣,并为丈夫1和四个孩子建立一个联盟节点
\documentclass{standalone}
\usepackage[all]{genealogytree}
\begin{document}
\begin{genealogypicture}[template=signpost]
child{
union{
p{Husband1}
c{Child1} c{Child2} c{Child3} c{Child4}
}
g{Wife}
p{Husband2}
}
\end{genealogypicture}
\end{document}
我按照我想要的高度顺序获得了边缘,但是其他不必要的交叉:
(我正在使用 texlive 2015 中的 genealogytree 0.91。)
答案1
更新:在
genealogytree
1.30 (2017-12-08) 版本中,选项edges shift
、edges up
和edges down
可在包内使用,并且实现方式更加通用。用户无需再自行定义它们。
如果七个节点要保持原样(我想您希望如此),则必须手动更改垂直边缘锚点的位置。基本上,您已经尝试了各种可能性。我可以补充的是一些如何移动边缘的缓解方法。
您可以添加自己的样式来快捷执行本地移位操作。
edges shift/.style={family edges={yshift=#1}},
允许edges shift=5mm
直接写类似的内容。
模板signpost
将水平距离设置为1cm
。要切换双户型结构的垂直高度,您可以使用快捷键
edges up/.style={edges shift=3.3333mm},
edges down/.style={edges shift=-3.3333mm},
让事情变得更简单。
完整代码如下:
\documentclass{standalone}
\usepackage[all]{genealogytree}
% --- only needed before version 1.30 of genealogytree
%\gtrset{
% edges shift/.style={family edges={yshift=#1}},
% edges up/.style={edges shift=3.3333mm},
% edges down/.style={edges shift=-3.3333mm},
%}
\begin{document}
\begin{genealogypicture}[
template=signpost,
]
child[edges down]{
p{Husband1}
g{Wife}
c{Child1} c{Child2} c{Child3} c{Child4}
union[edges up]{
p{Husband2}
}
}
\end{genealogypicture}
\end{document}
得出: