summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/genealogytree/gtrcore.options.code.tex
Initial commit
Diffstat (limited to 'macros/latex/contrib/genealogytree/gtrcore.options.code.tex')
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.options.code.tex491
1 files changed, 491 insertions, 0 deletions
diff --git a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
new file mode 100644
index 0000000000..b2a97d807c
--- /dev/null
+++ b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
@@ -0,0 +1,491 @@
+%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% gtrcore.options.code.tex: Options
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+\gtr@set@library@version{1.32}
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% General handling
+%%%%%%%%%%%%%%%%%%%%%%%
+
+% #1 macro
+% #2 key list to append
+\newrobustcmd{\gtrkeysappto}[2]{%
+ \ifdefvoid{#1}%
+ {\edef#1{\unexpanded{#2}}}%
+ {\edef#1{\expandonce#1,\unexpanded{#2}}}}
+
+
+% #1 macro
+% #2 key list to append (global)
+\newrobustcmd{\gtrkeysgappto}[2]{%
+ \ifdefvoid{#1}%
+ {\xdef#1{\unexpanded{#2}}}%
+ {\xdef#1{\expandonce#1,\unexpanded{#2}}}}
+
+
+% #1 key
+% #2 key list to append
+\newrobustcmd{\gtr@keys@addvalue}[2]{%
+ \pgfkeysifdefined{#1}{%
+ \pgfkeysgetvalue{#1}{\gtr@temp}%
+ \edef\gtr@temp{\noexpand\pgfkeyssetvalue{#1}{\expandonce\gtr@temp,\unexpanded{#2}}}%
+ \gtr@temp%
+ }{%
+ \pgfkeyssetvalue{#1}{#2}%
+ }%
+}
+
+
+% #1 command sequence
+% #2 is a macro containing keys
+\def\gtr@cs@storekey#1#2{%
+ \ifdefvoid{#2}{}{\cslet{#1}{#2}}%
+}
+
+% #1 command sequence
+% #2 #3 are macros containing keys
+\def\gtr@cs@storekeys#1#2#3{%
+ \ifdefvoid{#2}{%
+ \ifdefvoid{#3}{}{\cslet{#1}{#3}}%
+ }{%
+ \ifdefvoid{#3}{%
+ \cslet{#1}{#2}%
+ }{%
+ \csedef{#1}{\expandonce#2,\expandonce#3}%
+ }%
+ }%
+}
+
+
+% set keys from command sequence #1
+\newrobustcmd*{\gtr@cs@keysalsofrom}[1]{%
+ \letcs\gtr@temp{#1}%
+ \ifdefvoid{\gtr@temp}{}{\pgfkeysalsofrom{\gtr@temp}}%
+}
+
+
+% set keys from stored key #1
+\newrobustcmd*{\gtr@key@keysalsofrom}[1]{%
+ \pgfkeysifdefined{#1}{%
+ \pgfkeysgetvalue{#1}{\gtr@temp}%
+ \pgfkeysalsofrom{\gtr@temp}%
+ }{}%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Key Management
+%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newcommand{\gtrsetoptionsforsubtree}[2]{%
+ \def\do##1{%
+ \gtr@keys@addvalue{/gtr/sopt/##1}{subtree={#2}}%
+ }%
+ \docsvlist{#1}%
+}
+
+
+\newcommand{\gtrsetoptionsforfamily}[2]{%
+ \def\do##1{%
+ \gtr@keys@addvalue{/gtr/sopt/##1}{family={#2}}%
+ }%
+ \docsvlist{#1}%
+}
+
+\newcommand{\gtrsetoptionsfornode}[2]{%
+ \def\do##1{%
+ \gtr@keys@addvalue{/gtr/nopt/##1}{#2}%
+ }%
+ \docsvlist{#1}%
+}
+
+
+\newcommand{\gtrignoresubtree}[1]{%
+ \def\do##1{%
+ \gtr@keys@addvalue{/gtr/sopt/##1}{ignore}%
+ }%
+ \docsvlist{#1}%
+}
+
+\newcommand{\gtrignorenode}[1]{%
+ \gtrsetoptionsfornode{#1}{ignore}%
+}
+
+
+\def\gtr@set@level@position@down#1{%
+ \csdimdef{gtr@per@#1@y}{\gtr@level@reference}%
+ \csdimdef{gtr@per@#1@dim}{\wd\csuse{gtr@per@#1@box}}%
+}
+
+\def\gtr@set@level@position@up#1{%
+ \csdimdef{gtr@per@#1@y}{-\gtr@level@reference}%
+ \csdimdef{gtr@per@#1@dim}{\wd\csuse{gtr@per@#1@box}}%
+}
+
+\def\gtr@set@level@position@left#1{%
+ \csdimdef{gtr@per@#1@x}{\gtr@level@reference}%
+ \csdimdef{gtr@per@#1@dim}{\ht\csuse{gtr@per@#1@box}+\dp\csuse{gtr@per@#1@box}}%
+}
+
+\def\gtr@set@level@position@right#1{%
+ \csdimdef{gtr@per@#1@x}{-\gtr@level@reference}%
+ \csdimdef{gtr@per@#1@dim}{\ht\csuse{gtr@per@#1@box}+\dp\csuse{gtr@per@#1@box}}%
+}
+
+\gtrset{%
+ reset edge level shift/.code={%
+ \def\gtr@set@position@family@down##1{%
+ \csdimdef{gtr@fam@##1@pos}{\gtr@level@reference-\gtr@level@size-\csuse{gtr@fam@##1@frac}\dimexpr\gtr@level@distance}%
+ }%
+ \def\gtr@set@position@family@up##1{%
+ \csdimdef{gtr@fam@##1@pos}{-\gtr@level@reference+\gtr@level@size+\csuse{gtr@fam@##1@frac}\dimexpr\gtr@level@distance}%
+ }%
+ \let\gtr@set@position@family@left=\gtr@set@position@family@down%
+ \let\gtr@set@position@family@right=\gtr@set@position@family@up%
+ },
+ nullify edge level shift/.code={%
+ \def\gtr@set@position@family@down##1{%
+ \csdimdef{gtr@fam@##1@pos}{\gtr@level@reference-\gtr@level@size-0.5\dimexpr\gtr@level@distance}%
+ }%
+ \def\gtr@set@position@family@up##1{%
+ \csdimdef{gtr@fam@##1@pos}{-\gtr@level@reference+\gtr@level@size+0.5\dimexpr\gtr@level@distance}%
+ }%
+ \let\gtr@set@position@family@left=\gtr@set@position@family@down%
+ \let\gtr@set@position@family@right=\gtr@set@position@family@up%
+ },
+ switch edge level shift/.code={%
+ \def\gtr@set@position@family@down##1{%
+ \csdimdef{gtr@fam@##1@pos}{\gtr@level@reference-\gtr@level@size-\gtr@level@distance+\csuse{gtr@fam@##1@frac}\dimexpr\gtr@level@distance}%
+ }%
+ \def\gtr@set@position@family@up##1{%
+ \csdimdef{gtr@fam@##1@pos}{-\gtr@level@reference+\gtr@level@size+\gtr@level@distance-\csuse{gtr@fam@##1@frac}\dimexpr\gtr@level@distance}%
+ }%
+ \let\gtr@set@position@family@left=\gtr@set@position@family@down%
+ \let\gtr@set@position@family@right=\gtr@set@position@family@up%
+ },
+}
+
+\newif\ifgtr@timeflow@vertical
+
+\def\gtr@init@timeflow@down{%
+ \gtr@timeflow@verticaltrue%
+ \let\gtrNodeMinWidth=\gtr@node@minsize%
+ \let\gtrNodeMaxWidth=\gtr@node@maxsize%
+ \let\gtrNodeMinHeight=\gtr@level@size%
+ \let\gtrNodeMaxHeight=\gtr@level@size%
+}
+
+\let\gtr@init@timeflow@up=\gtr@init@timeflow@down
+
+\def\gtr@init@timeflow@left{%
+ \gtr@timeflow@verticalfalse%
+ \let\gtrNodeMinWidth=\gtr@level@size%
+ \let\gtrNodeMaxWidth=\gtr@level@size%
+ \let\gtrNodeMinHeight=\gtr@node@minsize%
+ \let\gtrNodeMaxHeight=\gtr@node@maxsize%
+}
+
+\let\gtr@init@timeflow@right=\gtr@init@timeflow@left
+
+\newif\ifgtr@ignore
+
+\gtrset{%
+ id prefix/.store in=\gtrkv@idprefix,
+ id suffix/.store in=\gtrkv@idsuffix,
+ id/.code={\xdef\gtr@gkv@id{\expandonce\gtrkv@idprefix\unexpanded{#1}\expandonce\gtrkv@idsuffix}},
+ distance/.gstore in=\gtr@gkv@distance,
+ tikz/.gstore in=\gtr@gkv@tikz,
+ pivot@@value/.gstore in=\gtr@gkv@pivot,
+ pivot@none/.style={pivot@@value=0},
+ pivot@child/.style={pivot@@value=1},
+ pivot@parent/.style={pivot@@value=2},
+ pivot@both/.style={pivot@@value=3},
+ pivot/.style={pivot@#1},
+ pivot/.default={both},
+ pivot shift/.gstore in=\gtr@gkv@pivotshift,
+ %
+ ignore/.is choice,
+ ignore/true/.code={\global\gtr@ignoretrue},
+ ignore/false/.code={\global\gtr@ignorefalse},
+ ignore/.default=true,
+ %
+ insert after node/.code n args={2}{%
+ \gtr@parse@init@hook{gtr@parse@afternode@hook}{gtr@per@\gtr@currentperson @id}%
+ \gtr@parse@appto@hook{gtr@parse@afternode@hook}{#1}{#2}%
+ },
+ insert after family/.code n args={2}{%
+ \gtr@parse@init@hook{gtr@parse@afterfamily@hook}{gtr@fam@\gtr@lastfamily @id}%
+ \gtr@parse@appto@hook{gtr@parse@afterfamily@hook}{#1}{#2}%
+ },
+ insert at begin family/.code n args={2}{%
+ \gtr@parse@init@hook{gtr@parse@beginfamily@hook}{gtr@fam@\gtr@currentfamily @id}%
+ \gtr@parse@appto@hook{gtr@parse@beginfamily@hook}{#1}{#2}%
+ },
+ insert at end family/.code n args={2}{%
+ \gtr@parse@init@hook{gtr@parse@endfamily@hook}{gtr@fam@\gtr@currentfamily @id}%
+ \gtr@parse@appto@hook{gtr@parse@endfamily@hook}{#1}{#2}%
+ },
+ %
+ family/.style={#1},
+ subtree/.style={#1},
+ node/.style={#1},
+ %
+ box/.code={\gtrkeysappto\gtrNodeBoxOptions{#1}},
+ box clear/.code={\def\gtrNodeBoxOptions{}},
+ %
+ node box/.style={node={box={#1}}},
+ family box/.style={family={box={#1}}},
+ subtree box/.style={subtree={box={#1}}},
+ %
+ label/.store in=\gtrkv@family@label,
+ family label/.style={family={label={#1}}},
+ subtree label/.style={subtree={label={#1}}},
+ label options/.store in=\gtrkv@family@label@options,
+ label database options/.store in=\gtrkv@database@label,
+ ignore family database/.style={family@database/.code=},
+ use family database/.style={family@database/.code={%
+ \gtrset{database/.cd,db@reset,##1}%
+ \gtrOptionsDatabase%
+ \gtrset{label={\gtrPrintDatabase}}%
+ }},
+ family database/.style={family={family@database={#1}}},
+ %
+ node processor/.code={\let\gtr@box@content@processor=#1},
+ processing/.is choice,%
+ %
+ time@flow/.store in=\gtrkv@timeflow,
+ timeflow/.is choice,
+ timeflow/down/.style={time@flow=down},
+ timeflow/up/.style={time@flow=up},
+ timeflow/left/.style={time@flow=left},
+ timeflow/right/.style={time@flow=right},
+ %
+ level distance/.dimstore in=\gtr@@kv@@gtr@level@distance,
+ level size/.dimstore in=\gtr@@kv@@gtr@level@size,
+ node size from/.code args={#1 to #2}{\dimdef\gtr@@kv@@gtr@node@minsize{#1}\dimdef\gtr@@kv@@gtr@node@maxsize{#2}},
+ node size/.code={\dimdef\gtr@@kv@@gtr@node@minsize{#1}\dimdef\gtr@@kv@@gtr@node@maxsize{#1}},%
+ child distance in parent graph/.dimstore in=\gtr@@kv@@gtr@dist@sibling@par,%
+ child distance in child graph/.dimstore in=\gtr@@kv@@gtr@dist@sibling@chi,%
+ parent distance in parent graph/.dimstore in=\gtr@@kv@@gtr@dist@parent@par,%
+ parent distance in child graph/.dimstore in=\gtr@@kv@@gtr@dist@parent@chi,%
+ further distance/.dimstore in=\gtr@@kv@@gtr@dist@further,%
+ %
+ child distance/.style={child distance in parent graph=#1,child distance in child graph=#1},%
+ parent distance/.style={parent distance in parent graph=#1,parent distance in child graph=#1},%
+ %
+ proband level/.store in=\gtrkv@proband@level,
+ tree offset/.store in=\gtrkv@tree@offset,
+ after parser/.code={\gappto\gtrkv@after@parser{#1}},
+ add child/.code args={#1 to #2}{\gappto\gtrkv@after@parser{\gtr@add@child@after@parser{#1}{#2}}},%
+ add parent/.code args={#1 to #2}{\gappto\gtrkv@after@parser{\gtr@add@parent@after@parser{#1}{#2}}},%
+ remove child/.code args={#1 from #2}{\gappto\gtrkv@after@parser{\gtr@remove@child@after@parser{#1}{#2}}},%
+ remove parent/.code args={#1 from #2}{\gappto\gtrkv@after@parser{\gtr@remove@parent@after@parser{#1}{#2}}},%
+ disconnect/.is choice,
+ disconnect/child/.code={%
+ \ifdefvoid{\gtr@currentperson}{}{%
+ \begingroup\edef\x{\endgroup\noexpand\gappto\noexpand\gtrkv@after@parser{%
+ \noexpand\gtr@disconnect@node@as@child{\gtr@currentperson}%
+ }}\x%
+ }%
+ },
+ disconnect/parent/.code={%
+ \ifdefvoid{\gtr@currentperson}{}{%
+ \begingroup\edef\x{\endgroup\noexpand\gappto\noexpand\gtrkv@after@parser{%
+ \noexpand\gtr@disconnect@node@as@parent{\gtr@currentperson}%
+ }}\x%
+ }%
+ },
+ disconnect/both/.code={%
+ \ifdefvoid{\gtr@currentperson}{}{%
+ \begingroup\edef\x{\endgroup\noexpand\gappto\noexpand\gtrkv@after@parser{%
+ \noexpand\gtr@disconnect@node@as@child{\gtr@currentperson}%
+ \noexpand\gtr@disconnect@node@as@parent{\gtr@currentperson}%
+ }}\x%
+ }%
+ },
+ disconnect/.default=both,
+ %
+ options for subtree/.code 2 args={\gtrsetoptionsforsubtree{#1}{#2}},
+ options for family/.code 2 args={\gtrsetoptionsforfamily{#1}{#2}},
+ options for node/.code 2 args={\gtrsetoptionsfornode{#1}{#2}},
+ %
+ ignore subtree/.code={\gtrignoresubtree{#1}},
+ ignore node/.code={\gtrignorenode{#1}},
+ ignore level/.code={%
+ \ifnum#1>0%
+ \gtrset{level #1/.style={node=ignore}}%
+ \edef\gtrtemp{\the\numexpr#1+1\relax}%
+ \gtrset{level \gtrtemp/.style=ignore}%
+ \else\ifnum#1<0%
+ \gtrset{level #1/.style={ignore,node=ignore}}%
+ \fi\fi%
+ },
+ %
+ edges/.code={\gtredgeset{#1}},
+ family edges/.style={family={edges={#1}}},
+ edges for family/.style 2 args={options for family={#1}{edges={#2}}},
+ subtree edges/.style={subtree={edges={#1}}},
+ edges for subtree/.style 2 args={options for subtree={#1}{edges={#2}}},
+ %
+ tikzpicture/.store in=\gtrkv@tikzpicture,
+ after tree/.code={\appto\gtrkv@after@tree{#1}},
+ tikzset/.code={\def\gtrkv@tikzset{\tikzset{#1}}},
+ tcbset/.code={\def\gtrkv@tcbset{\tcbset{#1}}},
+ %
+ extra edges/.code={\listadd{\gtr@extra@edges@app}{#1}},
+ extra edges prepend/.code={\listadd{\gtr@extra@edges@pre}{#1}},
+ family extra edges/.style n args={3}{family={extra edges={#1}{#2}{#3}}},
+ family extra edges prepend/.style n args={3}{family={extra edges prepend={#1}{#2}{#3}}},
+ extra edges for family/.style n args={4}{options for family={#1}{extra edges={#2}{#3}{#4}}},
+ extra edges prepend for family/.style n args={4}{options for family={#1}{extra edges prepend={#2}{#3}{#4}}},
+ extra edges for families/.style 2 args={%
+ x/.style n args={3}{extra edges for family={##1}{##2}{##3}{#2}},%
+ #1},
+ extra edges prepend for families/.style 2 args={%
+ x/.style n args={3}{extra edges prepend for family={##1}{##2}{##3}{#2}},%
+ #1},
+ %
+ edges@shift@down/.style={family edges={yshift=#1}},
+ edges@shift@up/.style={family edges={yshift=-#1}},
+ edges@shift@left/.style={family edges={xshift=#1}},
+ edges@shift@right/.style={family edges={xshift=-#1}},
+ edges shift/.style={edges@shift@\gtr@timeflow={#1}},
+ edges up/.style={edges shift=\gtr@level@distance/3},
+ edges down/.style={edges shift=-\gtr@level@distance/3},
+ edges up by/.style args={#1 of #2}{edges shift=#1\dimexpr\gtr@level@distance/#2},
+ edges down by/.style args={#1 of #2}{edges shift=-#1\dimexpr\gtr@level@distance/#2},
+ %
+ phantom*/.style={subtree={processing=tcolorbox,deletion content interpreter,edges=none,
+ box={empty,notitle,no underlay,no overlay,no shadow,no borderline,code={\ifstrempty{#1}{}{%
+ \ifgtr@timeflow@vertical\tcbset{width=#1}\else\tcbset{height=#1}\fi%
+ }}}}},
+ phantom*/.default=,
+ phantom/.style={phantom*={#1},subtree=disconnect},
+ phantom/.default=,
+}
+
+\pgfkeys{/gtr/edge/.is family}
+\def\gtredgeset{\pgfqkeys{/gtr/edge}}
+
+\gtredgeset{
+ edge@mode/.store in=\gtrkv@edgemode,
+ perpendicular/.style={edge@mode=perpendicular},
+ rounded@arc/.store in=\gtrkv@edge@arc,
+ rounded/.style={edge@mode=rounded,rounded@arc={#1}},
+ rounded/.default=6pt,
+ swing@control/.store in=\gtrkv@edge@swingcontrol,
+ swing/.style={edge@mode=swing,swing@control={#1}},
+ swing/.default=12pt,
+ mesh@options/.store in=\gtrkv@edge@meshoptions,
+ mesh/.style={edge@mode=mesh,mesh@options={#1}},
+ mesh/.default=,
+ custom/.code n args={4}{%
+ \let\gtr@edge@custom@down@macro=#1%
+ \let\gtr@edge@custom@up@macro=#2%
+ \let\gtr@edge@custom@left@macro=#3%
+ \let\gtr@edge@custom@right@macro=#4%
+ \gtredgeset{edge@mode=custom}%
+ },
+ none/.style={custom={\gtr@edge@custom@none@macro}{\gtr@edge@custom@none@macro}{\gtr@edge@custom@none@macro}{\gtr@edge@custom@none@macro}},
+ foreground/.style={gtr@edge@foreground/.style={line width=1pt,draw=green!25!black,#1}},
+ background/.style={gtr@edge@background/.style={line width=1.75pt,draw=green!15!white,#1}},
+ no foreground/.style={gtr@edge@foreground/.style={draw=none,fill=none}},
+ no background/.style={gtr@edge@background/.style={draw=none,fill=none}},
+ anchoring/.is choice,
+ anchoring/periphery/.code={%
+ \def\gtrkv@edge@anchor@vert@A{north}%
+ \def\gtrkv@edge@anchor@vert@B{south}%
+ \def\gtrkv@edge@anchor@hori@A{east}%
+ \def\gtrkv@edge@anchor@hori@B{west}%
+ },
+ anchoring/center/.code={%
+ \def\gtrkv@edge@anchor@vert@A{center}%
+ \def\gtrkv@edge@anchor@vert@B{center}%
+ \def\gtrkv@edge@anchor@hori@A{center}%
+ \def\gtrkv@edge@anchor@hori@B{center}%
+ },
+ hide single leg/.is choice,
+ hide single leg/true/.code={\def\gtrkv@edge@noleg{1}},
+ hide single leg/false/.code={\def\gtrkv@edge@noleg{0}},
+ hide single leg/.default=true,
+ xshift/.store in=\gtrkv@edge@core@xshift,
+ yshift/.store in=\gtrkv@edge@core@yshift,
+}
+
+\def\gtr@adjust@position#1 #2 of #3 distance #4 shift #5 #6\@nil{%
+ \gappto\gtrkv@after@parser{\gtr@adjust{#1}{#2}{#3}{#4}{#5}}%
+}
+
+\def\gtr@adjust@node@right#1#2#3#4{\gappto\gtrkv@after@parser{\gtr@adjust{#1}{right}{#2.east}{#3}{#4}}}
+\def\gtr@adjust@node@left#1#2#3#4{\gappto\gtrkv@after@parser{\gtr@adjust{#1}{left}{#2.west}{#3}{#4}}}
+\def\gtr@adjust@node@above#1#2#3#4{\gappto\gtrkv@after@parser{\gtr@adjust{#1}{above}{#2.north}{#3}{#4}}}
+\def\gtr@adjust@node@below#1#2#3#4{\gappto\gtrkv@after@parser{\gtr@adjust{#1}{below}{#2.south}{#3}{#4}}}
+
+\def\gtr@adjust@node#1 #2 of #3 distance #4 shift #5 #6\@nil{%
+ \csname gtr@adjust@node@#2\endcsname{#1}{#3}{#4}{#5}%
+}
+
+\gtrset{
+ adjust position/.code={\gtr@adjust@position#1 shift 0mm \@nil},%
+ adjust node/.code={\gtr@adjust@node#1 shift 0mm \@nil},%
+ set position/.code args={#1 at #2}{\gappto\gtrkv@after@parser{\gtr@setposition{#1}{#2}}},%
+}
+
+\gtrset{%
+ turn/.is choice,
+ turn/.default=right,
+ turn/right/.style={box={rotate=90,gtrNodeDimensionsLandscape}},
+ turn/left/.style={box={rotate=270,gtrNodeDimensionsLandscape}},
+ turn/off/.style={box={rotate=0,gtrNodeDimensions}},
+ turn/upsidedown/.style={box={rotate=180,gtrNodeDimensions}},
+ %
+ male/.style={box={male}},
+ female/.style={box={female}},
+ neuter/.style={box={neuter}},
+}
+
+\gtrset{%
+ reset/.style={%
+ reset edge level shift,
+ id prefix=,
+ id suffix=,
+ timeflow=down,
+ level distance=5mm,
+ level size=3.5cm,
+ node size=2.5cm,
+ proband level=0,
+ tree offset=0pt,
+ level/.style=,
+ box clear,
+ processing=fit,
+ edges={perpendicular,foreground=,background=,anchoring=periphery,hide single leg,xshift=0pt,yshift=0pt},
+ child distance in parent graph=1mm,%
+ child distance in child graph=2mm,%
+ parent distance in parent graph=2mm,%
+ parent distance in child graph=1mm,%
+ further distance=3mm,%
+ tikzpicture=,code={\def\gtrkv@tikzset{}\def\gtrkv@tcbset{}},%
+ ignore family database,
+ label options=,
+ label database options=,
+ no content interpreter,
+ },
+ reset
+}