假设 A 和 B 生了孩子 X,和 C 生了孩子 Y。我知道union
可以这样做:
\begin{tikzpicture}
\genealogytree[template=formal graph,
]
{child{
g[id=a, tikz={xshift=9mm,yshift=0mm}]{A}
union{
p[id=b, tikz={xshift=-9mm,yshift=0mm}]{B}
c[id=x]{X}
}
union{
p[id=c]{C}
c[id=y]{Y}
}
}
}
\end{tikzpicture}
(换班是为了防止交叉路口)
但是如果 B 也有孩子 Z 和 D 怎么办?我现在正在做的是add parent
:
\documentclass[a4paper,landscape]{article}
\usepackage[top=4.5cm, bottom=4.5cm, left=1cm, right=1cm]{geometry}
\usepackage[all]{genealogytree}
\begin{document}
\begin{tikzpicture}
\genealogytree[template=formal graph,
add parent = b to fam_B
]
{child[id=fam_A]{
g[id=a, tikz={xshift=9mm,yshift=0mm}]{A}
union{
p[id=b, tikz={xshift=-9mm,yshift=0mm}]{B}
c[id=x]{X}
}
union{
p[id=c]{C}
c[id=y]{Y}
}
}
child[id=fam_B, edges up = 1 of 4]{
g[id=d, tikz={xshift=-15mm,yshift=0mm}] {D}
c[id=z, tikz={xshift=-9mm,yshift=0mm}] {Z}}
}
\end{tikzpicture}
\end{document}
这产生了
这很好,只是边缘只在一个点从 B 出来(相比之下,从 A 出来有两条边缘)。我似乎找不到调整边缘起点的方法,只能调整中心节点。
有没有办法很好地做到这一点?我希望有一种方法可以推广到双方超过两次婚姻(有大量的转变)。
答案1
一种方法是给每个节点着色,并用绿色突出显示妻子2和后代 - 并将妻子3和后代涂成蓝色 - 追踪更容易 - 当然也可以根据颜色区分边缘
\documentclass[a4paper,landscape]{article}
\usepackage[top=4.5cm, bottom=4.5cm, left=1cm, right=1cm]{geometry}
\usepackage[all]{genealogytree}
\begin{document}
\begin{tikzpicture}
\genealogytree[template=formal graph,
% add parent = b to fam_B
options for node={wife2, childw2}{box={colback=green!20!white}},
options for node={wife3, childw3}{box={colback=blue!20!white}},
]{
child{
g[male]{Husband}
p[female]{Wife1}
c[female]{childw1}
% c[male]{a_4}
% c[female]{a_5}
union[id=fam_2]{
p[id=wife2,female]{Wife2}
c[id=childw2,female]{childw2}
% c[id=nd3,male]{d_3}
% c[id=nd4,male]{d_4}
}
union[id=fam_3]{
p[id=wife3,female]{Wife3}
c[id=childw3,female]{childw3}
% c[id=nd3,male]{d_3}
% c[id=nd4,male]{d_4}
}
}
}
\end{tikzpicture}
\end{document}
具有自定义边缘
\documentclass[a4paper,landscape]{article}
\usepackage[top=4.5cm, bottom=4.5cm, left=1cm, right=1cm]{geometry}
\usepackage[all]{genealogytree}
\begin{document}
\begin{tikzpicture}
\genealogytree[template=formal graph,
% add parent = b to fam_B
options for node={wife2, childw2}{box={colback=green!20!white}},
options for node={wife3, childw3}{box={colback=blue!20!white}},
]{
child{
g[male]{Husband}
p[female]{Wife1}
c[female]{childw1}
union[id=fam_2, family={edges={foreground={green!30}}}]{
p[id=wife2,female, ]{Wife2}
c[id=childw2,female]{childw2}
}
union[id=fam_3, family={edges={foreground={blue!30,}}}]{
p[id=wife3,female,]{Wife3}
c[id=childw3,female]{childw3}
}
}
}
\end{tikzpicture}
\end{document}