@set@library@version1.32
genealogytree edges scope/.style=
genealogytree extra edges scope/.style=
@parse@afternode@hook@content
@parse@afterfamily@hook@content
@parse@beginfamily@hook@content
@parse@endfamily@hook@content
genealogypicture
[1][]
@errorgenealogypicture inside tikzpicture environment genealogypicture cannot be used inside a tikzpicture environment. Alternatively, use
(see documentation).
@reset@before@parser
#1
@tikzpicture
exgenealogypicturegenealogypicture
gtr@init@timeflow@down/.style=gtr@node@person/.style=below right, gtr@init@timeflow@up/.style=gtr@node@person/.style=above right, gtr@init@timeflow@left/.style=gtr@node@person/.style=below left, gtr@init@timeflow@right/.style=gtr@node@person/.style=below right
gtr@per@#1@tikz
@temp@tikzgtr@per@#1@tikz
gtr@node@opt/.code=
@temp@tikz
gtr@node@opt/.code=
@tempgtr@per@#1@box
minimum width=
@temp
, minimum height=
@temp+
@temp
, alias=
gtr@per@#1@id
, gtr@node@opt
(p@#1) at (
gtr@per@#1@x
‚
gtr@per@#1@y
);
line width=0pt‚inner sep=0pt‚outer sep=0pt‚draw=none‚fill=none‚rectangle‚gtr@node@person
@forall@nodes
@create@node@person
at (p@#1)
gtr@per@#1@box
;
line width=0pt‚inner sep=0pt‚outer sep=0pt‚draw=none‚fill=none‚rectangle
@forall@nodes
@draw@box@person
[2]
#2
@tmp@macro#2
@dim@min
@dim@max-
@level@mid=\@undefined
@dat@draw@x=\@undefined
@dat@draw@y=\@undefined
@dat@draw@par=\@undefined
@dat@draw@chi=\@undefined
#1<
@dim@min
@dim@min=#1
#1>
@dim@max
@dim@max=#1
@legnum
@legnum+1
@process
#1#2
@x
@x
@y
@y
@reset@minmax
@process@anchorp@##1#2
@record@minmax
@x
@dat@draw@chi
@x‚
@y
gtr@fam@#1@chi
gtr@fam@#1@chi
@gnodegtr@fam@#1@g
@process@anchorp@##1#3
@temp##1
@gnode
@temp
@temp@w
gtr@per@##1@dim
@x
@x-0.5
@temp@w
+
gtr@fam@#1@frac
@temp@w
@record@minmax
@x
@dat@draw@par
@x‚
@y
gtr@fam@#1@par
gtr@fam@#1@par
@legnum>0
@dat@draw@x(
@dim@min+
@dim@max)/2
@dat@draw@xgtr@fam@#1@x
@dat@draw@ygtr@fam@#1@pos
@predraw@family@vert#1
@edge@anchor@vert@A
@edge@anchor@vert@B
@predraw@family@vert#1
@edge@anchor@vert@B
@edge@anchor@vert@A
@reset@minmax
@process@anchorp@##1#2
@record@minmax
@y
@dat@draw@chi
@x‚
@y
gtr@fam@#1@chi
gtr@fam@#1@chi
@gnodegtr@fam@#1@g
@process@anchorp@##1#3
@temp##1
@gnode
@temp
@temp@w
gtr@per@##1@dim
@y
@y+0.5
@temp@w
-
gtr@fam@#1@frac
@temp@w
@record@minmax
@y
@dat@draw@par
@x‚
@y
gtr@fam@#1@par
gtr@fam@#1@par
@dat@draw@xgtr@fam@#1@pos
@legnum>0
@dat@draw@y(
@dim@min+
@dim@max)/2
@dat@draw@ygtr@fam@#1@y
@predraw@family@hori#1
@edge@anchor@hori@A
@edge@anchor@hori@B
@predraw@family@hori#1
@edge@anchor@hori@B
@edge@anchor@hori@A
gtr@link
0pt
(#1‚#2)–(#1‚
@dat@draw@y);
gtr@link
0pt
(#1‚
@dat@draw@y)–(#1‚#2);
gtr@link
0pt
(#1‚#2)–(
@dat@draw@x‚#2);
gtr@link
0pt
(
@dat@draw@x‚#2)–(#1‚#2);
@forlistloop
@edge@perpendicular@line@vert@inv
@dat@draw@chi
@forlistloop
@edge@perpendicular@line@vert
@dat@draw@par
line cap=round‚gtr@link‚-
0pt
0pt
(
@dim@min‚
@dat@draw@y)–(
@dim@max‚
@dat@draw@y);
@edge@perpendicular@up
@edge@perpendicular@down
@forlistloop
@edge@perpendicular@hori@inv
@dat@draw@chi
@forlistloop
@edge@perpendicular@hori
@dat@draw@par
line cap=round‚gtr@link‚-
0pt
0pt
(
@dat@draw@x‚
@dim@min)–(
@dat@draw@x‚
@dim@max);
@edge@perpendicular@right
@edge@perpendicular@left
#1-
@dat@draw@x>-
@edge@arc
#1-
@dat@draw@x<
@edge@arc
gtr@link
@temp
0pt
(#1‚#2)|-(dat@draw);
#1-
@dat@draw@x>-
@edge@arc
#1-
@dat@draw@x<
@edge@arc
gtr@link
@temp
0pt
(dat@draw)-|(#1‚#2);
#2-
@dat@draw@y>-
@edge@arc
#2-
@dat@draw@y<
@edge@arc
gtr@link
@temp
0pt
(#1‚#2)-|(dat@draw);
#2-
@dat@draw@y>-
@edge@arc
#2-
@dat@draw@y<
@edge@arc
gtr@link
@temp
0pt
(dat@draw)|-(#1‚#2);
@forlistloop
@edge@rounded@line@vert@inv
@dat@draw@chi
@forlistloop
@edge@rounded@line@vert
@dat@draw@par
line cap=round‚gtr@link‚-
0pt
0pt
(dat@draw)–(dat@draw);
@edge@rounded@up
@edge@rounded@down
@forlistloop
@edge@rounded@line@hori@inv
@dat@draw@chi
@forlistloop
@edge@rounded@line@hori
@dat@draw@par
line cap=round‚gtr@link‚-
0pt
0pt
(dat@draw)–(dat@draw);
@edge@rounded@right
@edge@rounded@left
gtr@link
0pt
(#1‚#2) to[controls=+(270:
@edge@swingcontrol) and +(90:
@edge@swingcontrol)] (dat@draw);
gtr@link
0pt
(dat@draw) to[controls=+(90:
@edge@swingcontrol) and +(270:
@edge@swingcontrol)] (#1‚#2);
gtr@link
0pt
(#1‚#2) to[controls=+(90:
@edge@swingcontrol) and +(270:
@edge@swingcontrol)] (dat@draw);
gtr@link
0pt
(dat@draw) to[controls=+(270:
@edge@swingcontrol) and +(90:
@edge@swingcontrol)] (#1‚#2);
gtr@link
0pt
(#1‚#2) to[controls=+(180:
@edge@swingcontrol) and +(0:
@edge@swingcontrol)] (dat@draw);
gtr@link
0pt
(dat@draw) to[controls=+(0:
@edge@swingcontrol) and +(180:
@edge@swingcontrol)] (#1‚#2);
gtr@link
0pt
(#1‚#2) to[controls=+(0:
@edge@swingcontrol) and +(180:
@edge@swingcontrol)] (dat@draw);
gtr@link
0pt
(dat@draw) to[controls=+(180:
@edge@swingcontrol) and +(0:
@edge@swingcontrol)] (#1‚#2);
@forlistloop
@edge@swing@line@vertB@inv
@dat@draw@chi
@forlistloop
@edge@swing@line@vertA
@dat@draw@par
@forlistloop
@edge@swing@line@vertA@inv
@dat@draw@chi
@forlistloop
@edge@swing@line@vertB
@dat@draw@par
@forlistloop
@edge@swing@line@horiB@inv
@dat@draw@chi
@forlistloop
@edge@swing@line@horiA
@dat@draw@par
@forlistloop
@edge@swing@line@horiA@inv
@dat@draw@chi
@forlistloop
@edge@swing@line@horiB
@dat@draw@par
gtr@link
(#1) to[
@edge@meshoptions] (##1);
@dat@draw@chi
@forlistloop
@edge@mesh@line
@dat@draw@par
@edge@mesh@up
@edge@mesh@down
@edge@mesh@left
@edge@mesh@down
@edge@mesh@right
@edge@mesh@down
genealogytree extra edges scope
gtr@fam@
@currentfamily @par
@getPerNumForId##1
@tmp@num
gtr@fam@
@currentfamily @par
@tmp@num
#1
gtr@fam@
@currentfamily @chi
@getPerNumForId##1
@tmp@num
gtr@fam@
@currentfamily @chi
@tmp@num
#2
edges=#3
@predraw@family
@currentfamily
@dat@draw@x
@dat@draw@x+
@edge@core@xshift
@dat@draw@y
@dat@draw@y+
@edge@core@yshift
(dat@draw) at (
@dat@draw@x‚
@dat@draw@y) ;
@legnum>
@edge@noleg
gtr@link/.style=/gtr/edge/gtr@edge@background
gtr@edge@
@edgemode @
@timeflow
gtr@link/.style=/gtr/edge/gtr@edge@foreground
gtr@edge@
@edgemode @
@timeflow
@extra@edges@pre=\@undefined
@extra@edges@app=\@undefined
code=
@cs@keysalsofromgtr@fam@#1@opt@subtree
@cs@keysalsofromgtr@fam@#1@opt@family
@forlistloop
@draw@family@extra
@extra@edges@pre
@predraw@family#1
@dat@draw@x
@dat@draw@x+
@edge@core@xshift
@dat@draw@y
@dat@draw@y+
@edge@core@yshift
alias=
gtr@fam@#1@id
‚alias=f@#1
(dat@draw) at (
@dat@draw@x‚
@dat@draw@y) ;
@legnum>
@edge@noleg
gtr@link/.style=/gtr/edge/gtr@edge@background
gtr@edge@
@edgemode @
@timeflow
gtr@link/.style=/gtr/edge/gtr@edge@foreground
gtr@edge@
@edgemode @
@timeflow
@forlistloop
@draw@family@extra
@extra@edges@app
@family@label
@family@label@options
at (f@#1)
@family@label;
genealogytree edges scope
use family database, database format=marriage, code=
@database@label
,
@forall@families
@draw@family
p@#1south west
@x<
@xa
@xa
@x
@y<
@ya
@ya
@y
p@#1north east
@x>
@xb
@xb
@x
@y>
@yb
@yb
@y
@xa=
@ya=
@xb=-
@yb=-
@temp@listgtr@fam@#1@chi
@temp@list
@addboundary@node
@temp@list
@temp@listgtr@fam@#1@par
@temp@list
@addboundary@node
@temp@list
@xa>
@xb
@xa=0pt
@ya=0pt
@xb=0pt
@yb=0pt
gtr@per@#1@parof
@famstack@push
gtr@per@#1@parof
gtr@per@#1@chiof
@famstack@push
gtr@per@#1@chiof
@xa=
@ya=
@xb=-
@yb=-
@famstack@push#1
@famstack@popto
@currentfamily
@temp@listgtr@fam@
@currentfamily @patchi
@temp@list
@addboundary@node
@temp@list
gtr@fam@
@currentfamily @typechi
@pushchildfamily
@temp@list
gtr@fam@
@currentfamily @typeuni
@pushchildfamily
@temp@list
@temp@listgtr@fam@
@currentfamily @patpar
@temp@list
@addboundary@node
@temp@list
gtr@fam@
@currentfamily @typepar
@pushparentfamily
@temp@list
@famstack@size>0
@xa>
@xb
@xa=0pt
@ya=0pt
@xb=0pt
@yb=0pt
fit to family/.code=
@getFamNumForId#1
@getboundingrectangle@family
@tmp@num
fit/.expanded=(
@xa‚
@ya)(
@xb‚
@yb)
, fit to subtree/.code=
@getFamNumForId#1
@getboundingrectangle@subtree
@tmp@num
fit/.expanded=(
@xa‚
@ya)(
@xb‚
@yb)
,