@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@xgtr@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) ,

Processed with \(\mathsf{valep\TeX}\), Version 0.1, May 2024.