texlive[55597] Master/texmf-dist: genealogytree (19jun20)

commits+karl at tug.org commits+karl at tug.org
Fri Jun 19 22:39:12 CEST 2020


Revision: 55597
          http://tug.org/svn/texlive?view=revision&revision=55597
Author:   karl
Date:     2020-06-19 22:39:11 +0200 (Fri, 19 Jun 2020)
Log Message:
-----------
genealogytree (19jun20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/genealogytree/README
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-1.pdf
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-2.pdf
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-3.pdf
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-languages.pdf
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree.doc.sources.zip
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree.pdf
    trunk/Master/texmf-dist/tex/latex/genealogytree/genealogytree.sty
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.contour.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.drawing.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.node.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.options.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.parser.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.processing.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.symbols.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.danish.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.dutch.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.english.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.french.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.german.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.italian.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.spanish.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.swedish.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.debug.code.tex
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.templates.code.tex

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-4.pdf
    trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.fanchart.code.tex

Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/genealogytree/README	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/doc/latex/genealogytree/README	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,4 +1,4 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %%
 %% -------------------------------------------------------------------------------------------
 %% Copyright (c) 2013-2017 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>

Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-3.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-4.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-4.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-4.pdf	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-4.pdf	2020-06-19 20:39:11 UTC (rev 55597)

Property changes on: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-example-4.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree-languages.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree.doc.sources.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/genealogytree/genealogytree.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/genealogytree.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/genealogytree.sty	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/genealogytree.sty	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% genealogytree.sty: genealogy trees (graphs)
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -18,10 +18,12 @@
 %% This work consists of all files listed in README
 %%
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{genealogytree}[2019/04/08 version 1.32 genealogy trees]
-\def\gtr at version{1.32}
+\ProvidesPackage{genealogytree}[2020/06/19 version 2.00 genealogy trees]
+\def\gtr at version{2.00}
 
-\RequirePackage{tcolorbox}[2018/03/22]
+\RequirePackage{expl3}[2020/02/25]
+\RequirePackage{xparse}
+\RequirePackage{tcolorbox}[2020/04/28]
 
 \tcbuselibrary{skins,fitting,external}
 \usetikzlibrary{arrows.meta}
@@ -137,8 +139,9 @@
 
 \gtr at add@library{debug}{gtrlib.debug.code.tex}
 \gtr at add@library{templates}{gtrlib.templates.code.tex}
+\gtr at add@library{fanchart}{gtrlib.fanchart.code.tex}
 
-\gtr at add@library at style{all}{debug,templates}
+\gtr at add@library at style{all}{debug,templates,fanchart}
 
 \ProcessOptions*
 

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.contour.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.contour.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.contour.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.contour.code.tex: Contours
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 %%%%%%%%%%%%%%%%%%%%%%%
 %% Contour

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.drawing.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.drawing.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.drawing.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.drawing.code.tex: Drawing
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,9 +17,114 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 %%%%%%%%%%%%%%%%%%%%%%%
+%% Auxiliary Tools
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\ExplSyntaxOn
+
+\cs_new:Npn \__getree_autosize_box:Nnn #1#2#3
+  {
+    \fp_set:Nn \l_tmpa_fp {#2}
+    \fp_set:Nn \l_tmpb_fp {#3}
+    \bool_if:nTF { \fp_compare_p:n { \l_tmpa_fp > 0 } && \fp_compare_p:n { \l_tmpa_fp < \maxdimen } }
+      {
+        \bool_if:nTF { \fp_compare_p:n { \l_tmpb_fp > 0 } && \fp_compare_p:n { \l_tmpb_fp < \maxdimen } }
+          {
+            \box_autosize_to_wd_and_ht_plus_dp:Nnn #1 {\fp_to_dim:N\l_tmpa_fp} {\fp_to_dim:N\l_tmpb_fp}
+          }
+          {
+            \box_resize_to_wd:Nn #1 {\fp_to_dim:N\l_tmpa_fp}
+          }
+      }
+      {
+        \bool_if:nT { \fp_compare_p:n { \l_tmpb_fp > 0 } && \fp_compare_p:n { \l_tmpb_fp < \maxdimen } }
+          {
+            \box_resize_to_ht_plus_dp:Nn #1 {\fp_to_dim:N\l_tmpb_fp}
+          }
+      }
+  }
+
+
+\cs_new:Npn \__getree_autosize_box_shrink:Nnn #1#2#3
+  {
+    \fp_set:Nn \l_tmpa_fp {#2}
+    \fp_set:Nn \l_tmpb_fp {#3}
+    \bool_if:nTF { \fp_compare_p:n { \l_tmpa_fp > 0 } && \fp_compare_p:n { \l_tmpa_fp < \maxdimen } }
+      {
+        \bool_if:nTF { \fp_compare_p:n { \l_tmpb_fp > 0 } && \fp_compare_p:n { \l_tmpb_fp < \maxdimen } }
+          {
+            \bool_if:nT { \fp_compare_p:n { \l_tmpa_fp < \box_wd:N #1 } || \fp_compare_p:n { \l_tmpb_fp < \box_ht:N #1 + \box_dp:N #1 } }
+              {
+                \box_autosize_to_wd_and_ht_plus_dp:Nnn #1 {\fp_to_dim:N\l_tmpa_fp} {\fp_to_dim:N\l_tmpb_fp}
+              }
+          }
+          {
+            \bool_if:nT { \fp_compare_p:n { \l_tmpa_fp < \box_wd:N #1 } }
+              {
+                \box_resize_to_wd:Nn #1 {\fp_to_dim:N\l_tmpa_fp}
+              }
+          }
+      }
+      {
+        \bool_if:nT { \fp_compare_p:n { \l_tmpb_fp > 0 } && \fp_compare_p:n { \l_tmpb_fp < \maxdimen } }
+          {
+            \bool_if:nT { \fp_compare_p:n { \l_tmpb_fp < \box_ht:N #1 + \box_dp:N #1 } }
+              {
+                \box_resize_to_ht_plus_dp:Nn #1 {\fp_to_dim:N\l_tmpb_fp}
+              }
+          }
+      }
+  }
+
+
+\NewDocumentCommand \gtrautosizebox { smmm }
+  {
+    \hbox_set:Nn \l_tmpa_box {#4}
+      \IfBooleanTF {#1}
+        {
+          \__getree_autosize_box_shrink:Nnn \l_tmpa_box {#2} {#3}
+        }
+        {
+          \__getree_autosize_box:Nnn \l_tmpa_box {#2} {#3}
+        }
+    \hbox_unpack_drop:N \l_tmpa_box
+  }
+
+
+\NewDocumentEnvironment { autosizetikzpicture } { O{} m m +b }
+  {
+    \hbox_set:Nn \l_tmpa_box
+      {
+        \begin{tikzpicture}[#1]
+        #4
+        \end{tikzpicture}
+      }
+    \__getree_autosize_box:Nnn \l_tmpa_box {#2} {#3}
+    \hbox_unpack_drop:N \l_tmpa_box
+  }{}
+
+
+\NewDocumentEnvironment { autosizetikzpicture* } { O{} m m +b }
+  {
+    \hbox_set:Nn \l_tmpa_box
+      {
+        \begin{tikzpicture}[#1]
+        #4
+        \end{tikzpicture}
+      }
+    \__getree_autosize_box_shrink:Nnn \l_tmpa_box {#2} {#3}
+    \hbox_unpack_drop:N \l_tmpa_box
+  }{}
+
+
+\ExplSyntaxOff
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
 %% Drawing
 %%%%%%%%%%%%%%%%%%%%%%%
 
@@ -49,7 +154,6 @@
         Alternatively, use genealogypicture (see documentation).}%
   \fi%
   \gtr at reset@before at parser%
-  \tcb at layer@pushup%
   \gtr at parsegraph[#1]{#2}%
   \gtrkv at after@parser%
   %
@@ -461,6 +565,7 @@
     \gtrset{%
       use family database,
       database format=marriage,
+      list separators={}{, }{}{},
       code={\pgfkeysalsofrom{\gtrkv at database@label}},
     }%
     \gtr at forall@families{\gtr at draw@family}%

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.node.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.node.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.node.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.node.code.tex: Node Boxes
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 %%%%%%%%%%%%%%
 % Processors %
@@ -199,16 +199,22 @@
   \x%
 }
 
+\gtr at db@new at store{age}
+\gtr at db@new at store{comment}
+\gtr at db@new at store{imageopt}
+\gtr at db@new at store{kekule}
 \gtr at db@new at store{name}
-\gtr at db@new at store{shortname}
-\gtr at db@new at store{comment}
 \gtr at db@new at store{profession}
+\gtr at db@new at store{relation}
+\gtr at db@new at store{relationship}
 \gtr at db@new at store{sex}
+\gtr at db@new at store{shortname}
 \gtr at db@new at store{uuid}
-\gtr at db@new at store{kekule}
-\gtr at db@new at store{relationship}
-\gtr at db@new at store{imageopt}
 
+\pgfkeys{/gtr/database/relation/.append code=\xdef\gtr at flag@node at r{#1}}
+\pgfkeys{/gtr/database/sex/.append code=\xdef\gtr at flag@node at s{#1}}
+
+
 \def\gtr at db@new at event@store#1{%
   \begingroup\edef\x{\endgroup\noexpand\gtrset{%
     database/#1+/.code n args={3}{%
@@ -237,6 +243,10 @@
   neuter/.style={sex=neuter},
   viewport/.style={imageopt={viewport=#1,clip}},
   db at reset/.style={name=,shortname=,sex=neuter},
+  ancestor/.style={relation=ancestor},
+  descendant/.style={relation=descendant},
+  sibling/.style={relation=sibling},
+  unrelated/.style={relation=unrelated},
 }
 
 \tcbset{%
@@ -613,8 +623,12 @@
 
 
 %%%%%%%%%%%%%%%%%%%%%%
-% Comment, Profession and Places %
+% Age, Comment, Profession and Places %
 
+\def\gtrifagedefined#1#2{%
+  \ifdefvoid{\gtrDBage}{#2}{#1}%
+}
+
 \def\gtrifcommentdefined#1#2{%
   \ifdefvoid{\gtrDBcomment}{#2}{#1}%
 }
@@ -1276,6 +1290,7 @@
   event code/.code={\def\gtrPrintEvent##1{#1}},
   comment code/.code={\def\gtrPrintComment{#1}},
   profession code/.code={\def\gtrPrintProfession{#1}},
+  age code/.code={\def\gtrPrintAge{#1}},
   date format/.is choice,
   calendar print/.is choice,
   calendar print/all/.code={\let\gtr at print@date at single@calendar\gtr at print@date at single@calendar at all},
@@ -1300,6 +1315,7 @@
   calendar print=all but AD,
   event text={}{~}{ }{},
   event format=prefix date place,
+  age code={[\gtrDBage]},
   comment code={\hspace{0pt}{\itshape\gtrDBcomment}},
   profession code={\hspace{0pt}{\itshape\gtrDBprofession}},
 }

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.options.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.options.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.options.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.options.code.tex: Options
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 %%%%%%%%%%%%%%%%%%%%%%%
 %% General handling
@@ -242,6 +242,17 @@
     \gtr at parse@init at hook{gtr at parse@endfamily at hook}{gtr at fam@\gtr at currentfamily @id}%
     \gtr at parse@appto at hook{gtr at parse@endfamily at hook}{#1}{#2}%
   },
+  insert for childless families level limit/.store in=\gtr at childlesschild@levellimit,
+  insert for childless families/.code={%
+    \ifblank{#1}%
+      {\def\gtr at parse@childlesschild at hook{}}%
+      {\long\def\gtr at parse@childlesschild at hook{%
+        \ifnum\gtr at c@level>\gtr at childlesschild@levellimit\relax%
+          \ifcsundef{gtr at fam@\gtr at currentfamily @patchi}{\gtr at parse@graph #1x}{}%
+        \fi%
+      }}%
+  },
+  insert phantom for childless families/.style={insert for childless families={c[phantom]{}}},
   %
   family/.style={#1},
   subtree/.style={#1},
@@ -329,14 +340,15 @@
   ignore subtree/.code={\gtrignoresubtree{#1}},
   ignore node/.code={\gtrignorenode{#1}},
   ignore level/.code={%
-    \ifnum#1>0%
+    \ifnum#1>0\relax%
       \gtrset{level #1/.style={node=ignore}}%
       \edef\gtrtemp{\the\numexpr#1+1\relax}%
       \gtrset{level \gtrtemp/.style=ignore}%
-    \else\ifnum#1<0%
+    \else\ifnum#1<0\relax%
       \gtrset{level #1/.style={ignore,node=ignore}}%
     \fi\fi%
   },
+  ignore parent childs/.code={\let\gtr at parent@@c\gtr at parent@@c at ignore},
   %
   edges/.code={\gtredgeset{#1}},
   family edges/.style={family={edges={#1}}},
@@ -379,6 +391,43 @@
   phantom*/.default=,
   phantom/.style={phantom*={#1},subtree=disconnect},
   phantom/.default=,
+  complemented phantom/.style={complemented/.style={phantom}},
+  autofill parents male female*/.code={%
+    \def\gtr at complementparents@levellimit{#1}%
+    \let\gtr at parse@complementparents at hook\gtr at parse@complementparents at malefemale%
+    \let\gtr at parent@@p\gtr at parent@@p at malefemale%
+  },
+  autofill parents male female*/.default=5,
+  autofill parents male female/.style={%
+    autofill parents male female*={#1},
+    ignore level={\the\numexpr#1+1\relax},
+  },
+  autofill parents male female/.default=5,
+  autofill parents female male*/.code={%
+    \def\gtr at complementparents@levellimit{#1}%
+    \let\gtr at parse@complementparents at hook\gtr at parse@complementparents at femalemale%
+    \let\gtr at parent@@p\gtr at parent@@p at femalemale%
+  },
+  autofill parents female male/.style={%
+    autofill parents female male*={#1},
+    ignore level={\the\numexpr#1+1\relax},
+  },
+  autofill parents female male/.default=5,
+  autofill parents unspecific*/.code={%
+    \def\gtr at complementparents@levellimit{#1}%
+    \let\gtr at parse@complementparents at hook\gtr at parse@complementparents at unspecific%
+    \let\gtr at parent@@p\gtr at parent@@p at unspecific%
+  },
+  autofill parents unspecific*/.default=5,
+  autofill parents unspecific/.code={%
+    autofill parents unspecific*={#1},
+    ignore level={\the\numexpr#1+1\relax},
+  },
+  autofill parents unspecific/.default=5,
+  autofill parents none/.code={%
+    \def\gtr at parse@complementparents at hook{}%
+    \let\gtr at parent@@p\gtr at parent@@p at normal%
+  },
 }
 
 \pgfkeys{/gtr/edge/.is family}
@@ -473,6 +522,7 @@
     proband level=0,
     tree offset=0pt,
     level/.style=,
+    complemented/.style=,
     box clear,
     processing=fit,
     edges={perpendicular,foreground=,background=,anchoring=periphery,hide single leg,xshift=0pt,yshift=0pt},
@@ -486,6 +536,9 @@
     label options=,
     label database options=,
     no content interpreter,
+    insert for childless families=,
+    insert for childless families level limit=-2147483647,
+    autofill parents none,
   },
   reset
 }

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.parser.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.parser.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.parser.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.parser.code.tex: Parser
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 %% (local) stack implementation
 \def\gtrnewstack#1{%
@@ -209,12 +209,17 @@
   \fi%
 }
 
+
 \def\gtr at pparse@c{\@ifnextchar[{\gtr at parent@@c}{\gtr at parent@@c[]}}
 \long\def\gtr at parent@@c[#1]#2{%
   \gtr at trav@@c[#1]{#2}%
   \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
 }
+\long\def\gtr at parent@@c at ignore[#1]#2{%
+  \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
+}
 
+
 \def\gtr at pparse@p{%
   \@ifnextchar a{\gtr at pparse@parent@}{\gtr at pparse@p@}}
 \def\gtr at pparse@parent@ arent{\@ifnextchar[{\gtr at parent@@parent}{\gtr at parent@@parent[]}}
@@ -223,11 +228,38 @@
   \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
 }
 \def\gtr at pparse@p@{\@ifnextchar[{\gtr at parent@@p}{\gtr at parent@@p[]}}
-\long\def\gtr at parent@@p[#1]#2{%
+
+
+\long\def\gtr at parent@@p at normal[#1]#2{%
   \gtr at trav@@p[#1]{#2}%
   \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
 }
+\long\def\gtr at parent@@p at malefemale[#1]#2{%
+  \ifnum\gtr at c@level<\gtr at complementparents@levellimit\relax%
+    \gtr at trav@@complementedparent{g[#1]{#2}p[c at mpl@m at nt@d,complemented]{male}p[c at mpl@m at nt@d,complemented]{female}}%
+  \else%
+    \gtr at trav@@p[#1]{#2}%
+  \fi%
+  \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
+}
+\long\def\gtr at parent@@p at femalemale[#1]#2{%
+  \ifnum\gtr at c@level<\gtr at complementparents@levellimit\relax%
+    \gtr at trav@@complementedparent{g[#1]{#2}p[c at mpl@m at nt@d,complemented]{female}p[c at mpl@m at nt@d,complemented]{male}}%
+  \else%
+    \gtr at trav@@p[#1]{#2}%
+  \fi%
+  \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
+}
+\long\def\gtr at parent@@p at unspecific[#1]#2{%
+  \ifnum\gtr at c@level<\gtr at complementparents@levellimit\relax%
+    \gtr at trav@@complementedparent{g[#1]{#2}p[c at mpl@m at nt@d,complemented]{}p[c at mpl@m at nt@d,complemented]{}}%
+  \else%
+    \gtr at trav@@p[#1]{#2}%
+  \fi%
+  \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}%
+}
 
+
 \def\gtr at pparse@g{\@ifnextchar[{\gtr at parent@@g}{\gtr at parent@@g[]}}
 \long\def\gtr at parent@@g[#1]#2{%
   \gtr at trav@@parent at g[#1]{#2}%
@@ -387,7 +419,7 @@
 
 \def\gtr at previous@family{%
   \let\gtr at lastfamily=\gtr at currentfamily%
-  \ifnum\gtr at famstack@size>0%
+  \ifnum\gtr at famstack@size>0\relax%
      \gtr at famstack@popto{\gtr at currentfamily}%
   \else%
      \let\gtr at currentfamily=\@undefined%
@@ -448,6 +480,7 @@
     \gtr at parse@beginfamily at hook%
     \gtr at parse@graphwithhandle{\gtr at handle@continue at parent}#2x%
     \gtr at parse@endfamily at hook%
+    \gtr at parse@complementparents at hook%
     \gtr at proc@@parent at end%
   \fi%
   \gtr at previous@family%
@@ -455,6 +488,23 @@
   \gtr at parse@afterfamily at hook%
 }
 
+\long\def\gtr at trav@@complementedparent#1{%
+  \gtr at up@level at push%
+  \gtr at next@family%
+  \gtr at proc@@parent at begin{}%
+  \ifgtr at ignore%
+    \advance\gtr at c@family -1\relax%
+  \else%
+    \gtr at parse@beginfamily at hook%
+    \gtr at parse@graph #1x%
+    \gtr at parse@endfamily at hook%
+    \gtr at proc@@parent at end%
+  \fi%
+  \gtr at previous@family%
+  \gtr at down@level at pop%
+  \gtr at parse@afterfamily at hook%
+}
+
 \long\def\gtr at trav@@child[#1]#2{%
   \gtr at down@level at push%
   \gtr at next@family%
@@ -465,6 +515,7 @@
     \gtr at parse@beginfamily at hook%
     \gtr at parse@graphwithhandle{\gtr at handle@continue at child}#2x%
     \gtr at parse@endfamily at hook%
+    \gtr at parse@childlesschild at hook%
     \gtr at proc@@child at end%
   \fi%
   \gtr at previous@family%
@@ -512,7 +563,28 @@
     #3%
   \fi%
 }
+% \long\def\gtr at trav@@add at node@malefemale#1#2#3{%
+  % \gdef\gtr at gtrav@mark{m}%
+  % \gtr at proc@add at node{#1}{#2}%
+  % \ifgtr at ignore%
+    % \advance\gtr at c@pid -1\relax%
+  % \else%
+    % \csedef{gtr at per@\gtr at currentperson @mark}{\gtr at gtrav@mark}%
+    % #3%
+  % \fi%
+% }
+% \long\def\gtr at trav@@add at node@femalemale#1#2#3{%
+  % \gdef\gtr at gtrav@mark{f}%
+  % \gtr at proc@add at node{#1}{#2}%
+  % \ifgtr at ignore%
+    % \advance\gtr at c@pid -1\relax%
+  % \else%
+    % \csedef{gtr at per@\gtr at currentperson @mark}{\gtr at gtrav@mark}%
+    % #3%
+  % \fi%
+% }
 
+
 \long\def\gtr at trav@@parent at g[#1]#2{%
   \gtr at down@level at push%
   \gtr at next@person%
@@ -595,6 +667,7 @@
   \gtr at parse@afternode at hook%
 }
 
+
 %%%%%%%%%%%%%%%%%%%%%%%
 %% Hooks
 %%%%%%%%%%%%%%%%%%%%%%%
@@ -615,7 +688,122 @@
   }}\x%
 }
 
+
 %%%%%%%%%%%%%%%%%%%%%%%
+%% Parent Autofill
+%%%%%%%%%%%%%%%%%%%%%%%
+
+% precondition: list with exact 2 parents
+\def\gtr at parse@toggle at parents{%
+  \letcs\gtr at currentparentlist{gtr at fam@\gtr at currentfamily @par}%
+  \def\dodo##1{%
+    \def\gtr at tempB{##1}%
+  }%
+  \def\do##1{%
+    \def\gtr at tempA{##1}%
+    \let\do\dodo%
+  }%
+  \dolistloop{\gtr at currentparentlist}%
+  \csundef{gtr at fam@\gtr at currentfamily @par}%
+  \listcseadd{gtr at fam@\gtr at currentfamily @par}{\gtr at tempB}%
+  \listcseadd{gtr at fam@\gtr at currentfamily @par}{\gtr at tempA}%
+  \letcs\gtr at currentparentlist{gtr at fam@\gtr at currentfamily @par}%
+}
+
+\def\gtr at parse@complementparents at malefemale{%
+  \ifnum\gtr at c@level>\gtr at complementparents@levellimit\relax%
+  \else%
+    \ifcsdef{gtr at fam@\gtr at currentfamily @par}%
+    {%
+      \def\dodo##1{%
+        \let\gtr at parse@do at complementparents\@secondoftwo%
+      }%
+      \def\do##1{%
+        \let\gtr at parse@do at complementparents\@firstoftwo%
+        \letcs\gtr at temp{gtr at per@##1 at flag@s}%
+        \let\do\dodo%
+      }%
+      \dolistcsloop{gtr at fam@\gtr at currentfamily @par}%
+      \gtr at parse@do at complementparents%
+      {%
+        \ifdefstring{\gtr at temp}{female}%
+        {
+          \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{male}x
+          \gtr at parse@toggle at parents%
+        }%
+        {
+          \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{female}x
+        }%
+      }{%
+        \ifdefstring{\gtr at temp}{female}{\gtr at parse@toggle at parents}{}%
+      }%
+    }%
+    {%
+      \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{male}p[c at mpl@m at nt@d,complemented]{female}x
+    }%
+  \fi%
+}
+
+\def\gtr at parse@complementparents at femalemale{%
+  \ifnum\gtr at c@level>\gtr at complementparents@levellimit\relax%
+  \else%
+    \ifcsdef{gtr at fam@\gtr at currentfamily @par}%
+    {%
+      \def\dodo##1{%
+        \let\gtr at parse@do at complementparents\@secondoftwo%
+      }%
+      \def\do##1{%
+        \let\gtr at parse@do at complementparents\@firstoftwo%
+        \letcs\gtr at temp{gtr at per@##1 at flag@s}%
+        \let\do\dodo%
+      }%
+      \dolistcsloop{gtr at fam@\gtr at currentfamily @par}%
+      \gtr at parse@do at complementparents%
+      {%
+        \ifdefstring{\gtr at temp}{male}%
+        {
+          \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{female}x
+          \gtr at parse@toggle at parents%
+        }%
+        {
+          \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{male}x
+        }%
+      }{%
+        \ifdefstring{\gtr at temp}{male}{\gtr at parse@toggle at parents}{}%
+      }%
+    }%
+    {%
+      \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{female}p[c at mpl@m at nt@d,complemented]{male}x
+    }%
+  \fi%
+}
+
+\def\gtr at parse@complementparents at unspecific{%
+  \ifnum\gtr at c@level>\gtr at complementparents@levellimit\relax%
+  \else%
+    \ifcsdef{gtr at fam@\gtr at currentfamily @par}%
+    {%
+      \def\dodo##1{%
+        \let\gtr at parse@do at complementparents\@secondoftwo%
+      }%
+      \def\do##1{%
+        \let\gtr at parse@do at complementparents\@firstoftwo%
+        \let\do\dodo%
+      }%
+      \dolistcsloop{gtr at fam@\gtr at currentfamily @par}%
+      \gtr at parse@do at complementparents%
+      {%
+        \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{}x
+      }{}%
+    }%
+    {%
+      \gtr at parse@graph p[c at mpl@m at nt@d,complemented]{}p[c at mpl@m at nt@d,complemented]{}x
+    }%
+  \fi%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
 %% Information
 %%%%%%%%%%%%%%%%%%%%%%%
 

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.processing.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.processing.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.processing.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.processing.code.tex: Processing
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 %%%%%%%%%%%%%%%%%%%%%%%
 %% Processing - common
 %%%%%%%%%%%%%%%%%%%%%%%
@@ -72,11 +72,7 @@
     }%
     %
     \global\gtr at ignorefalse%
-    \gtrset{level=\number\gtr at c@level}%
-    \pgfkeysifdefined{/gtr/level \number\gtr at c@level/. at cmd}{%
-      \gtrset{level \number\gtr at c@level}%
-      }{%
-      }%
+    \gtrset{level=\number\gtr at c@level,level \number\gtr at c@level/.try}%
     \ifgtr at ignore%
       \global\def\gtr at gkv@opt at ignore@level{ignore}%
     \else%
@@ -119,7 +115,7 @@
 
 
 \def\gtr at proc@@set at enc@family{%
-  \ifnum\gtr at famstack@size>0%
+  \ifnum\gtr at famstack@size>0\relax%
     \gtr at famstack@peekto{\gtr at encfamily}%
     \csedef{gtr at fam@\gtr at currentfamily @fam}{\gtr at encfamily}%
   \fi%
@@ -236,7 +232,7 @@
 
 \def\gtr at proc@@parent at end{%
   \ifcsname gtr at fam@\gtr at currentfamily @g\endcsname%
-  \else\gtr at error{No g-node in parent family (\gtr at currentfamily)}{Every family need a g-node}%
+  \else\gtr at error{No g-node in parent family (\gtr at currentfamily)}{Every family needs a g-node}%
   \fi%
   \gtr at proc@pivot at reset%
   \csdef{gtr at fam@\gtr at currentfamily @frac}{0.5}%
@@ -453,7 +449,7 @@
   \gtr at add@child{\gtr at currentperson}{\gtr at currentfamily}%
   \gtr at add@gnode{\gtr at currentperson}{\gtr at currentfamily}%
   \gtr at add@family{\gtr at currentperson}{\gtr at currentfamily}%
-  \ifnum\gtr at famstack@size>0%
+  \ifnum\gtr at famstack@size>0\relax%
     \gtr at famstack@peekto{\gtr at childfamily}%
     \gtr at add@parent{\gtr at currentperson}{\gtr at childfamily}%
   \fi%
@@ -463,7 +459,7 @@
   \gtr at add@parent{\gtr at currentperson}{\gtr at currentfamily}%
   \gtr at add@gnode{\gtr at currentperson}{\gtr at currentfamily}%
   \gtr at add@family{\gtr at currentperson}{\gtr at currentfamily}%
-  \ifnum\gtr at famstack@size>0%
+  \ifnum\gtr at famstack@size>0\relax%
     \gtr at famstack@peekto{\gtr at parentfamily}%
     \gtr at add@child{\gtr at currentperson}{\gtr at parentfamily}%
   \fi%
@@ -485,12 +481,13 @@
   linked at family@options/c/.code={},
   linked at family@options/pc/.code={},
   linked at family@options/gc/.code={},
+  c at mpl@m at nt@d/.code={\gdef\gtr at flag@node at c{true}},
 }
 
 \def\gtr at linked@family at options@p{}
 \def\gtr at linked@family at options@c{}
 \def\gtr at linked@family at options@g{%
-  \ifnum\gtr at famstack@size>0%
+  \ifnum\gtr at famstack@size>0\relax%
     \gtr at famstack@peekto{\gtr at linkedfamily}%
     \gtr at cs@keysalsofrom{gtr at fam@\gtr at linkedfamily @opt at family}%
   \fi%
@@ -505,6 +502,9 @@
     \begingroup%
     \begin{pgfinterruptpicture}%
       \global\gtr at ignorefalse%
+      \gdef\gtr at flag@node at c{false}%
+      \gdef\gtr at flag@node at r{unrelated}%
+      \gdef\gtr at flag@node at s{neuter}%
       \gtrset{id=,distance=-1sp,pivot=none,tikz=,
         code={%
           \gtr at cs@keysalsofrom{gtr at fam@\gtr at currentfamily @opt at subtree}%
@@ -523,6 +523,9 @@
   }%
   \unless\ifgtr at ignore%
     \csedef{gtr at per@\gtr at currentperson @id}{\gtr at gkv@id}%
+    \csedef{gtr at per@\gtr at currentperson @flag at c}{\gtr at flag@node at c}%
+    \csedef{gtr at per@\gtr at currentperson @flag at r}{\gtr at flag@node at r}%
+    \csedef{gtr at per@\gtr at currentperson @flag at s}{\gtr at flag@node at s}%
     \ifdim\gtr at gkv@distance>-1sp\relax%
       \csedef{gtr at per@\gtr at currentperson @distance}{\gtr at gkv@distance}%
     \fi%

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.symbols.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.symbols.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrcore.symbols.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrcore.symbols.code.tex: Symbols
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 %%%%%%%%%%%%%%%%%%%%%%%
 %% Symbols

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.danish.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.danish.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.danish.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.danish.code.tex: Danish language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% Translation by Mikkel Eide Eriksen <mikkel dot eriksen at gmail dot com>
 %% -------------------------------------------------------------------------------------------
 %%
@@ -18,7 +18,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/danish/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.dutch.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.dutch.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.dutch.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.dutch.code.tex: Dutch language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% Translation by Dirk Bosmans <onstrees at myonline be>
 %% -------------------------------------------------------------------------------------------
 %%
@@ -18,7 +18,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/dutch/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.english.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.english.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.english.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.english.code.tex: English language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/english/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.french.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.french.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.french.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.french.code.tex: French language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% Translation by Denis Bitouze <denis dot bitouze at univ-littoral fr>
 %% -------------------------------------------------------------------------------------------
 %%
@@ -18,7 +18,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/french/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.german.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.german.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.german.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.german.code.tex: German language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/german/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.italian.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.italian.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.italian.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.italian.code.tex: Italian language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% Translation by Andrea Vaccari <ing dot andrea dot vaccari at gmail com>
 %% -------------------------------------------------------------------------------------------
 %%
@@ -18,7 +18,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/italian/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.spanish.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.spanish.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.spanish.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.spanish.code.tex: Spanish language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% Translation by Francisco G. Perez Sanchez <ozo.froid at gmail dot com>
 %% -------------------------------------------------------------------------------------------
 %%
@@ -18,7 +18,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/spanish/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.swedish.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.swedish.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlang.swedish.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlang.swedish.code.tex: Swedish language
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% Translation by Per Starbaeck <per at starback.se>
 %% -------------------------------------------------------------------------------------------
 %%
@@ -18,7 +18,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \gtrset{language@/swedish/.code={%
   \gtrset{symlang/.cd,

Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.debug.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.debug.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.debug.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlib.debug.code.tex: Debugger
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 \RequirePackage{array,tabularx}
 \tcbuselibrary{breakable}

Added: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.fanchart.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.fanchart.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.fanchart.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -0,0 +1,1051 @@
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
+%% gtrlib.fanchart.code.tex: Fancharts
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2013-2020 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 at set@library at version{2.00}
+
+\ExplSyntaxOn
+
+\tl_new:N \l_getree_fanchart_minor_angle_tl
+\tl_new:N \l_getree_fanchart_major_angle_tl
+
+\tl_new:N \l_getree_fanchart_angle_a_tl
+\tl_new:N \l_getree_fanchart_angle_b_tl
+\tl_new:N \l_getree_fanchart_id_tl
+\tl_new:N \l_getree_fanchart_radius_a_tl
+\tl_new:N \l_getree_fanchart_radius_b_tl
+\tl_new:N \l_getree_fanchart_level_tl
+\tl_new:N \l_getree_fanchart_ratio_tl
+\tl_new:N \l_getree_fanchart_offset_a_tl
+\tl_new:N \l_getree_fanchart_offset_b_tl
+\tl_new:N \l_getree_fanchart_line_width_tl
+
+\bool_new:N \l__getree_fanchart_reset_bounds_bool
+
+\tl_new:N \l__getree_fanchart_recursive_action_tl
+\tl_new:N \l__getree_fanchart_tmpa_tl
+\tl_new:N \l__getree_fanchart_tmpb_tl
+\tl_new:N \l__getree_fanchart_landscape_level_tl
+
+\fp_new:N \l__getree_fanchart_angle_fp
+\fp_new:N \l__getree_fanchart_radius_fp
+\fp_new:N \l__getree_fanchart_inner_fp
+\fp_new:N \l__getree_fanchart_inner_off_fp
+\fp_new:N \l__getree_fanchart_outer_fp
+\fp_new:N \l__getree_fanchart_outer_off_fp
+\fp_new:N \l__getree_fanchart_boundary_width_fp
+\fp_new:N \l__getree_fanchart_boundary_scale_fp
+
+\fp_new:N \l__getree_fanchart_bounds_border_fp
+\fp_new:N \l__getree_fanchart_bounds_xmin_fp
+\fp_new:N \l__getree_fanchart_bounds_xmax_fp
+\fp_new:N \l__getree_fanchart_bounds_ymin_fp
+\fp_new:N \l__getree_fanchart_bounds_ymax_fp
+
+\tl_const:Nn \c_getree_fanchart_maximum_rings_tl {24}
+
+\fparray_new:Nn \g__getree_fanchart_radii_fparry     {\c_getree_fanchart_maximum_rings_tl+1}
+\fparray_new:Nn \g__getree_fanchart_distances_fparry {\c_getree_fanchart_maximum_rings_tl}
+\fparray_new:Nn \g__getree_fanchart_inner_fparry {\c_getree_fanchart_maximum_rings_tl}
+\fparray_new:Nn \g__getree_fanchart_outer_fparry {\c_getree_fanchart_maximum_rings_tl}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Core
+%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\cs_new:Npn \__getree_fanchart_segment_computation:
+  {
+    \fp_compare:nNnF {\l_getree_fanchart_major_angle_tl} > {\l_getree_fanchart_minor_angle_tl}
+      {
+        \tl_set_eq:NN \l_tmpa_tl \l_getree_fanchart_major_angle_tl
+        \tl_set_eq:NN \l_getree_fanchart_major_angle_tl \l_getree_fanchart_minor_angle_tl
+        \tl_set_eq:NN \l_getree_fanchart_minor_angle_tl \l_tmpa_tl
+      }
+    \fp_set:Nn \l__getree_fanchart_angle_fp { (\l_getree_fanchart_major_angle_tl-\l_getree_fanchart_minor_angle_tl)/2 }
+    \fp_set:Nn \l__getree_fanchart_inner_fp { \fparray_item:Nn\g__getree_fanchart_radii_fparry{1} }
+
+     \tl_set:Nn \l_tmpa_tl {\fp_to_dim:n{ sqrt(2)*\l__getree_fanchart_inner_fp }}
+    \use:x
+    {
+      \exp_not:N\pgfkeys{/gtr/level~0/.append~code={\exp_not:N\pgfkeysalso{node~size=\l_tmpa_tl,level~size=\l_tmpa_tl}}}
+    }
+    \int_step_inline:nnn {1} { \c_getree_fanchart_maximum_rings_tl-1 }
+      {
+        \fp_set:Nn \l__getree_fanchart_outer_fp { \fparray_item:Nn\g__getree_fanchart_radii_fparry{##1+1} }
+
+        \fp_set:Nn \l__getree_fanchart_inner_off_fp { \l__getree_fanchart_inner_fp + \fparray_item:Nn\g__getree_fanchart_inner_fparry{##1} }
+        \fp_set:Nn \l__getree_fanchart_outer_off_fp { \l__getree_fanchart_outer_fp - \fparray_item:Nn\g__getree_fanchart_outer_fparry{##1} }
+
+        \fp_set:Nn \l__getree_fanchart_angle_fp { \l__getree_fanchart_angle_fp/2 }
+        \fp_set:Nn \l__getree_fanchart_radius_fp { \l__getree_fanchart_inner_off_fp/\l__getree_fanchart_outer_off_fp  }
+
+        \fp_set:Nn \l_tmpb_fp { sqrt(\l__getree_fanchart_radius_fp^2+8) }
+        \fp_set:Nn \l_tmpa_fp { sqrt( 1 - ( ( \l__getree_fanchart_radius_fp+\l_tmpb_fp )/4 )^2 ) }
+
+        \fp_compare:nNnTF { \l__getree_fanchart_angle_fp<90 ? \l__getree_fanchart_radius_fp*tand(\l__getree_fanchart_angle_fp)<\l_tmpa_fp : 0 } = {0}
+          {
+            \tl_set:Nx \l_tmpa_tl {\fp_to_dim:n{ 2*\l_tmpa_fp*\l__getree_fanchart_outer_off_fp }}%  b
+            \tl_set:Nx \l_tmpb_tl {\fp_to_dim:n{ (\l_tmpb_fp-3*\l__getree_fanchart_radius_fp)/4*\l__getree_fanchart_outer_off_fp }}%  h
+            \fparray_gset:Nnn \g__getree_fanchart_distances_fparry { ##1 }{ (\l_tmpb_fp+5*\l__getree_fanchart_radius_fp)/8*\l__getree_fanchart_outer_off_fp }
+          }
+          {
+            \fp_set:Nn \l_tmpa_fp { sqrt( 1 - ( \l__getree_fanchart_radius_fp*tand(\l__getree_fanchart_angle_fp) )^2 ) }
+            \fp_set:Nn \l_tmpb_fp { cosd( \l__getree_fanchart_angle_fp/2 ) }
+            \fp_compare:nNnTF {\l_tmpa_fp} < {\l_tmpb_fp}
+              {
+                \tl_set:Nx \l_tmpa_tl {\fp_to_dim:n{ 2*\l__getree_fanchart_radius_fp*tand(\l__getree_fanchart_angle_fp)*\l__getree_fanchart_outer_off_fp }}%  b
+                \tl_set:Nx \l_tmpb_tl {\fp_to_dim:n{ (\l_tmpa_fp-\l__getree_fanchart_radius_fp)*\l__getree_fanchart_outer_off_fp }}%  h
+                \fparray_gset:Nnn \g__getree_fanchart_distances_fparry { ##1 }{ (\l_tmpa_fp+\l__getree_fanchart_radius_fp)/2*\l__getree_fanchart_outer_off_fp }
+              }
+              {
+                \tl_set:Nx \l_tmpa_tl {\fp_to_dim:n{ 2*sind(\l__getree_fanchart_angle_fp/2)*\l__getree_fanchart_outer_off_fp }}%  b
+                \tl_set:Nx \l_tmpb_tl {\fp_to_dim:n{ 1/(2*\l_tmpb_fp)*\l__getree_fanchart_outer_off_fp }}%  h
+                \fparray_gset:Nnn \g__getree_fanchart_distances_fparry { ##1 }{ (2*\l_tmpb_fp-1/(2*\l_tmpb_fp))/2*\l__getree_fanchart_outer_off_fp }
+              }
+          }
+        \int_compare:nNnTF {##1} < {\l__getree_fanchart_landscape_level_tl}
+          {
+            \use:x
+            {
+              \exp_not:N\pgfkeys{/gtr/level~##1/.append~code={\exp_not:N\pgfkeysalso{node~size=\l_tmpa_tl,level~size=\l_tmpb_tl}}}
+            }
+          }
+          {
+            \use:x
+            {
+              \exp_not:N\pgfkeys{/gtr/level~##1/.append~code={\exp_not:N\pgfkeysalso{node~size=\l_tmpb_tl,level~size=\l_tmpa_tl}}}
+            }
+          }
+        \fp_set_eq:NN \l__getree_fanchart_inner_fp \l__getree_fanchart_outer_fp
+      }
+  }
+
+
+\prg_new_conditional:Npnn \getree_fanchart_if_complemented_node: { p, TF }
+  {
+    \str_if_eq:VnTF \gtrcomplemented {true}
+    {
+      \prg_return_true:
+    }
+    {
+      \prg_return_false:
+    }
+  }
+
+
+% #1: person number
+% #2: level
+% #3: angle a
+% #4: angle b
+\cs_new:Npn \__getree_fanchart_draw_person:nnnn #1#2#3#4
+  {
+    \cs_set_nopar:Npx \gtr at currentperson {#1}
+    \cs_set_nopar:Npx \gtrDBsex {\use:c{gtr at per@\gtr at currentperson @flag at s}}
+    \cs_set_nopar:Npx \gtrDBrelation {\use:c{gtr at per@\gtr at currentperson @flag at r}}
+    \cs_set_nopar:Npx \gtrcomplemented {\use:c{gtr at per@\gtr at currentperson @flag at c}}
+    \tl_set:Nx \l_getree_fanchart_level_tl { \int_eval:n{#2} }
+    \tl_set:Nx \l_getree_fanchart_id_tl {\cs_if_exist_use:c {gtr at per@\gtr at currentperson @id}}
+
+    \int_compare:nNnTF {\l_getree_fanchart_level_tl} > {0}
+      {
+        \tl_set:Nx \l_getree_fanchart_angle_a_tl { \fp_to_decimal:n{#3} }
+        \tl_set:Nx \l_getree_fanchart_angle_b_tl { \fp_to_decimal:n{#4} }
+        \tl_set:Nx \l_getree_fanchart_ratio_tl
+          { \fp_to_decimal:n{
+            ((\l_getree_fanchart_angle_a_tl+\l_getree_fanchart_angle_b_tl)/2-\l_getree_fanchart_minor_angle_tl)/
+              (\l_getree_fanchart_major_angle_tl-\l_getree_fanchart_minor_angle_tl)
+            }
+          }
+        \tl_set:Nx \l_getree_fanchart_radius_a_tl { \fp_to_dim:n{\fparray_item:Nn\g__getree_fanchart_radii_fparry{#2}} }
+        \fp_set:Nn \l_tmpa_fp { \fparray_item:Nn\g__getree_fanchart_radii_fparry{#2+1} }
+        \fp_compare:nNnT {\l_tmpa_fp} > {\l__getree_fanchart_bounds_xmax_fp}
+          {
+            \fp_set_eq:NN \l__getree_fanchart_bounds_xmax_fp \l_tmpa_fp
+          }
+        \tl_set:Nx \l_getree_fanchart_radius_b_tl { \fp_to_dim:n{\l_tmpa_fp} }
+        \tl_set:Nx \l_getree_fanchart_offset_a_tl { \fp_to_dim:n{\fparray_item:Nn\g__getree_fanchart_inner_fparry{#2}} }
+        \tl_set:Nx \l_getree_fanchart_offset_b_tl { \fp_to_dim:n{\fparray_item:Nn\g__getree_fanchart_outer_fparry{#2}} }
+        \tl_set:Nx \l_getree_fanchart_line_width_tl
+          {
+            \fp_to_dim:n
+              {
+                min(\l__getree_fanchart_boundary_width_fp,
+                    \l_getree_fanchart_radius_a_tl*(\l_getree_fanchart_angle_b_tl-\l_getree_fanchart_angle_a_tl)*\l__getree_fanchart_boundary_scale_fp/2000)
+              }
+          }
+
+        \__getree_fanchart_segment_definition:
+        \__getree_fanchart_marker_definition:
+        \__getree_fanchart_draw_segment:
+
+        \fp_set:Nn \l__getree_fanchart_angle_fp {(\l_getree_fanchart_angle_a_tl+\l_getree_fanchart_angle_b_tl)/2}
+        \fp_set:Nn \l__getree_fanchart_radius_fp { \fparray_item:Nn\g__getree_fanchart_distances_fparry{#2} }
+
+        \int_compare:nNnTF {#2} < {\l__getree_fanchart_landscape_level_tl}
+          {
+            \__getree_fanchart_portrait_angle:nnn
+              {
+                \fp_compare:nNnTF {sind(\l__getree_fanchart_angle_fp)} < {0}
+                  {
+                    \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_angle_fp+90 }
+                  }
+                  {
+                    \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_angle_fp-90 }
+                  }
+              }
+              {
+                \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_angle_fp-90 }
+              }
+              {
+                \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_angle_fp+90 }
+              }
+          }
+          {
+            \__getree_fanchart_landscape_angle:nnn
+              {
+                \fp_compare:nNnTF {cosd(\l__getree_fanchart_angle_fp)} < {0}
+                  {
+                    \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_angle_fp-180 }
+                  }
+                  {
+                    \fp_set_eq:NN \l_tmpa_fp \l__getree_fanchart_angle_fp
+                  }
+              }
+              {
+                \fp_set_eq:NN \l_tmpa_fp \l__getree_fanchart_angle_fp
+              }
+              {
+                \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_angle_fp-180 }
+              }
+          }
+        \node[rotate=\fp_to_decimal:N\l_tmpa_fp]
+          at (\fp_to_decimal:N\l__getree_fanchart_angle_fp \c_colon_str \fp_to_dim:N\l__getree_fanchart_radius_fp)
+          {\unhbox\use:c{gtr at per@#1 at box}};
+      }
+      {
+        \tl_set:Nx \l_getree_fanchart_radius_b_tl { \fp_to_dim:n{\fparray_item:Nn\g__getree_fanchart_radii_fparry{1}} }
+        \tl_set:Nn \l_getree_fanchart_line_width_tl {\fp_to_dim:N\l__getree_fanchart_boundary_width_fp}
+        \__getree_fanchart_draw_root:
+        \node at ( 0,0 ) {\unhbox\use:c{gtr at per@#1 at box}};
+      }
+  }
+
+
+
+% #1: family number
+% #2: level
+% #3: angle a
+% #4: angle b
+\cs_new:Npn \__getree_fanchart_draw_family:nnnn #1#2#3#4
+  {
+    \gtr at set@currentfamily{#1}
+    \letcs\gtr at node{gtr at fam@\gtr at currentfamily @g}
+    \__getree_fanchart_draw_person:nnnn {\gtr at node}{#2}{#3}{#4}
+    \def\dodo##1
+    {
+      \cs_if_exist:cT {gtr at per@##1 at box}
+        {
+          \cs_if_exist:cTF {gtr at per@##1 at chiof}
+            {
+              \tl_put_right:Nx\l__getree_fanchart_recursive_action_tl
+                {
+                  \exp_not:N\__getree_fanchart_draw_family:nnnn { \use:c{gtr at per@##1 at chiof} }{ \int_eval:n{#2+1} }{ #3 }{ \l_tmpa_tl }
+                }
+            }
+            {
+              \tl_put_right:Nx\l__getree_fanchart_recursive_action_tl
+                {
+                  \exp_not:N\__getree_fanchart_draw_person:nnnn { ##1 }{ #2+1 }{ #3 }{ \l_tmpa_tl }
+                }
+            }
+        }
+    }
+    \def\do##1
+    {
+      \cs_if_exist:cT {gtr at per@##1 at box}
+        {
+          \cs_if_exist:cTF {gtr at per@##1 at chiof}
+            {
+              \tl_put_right:Nx\l__getree_fanchart_recursive_action_tl
+                {
+                  \exp_not:N\__getree_fanchart_draw_family:nnnn { \use:c{gtr at per@##1 at chiof} }{ \int_eval:n{#2+1} }{ \l_tmpa_tl }{ #4 }
+                }
+            }
+            {
+              \tl_put_right:Nx\l__getree_fanchart_recursive_action_tl
+                {
+                  \exp_not:N\__getree_fanchart_draw_person:nnnn { ##1 }{ #2+1 }{ \l_tmpa_tl }{ #4 }
+                }
+            }
+        }
+      \let\do\dodo
+    }%
+    \cs_if_exist:cT {gtr at fam@\gtr at currentfamily @par}
+      {
+        \tl_set:Nx \l_tmpa_tl { \fp_to_decimal:n { (#3+#4)/2 } }
+        \tl_clear:N\l__getree_fanchart_recursive_action_tl
+        \dolistcsloop{gtr at fam@\gtr at currentfamily @par}
+        \tl_use:N\l__getree_fanchart_recursive_action_tl
+      }
+  }
+
+
+\cs_new:Npn \__getree_fanchart_bounds_fit:n #1
+  {
+    \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_radius_fp*cosd(#1) }
+    \fp_compare:nNnTF {\l_tmpa_fp} < {\l__getree_fanchart_bounds_xmin_fp}
+      {
+        \fp_set_eq:NN \l__getree_fanchart_bounds_xmin_fp \l_tmpa_fp
+      }
+      {
+        \fp_compare:nNnT {\l_tmpa_fp} > {\l__getree_fanchart_bounds_xmax_fp}
+          {
+            \fp_set_eq:NN \l__getree_fanchart_bounds_xmax_fp \l_tmpa_fp
+          }
+      }
+    \fp_set:Nn \l_tmpa_fp { \l__getree_fanchart_radius_fp*sind(#1) }
+    \fp_compare:nNnTF {\l_tmpa_fp} < {\l__getree_fanchart_bounds_ymin_fp}
+      {
+        \fp_set_eq:NN \l__getree_fanchart_bounds_ymin_fp \l_tmpa_fp
+      }
+      {
+        \fp_compare:nNnT {\l_tmpa_fp} > {\l__getree_fanchart_bounds_ymax_fp}
+          {
+            \fp_set_eq:NN \l__getree_fanchart_bounds_ymax_fp \l_tmpa_fp
+          }
+      }
+  }
+
+
+\cs_new:Npn \__getree_fanchart_reset_bounds:
+  {
+    \fp_set_eq:NN \l__getree_fanchart_radius_fp \l__getree_fanchart_bounds_xmax_fp
+
+    \fp_set:Nn \l__getree_fanchart_bounds_xmax_fp { \fparray_item:Nn\g__getree_fanchart_radii_fparry{1} }
+    \fp_set_eq:NN \l__getree_fanchart_bounds_ymax_fp \l__getree_fanchart_bounds_xmax_fp
+    \fp_set:Nn \l__getree_fanchart_bounds_xmin_fp { -\l__getree_fanchart_bounds_xmax_fp }
+    \fp_set_eq:NN \l__getree_fanchart_bounds_ymin_fp \l__getree_fanchart_bounds_xmin_fp
+
+    \__getree_fanchart_bounds_fit:n { \l_getree_fanchart_minor_angle_tl }
+    \__getree_fanchart_bounds_fit:n { \l_getree_fanchart_major_angle_tl }
+    \fp_set:Nn \l__getree_fanchart_angle_fp { floor(\l_getree_fanchart_minor_angle_tl/90)*90+90  }
+    \fp_while_do:nNnn {\l__getree_fanchart_angle_fp} < {\l_getree_fanchart_major_angle_tl}
+      {
+        \__getree_fanchart_bounds_fit:n { \l__getree_fanchart_angle_fp }
+        \fp_set:Nn \l__getree_fanchart_angle_fp { \l__getree_fanchart_angle_fp+90  }
+      }
+
+    \pgfresetboundingbox
+    \path
+        (\fp_to_dim:n{\l__getree_fanchart_bounds_xmin_fp-\l__getree_fanchart_bounds_border_fp},
+         \fp_to_dim:n{\l__getree_fanchart_bounds_ymin_fp-\l__getree_fanchart_bounds_border_fp})
+      rectangle
+        (\fp_to_dim:n{\l__getree_fanchart_bounds_xmax_fp+\l__getree_fanchart_bounds_border_fp},
+         \fp_to_dim:n{\l__getree_fanchart_bounds_ymax_fp+\l__getree_fanchart_bounds_border_fp});
+  }
+
+
+\cs_new:Npn \__getree_fanchart:nn #1#2
+  {
+    \group_begin:
+    \cs_if_exist:NF \pgfpictureid
+      {
+        \gtr at error{\gtrfanchart\space~outside~tikzpicture~environment}
+          {\gtrfanchart\space~can~only~be~used~inside~a~tikzpicture~environment.}
+      }
+    \def\gtr at proc@@parent at end
+      {
+        \cs_if_exist:cF {gtr at fam@\gtr at currentfamily @g}
+        {
+          \gtr at error{No~g-node~in~parent~family~(\gtr at currentfamily)}{Every~family~needs~a~g-node}
+        }
+      }
+    \def\gtr at positioning{}
+    \gtrset{
+      phantom/.style={phantom*={##1},
+        code={
+          \cs_if_exist:NT \gtr at currentperson
+            {
+              \use:x
+              {
+                \exp_not:N\gappto\exp_not:N\gtrkv at after@parser{\exp_not:N\csundef{gtr at per@\gtr at currentperson @box}}
+              }
+            }
+        }
+      },
+    }
+    \gtr at reset@before at parser
+    \gtr at parsegraph
+    [
+      processing = database,
+      ignore~parent~childs,
+      box =
+      {
+        empty,
+        size   = minimal,
+        boxsep = \tcbfitdim/10,
+        middle = \tcbfitdim/5,
+        halign = center,
+        valign = center,
+        before~upper={\parskip=0.1\tcbfitdim},
+      },
+      level/.prefix~code=
+        {
+          \int_compare:nNnT {##1} > {5}
+            {
+              \pgfkeysalso{node={list~separators={\par}{~}{}{}}}
+            }
+        },
+      #1,
+      code={\__getree_fanchart_segment_computation:}
+    ]{#2}
+    \gtrkv at after@parser
+    \fp_zero:N \l__getree_fanchart_bounds_xmax_fp
+    \__getree_fanchart_draw_family:nnnn{\gtr at num@fam at first}{0}{\l_getree_fanchart_minor_angle_tl}{\l_getree_fanchart_major_angle_tl}
+    \bool_if:NT \l__getree_fanchart_reset_bounds_bool
+      {
+        \__getree_fanchart_reset_bounds:
+      }
+    \group_end:
+  }
+
+
+\NewDocumentCommand{\gtrfanchart}{ +O{} }
+  {
+    \__getree_fanchart:nn {#1}
+  }
+
+
+\NewDocumentCommand{\gtrfanchartinput}{ +O{} m }
+  {
+    \__getree_fanchart:nn {#1}{input{#2}}
+  }
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Options
+%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\cs_new:Npn \__getree_fanchart_paper_fit:nn #1#2
+  {
+    \fp_set:Nn \l_tmpa_fp {#1}
+    \fp_set:Nn \l_tmpb_fp {#2}
+    \fp_compare:nTF { \l_tmpa_fp > \l_tmpb_fp }
+      {
+        \fp_compare:nTF { \l_tmpb_fp > \l_tmpa_fp/2 }
+          {
+            \fp_set:Nn \l_tmpa_fp { 180+2*asind( 2*\l_tmpb_fp/\l_tmpa_fp - 1 ) }
+            \gtrset
+              {
+                fanchart~open~up       = \l_tmpa_fp,
+                fanchart~text~portrait = inwards
+              }
+          }
+          {
+            \gtrset
+              {
+                fanchart~open~up       = 180,
+                fanchart~text~portrait = inwards
+              }
+          }
+      }
+      {
+        \fp_compare:nTF { \l_tmpa_fp > \l_tmpb_fp/2 }
+          {
+            \fp_set:Nn \l_tmpa_fp { 180+2*asind( 2*\l_tmpa_fp/\l_tmpb_fp -1 ) }
+            \gtrset
+              {
+                fanchart~open~right     = \l_tmpa_fp,
+                fanchart~text~landscape = clockwise
+              }
+          }
+          {
+            \gtrset
+              {
+                fanchart~open~right     = 180,
+                fanchart~text~landscape = clockwise
+              }
+          }
+      }
+  }
+
+
+\gtrset{
+  fanchart~radii/.code={
+    \clist_set:Nn \l_tmpa_clist {#1}
+    \fparray_gzero:N \g__getree_fanchart_radii_fparry
+    \int_zero:N \l_tmpa_int
+    \fp_zero:N \l_tmpb_fp
+    \clist_map_inline:Nn \l_tmpa_clist
+      {
+        \int_incr:N \l_tmpa_int
+        \fp_set:Nn \l_tmpa_fp { ##1 }
+        \fp_add:Nn \l_tmpb_fp {\l_tmpa_fp}
+        \fparray_gset:Nnn \g__getree_fanchart_radii_fparry { \l_tmpa_int }{ \l_tmpb_fp }
+      }
+    \int_step_inline:nnn { \l_tmpa_int+1 }{ \c_getree_fanchart_maximum_rings_tl }
+      {
+        \fp_add:Nn \l_tmpb_fp {\l_tmpa_fp}
+        \fparray_gset:Nnn \g__getree_fanchart_radii_fparry { ##1 }{ \l_tmpb_fp }
+      }
+  },
+  fanchart~inner~offset/.code={
+    \clist_set:Nn \l_tmpa_clist {#1}
+    \fparray_gzero:N \g__getree_fanchart_inner_fparry
+    \int_zero:N \l_tmpa_int
+    \fp_zero:N \l_tmpa_fp
+    \clist_map_inline:Nn \l_tmpa_clist
+      {
+        \int_incr:N \l_tmpa_int
+        \fp_set:Nn \l_tmpa_fp { ##1 }
+        \fparray_gset:Nnn \g__getree_fanchart_inner_fparry { \l_tmpa_int }{ \l_tmpa_fp }
+      }
+    \int_step_inline:nnn { \l_tmpa_int+1 }{ \c_getree_fanchart_maximum_rings_tl }
+      {
+        \fp_add:Nn \l_tmpb_fp {\l_tmpa_fp}
+        \fparray_gset:Nnn \g__getree_fanchart_inner_fparry { ##1 }{ \l_tmpa_fp }
+      }
+  },
+  fanchart~outer~offset/.code={
+    \clist_set:Nn \l_tmpa_clist {#1}
+    \fparray_gzero:N \g__getree_fanchart_outer_fparry
+    \int_zero:N \l_tmpa_int
+    \fp_zero:N \l_tmpa_fp
+    \clist_map_inline:Nn \l_tmpa_clist
+      {
+        \int_incr:N \l_tmpa_int
+        \fp_set:Nn \l_tmpa_fp { ##1 }
+        \fparray_gset:Nnn \g__getree_fanchart_outer_fparry { \l_tmpa_int }{ \l_tmpa_fp }
+      }
+    \int_step_inline:nnn { \l_tmpa_int+1 }{ \c_getree_fanchart_maximum_rings_tl }
+      {
+        \fp_add:Nn \l_tmpb_fp {\l_tmpa_fp}
+        \fparray_gset:Nnn \g__getree_fanchart_outer_fparry { ##1 }{ \l_tmpa_fp }
+      }
+  },
+  fanchart~minor~angle/.code={\tl_set:Nx \l_getree_fanchart_minor_angle_tl { \fp_to_decimal:n {#1} }},
+  fanchart~major~angle/.code={\tl_set:Nx \l_getree_fanchart_major_angle_tl { \fp_to_decimal:n {#1} }},
+  fanchart~open~up/.code={
+    \tl_set:Nx \l_getree_fanchart_minor_angle_tl { \fp_to_decimal:n {90-(#1)/2}}
+    \tl_set:Nx \l_getree_fanchart_major_angle_tl { \fp_to_decimal:n {90+(#1)/2}}
+  },
+  fanchart~open~up/.default=220,
+  fanchart~open~left/.code={
+    \tl_set:Nx \l_getree_fanchart_minor_angle_tl { \fp_to_decimal:n {180-(#1)/2}}
+    \tl_set:Nx \l_getree_fanchart_major_angle_tl { \fp_to_decimal:n {180+(#1)/2}}
+  },
+  fanchart~open~left/.default=160,
+  fanchart~open~right/.code={
+    \tl_set:Nx \l_getree_fanchart_minor_angle_tl { \fp_to_decimal:n {-(#1)/2}}
+    \tl_set:Nx \l_getree_fanchart_major_angle_tl { \fp_to_decimal:n {(#1)/2}}
+  },
+  fanchart~open~right/.default=160,
+  fanchart~open~down/.code={
+    \tl_set:Nx \l_getree_fanchart_minor_angle_tl { \fp_to_decimal:n {270-(#1)/2}}
+    \tl_set:Nx \l_getree_fanchart_major_angle_tl { \fp_to_decimal:n {270+(#1)/2}}
+  },
+  fanchart~open~down/.default=220,
+  fanchart~open~full/.style={fanchart~open~right=360},
+  fanchart~open~for/.code~args={#1x#2}{\__getree_fanchart_paper_fit:nn{#1}{#2}},
+  fanchart~landscape~from~level/.code={\tl_set:Nn\l__getree_fanchart_landscape_level_tl{#1}},
+  fanchart~text~portrait/.is~choice,
+  fanchart~text~portrait/.default=auto,
+  fanchart~text~portrait/auto/.code     = \cs_set_eq:NN \__getree_fanchart_portrait_angle:nnn \use_i:nnn,
+  fanchart~text~portrait/inwards/.code  = \cs_set_eq:NN \__getree_fanchart_portrait_angle:nnn \use_ii:nnn,
+  fanchart~text~portrait/outwards/.code = \cs_set_eq:NN \__getree_fanchart_portrait_angle:nnn \use_iii:nnn,
+  fanchart~text~landscape/.is~choice,
+  fanchart~text~landscape/.default=auto,
+  fanchart~text~landscape/auto/.code             = \cs_set_eq:NN \__getree_fanchart_landscape_angle:nnn \use_i:nnn,
+  fanchart~text~landscape/clockwise/.code        = \cs_set_eq:NN \__getree_fanchart_landscape_angle:nnn \use_ii:nnn,
+  fanchart~text~landscape/counterclockwise/.code = \cs_set_eq:NN \__getree_fanchart_landscape_angle:nnn \use_iii:nnn,
+  fanchart~boundary~color/.code={\colorlet{gtrfanchartboundary}{#1}},
+  fanchart~boundary~width/.code={
+      \fp_set:Nn \l__getree_fanchart_boundary_width_fp {#1}
+      \fp_set:Nn \l__getree_fanchart_boundary_scale_fp {min(5,\l__getree_fanchart_boundary_width_fp/0.4pt)}
+    },
+  fanchart~male~style/.code={\tikzset{gtr at fanchart@male at style/.style={#1}}},
+  fanchart~female~style/.code={\tikzset{gtr at fanchart@female at style/.style={#1}}},
+  fanchart~neuter~style/.code={\tikzset{gtr at fanchart@neuter at style/.style={#1}}},
+  fanchart~ancestor~style/.code={\tikzset{gtr at fanchart@ancestor at style/.style={#1}}},
+  fanchart~descendant~style/.code={\tikzset{gtr at fanchart@descendant at style/.style={#1}}},
+  fanchart~sibling~style/.code={\tikzset{gtr at fanchart@sibling at style/.style={#1}}},
+  fanchart~unrelated~style/.code={\tikzset{gtr at fanchart@unrelated at style/.style={#1}}},
+  fanchart~reset~bounds/.is~choice,
+  fanchart~reset~bounds/.default=true,
+  fanchart~reset~bounds/true/.code={\bool_set_true:N \l__getree_fanchart_reset_bounds_bool},
+  fanchart~reset~bounds/false/.code={\bool_set_false:N \l__getree_fanchart_reset_bounds_bool},
+  fanchart~bounds~border/.code={\fp_set:Nn \l__getree_fanchart_bounds_border_fp {#1}},
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Segment Drawing
+%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\cs_new:Npn \getree_fanchart_set_marker_style:n #1
+  {
+    \getree_fanchart_if_complemented_node:TF
+      {
+        \tikzset{gtr at fanchart@marker at style/.style={#1,
+          gtr at fanchart/@mark at level@\l_getree_fanchart_level_tl/.try,
+          gtr at fanchart@marker at complemented
+        }}
+      }
+      {
+        \tikzset{gtr at fanchart@marker at style/.style={#1,
+          gtr at fanchart/@mark at level@\l_getree_fanchart_level_tl/.try,
+          gtr at fanchart/@mark at id@\l_getree_fanchart_id_tl/.try
+        }}
+      }
+  }
+
+\cs_new:Npn \getree_fanchart_set_segment_style:n #1
+  {
+    \getree_fanchart_if_complemented_node:TF
+      {
+        \tikzset{gtr at fanchart@segment at style/.style={#1,
+          gtr at fanchart/@seg at level@\l_getree_fanchart_level_tl/.try,
+          gtr at fanchart@segment at complemented
+        }}
+      }
+      {
+        \tikzset{gtr at fanchart@segment at style/.style={#1,
+          gtr at fanchart/@seg at level@\l_getree_fanchart_level_tl/.try,
+          gtr at fanchart/@seg at id@\l_getree_fanchart_id_tl/.try
+        }}
+      }
+  }
+
+
+\cs_new:Npn \getree_fanchart_set_color_wave:n #1
+  {
+    \definecolor{#1}{rgb:wave}{\fp_to_decimal:n { 400 + (1-\l_getree_fanchart_ratio_tl)*360 } }
+  }
+
+
+% customize by \def\rangetHsb
+\cs_new:Npn \getree_fanchart_set_color_colorwheel:n #1
+  {
+    \definecolor{#1}{rgb:tHsb}{\fp_to_decimal:n{(1-\l_getree_fanchart_ratio_tl)*360},1,1}
+  }
+
+\cs_new:Npn \getree_fanchart_draw_path:n #1
+  {
+    \path[#1]
+      ( \l_getree_fanchart_angle_a_tl  \c_colon_str \l_getree_fanchart_radius_a_tl  )
+      arc ( \l_getree_fanchart_angle_a_tl \c_colon_str \l_getree_fanchart_angle_b_tl \c_colon_str \l_getree_fanchart_radius_a_tl )
+      -- ( \l_getree_fanchart_angle_b_tl \c_colon_str \l_getree_fanchart_radius_b_tl )
+      arc ( \l_getree_fanchart_angle_b_tl \c_colon_str \l_getree_fanchart_angle_a_tl \c_colon_str \l_getree_fanchart_radius_b_tl )
+      -- cycle;
+  }
+
+\cs_new:Npn \getree_fanchart_draw_path:nnn #1#2#3
+  {
+    \tl_set:Nx \l__getree_fanchart_tmpa_tl { \fp_to_dim:n {#1} }
+    \tl_set:Nx \l__getree_fanchart_tmpb_tl { \fp_to_dim:n {#2} }
+    \path[#3]
+      ( \l_getree_fanchart_angle_a_tl  \c_colon_str \l__getree_fanchart_tmpa_tl  )
+      arc ( \l_getree_fanchart_angle_a_tl \c_colon_str \l_getree_fanchart_angle_b_tl \c_colon_str \l__getree_fanchart_tmpa_tl )
+      -- ( \l_getree_fanchart_angle_b_tl \c_colon_str \l__getree_fanchart_tmpb_tl )
+      arc ( \l_getree_fanchart_angle_b_tl \c_colon_str \l_getree_fanchart_angle_a_tl \c_colon_str \l__getree_fanchart_tmpb_tl )
+      -- cycle;
+  }
+
+
+\cs_new:Npn \getree_fanchart_draw_segment_standard:
+  {
+    \fp_compare:nNnTF { \l_getree_fanchart_offset_b_tl } = { 0 }
+      {
+        \fp_compare:nNnTF { \l_getree_fanchart_offset_a_tl } = { 0 }
+        {
+          \getree_fanchart_draw_path:n
+            {
+              draw=gtrfanchartboundary,line~width=\l_getree_fanchart_line_width_tl,gtr at fanchart@segment at style
+            }
+        }
+        {
+          \getree_fanchart_draw_path:nnn
+            {\l_getree_fanchart_radius_a_tl+\l_getree_fanchart_offset_a_tl}
+            {\l_getree_fanchart_radius_b_tl}
+            {
+              draw=gtrfanchartboundary,line~width=\l_getree_fanchart_line_width_tl,gtr at fanchart@segment at style
+            }
+        }
+      }
+      {
+        \getree_fanchart_draw_path:nnn
+          {\l_getree_fanchart_radius_a_tl+\l_getree_fanchart_offset_a_tl}
+          {\l_getree_fanchart_radius_b_tl-\l_getree_fanchart_offset_b_tl}
+          {
+            gtr at fanchart@segment at style
+          }
+        \getree_fanchart_draw_path:nnn
+          {\l_getree_fanchart_radius_b_tl-\l_getree_fanchart_offset_b_tl}
+          {\l_getree_fanchart_radius_b_tl}
+          {
+            gtr at fanchart@marker at style
+          }
+        \getree_fanchart_draw_path:nnn
+          {\l_getree_fanchart_radius_a_tl+\l_getree_fanchart_offset_a_tl}
+          {\l_getree_fanchart_radius_b_tl}
+          {
+            draw=gtrfanchartboundary,line~width=\l_getree_fanchart_line_width_tl
+          }
+      }
+  }
+
+
+\cs_new:Npn \getree_fanchart_draw_root_style:n #1
+  {
+    \path[draw=gtrfanchartboundary,line~width=\l_getree_fanchart_line_width_tl,#1]
+      ( 0,0  ) circle[radius=\l_getree_fanchart_radius_b_tl];
+  }
+
+
+\gtrset
+  {
+    fanchart-segment-code/.code=
+      {
+        \cs_set:Npn \__getree_fanchart_draw_segment: {#1}
+      },
+    fanchart-root-code/.code=
+      {
+        \cs_set:Npn \__getree_fanchart_draw_root: {#1}
+      },
+    fanchart-marker-definition/.code=
+      {
+        \cs_set:Npn \__getree_fanchart_marker_definition: {#1}
+      },
+    fanchart-segment-definition/.code=
+      {
+        \cs_set:Npn \__getree_fanchart_segment_definition: {#1}
+      },
+  }
+
+\tikzset
+  {
+    gtr~set~color~wave/.code={\getree_fanchart_set_color_wave:n{#1}},
+    gtr~set~color~colorwheel/.code={\getree_fanchart_set_color_colorwheel:n{#1}},
+    gtr~set~color~series/.code={\colorlet{#1}{fanchart!![\l_getree_fanchart_level_tl]}},
+  }
+
+\gtrset
+  {
+    fanchart-segment-code={\getree_fanchart_draw_segment_standard:},
+    %
+    fanchart~root~style/.style={fanchart-root-code={\getree_fanchart_draw_root_style:n{#1}}},
+    fanchart~root~malefemale/.style={fanchart-root-code={\getree_fanchart_draw_root_style:n{gtr at fanchart@\gtrDBsex @style}}},
+    %
+    fanchart~segment~style/.style={fanchart-segment-definition={\getree_fanchart_set_segment_style:n{#1}}},
+    fanchart~segment~malefemale/.style={fanchart~segment~style={gtr at fanchart@\gtrDBsex @style}},
+    fanchart~segment~relation/.style={fanchart~segment~style={gtr at fanchart@\gtrDBrelation @style}},
+    fanchart~segment~wave/.style={fanchart~segment~style={
+      gtr~set~color~wave=gtr at fanchart@segment,
+      top~color=gtr at fanchart@segment!20,bottom~color=gtr at fanchart@segment!25
+    }},
+    fanchart~segment~colorwheel/.style={fanchart~segment~style={
+      gtr~set~color~colorwheel=gtr at fanchart@segment,
+      top~color=gtr at fanchart@segment!20,bottom~color=gtr at fanchart@segment!25
+    }},
+    fanchart~segment~radial/.style={fanchart~segment~style={
+      gtr~set~color~series=gtr at fanchart@segment,
+      top~color=gtr at fanchart@segment!20,bottom~color=gtr at fanchart@segment!25
+    }},
+    %
+    fanchart~marker~style/.style={fanchart-marker-definition={\getree_fanchart_set_marker_style:n{#1}}},
+    fanchart~marker~malefemale/.style={fanchart~marker~style={gtr at fanchart@\gtrDBsex @style}},
+    fanchart~marker~relation/.style={fanchart~marker~style={gtr at fanchart@\gtrDBrelation @style}},
+    fanchart~marker~wave/.style={fanchart~marker~style={
+      gtr~set~color~wave=gtr at fanchart@marker,
+      fill=gtr at fanchart@marker
+    }},
+    fanchart~marker~colorwheel/.style={fanchart~marker~style={
+      gtr~set~color~colorwheel=gtr at fanchart@marker,
+      fill=gtr at fanchart@marker
+    }},
+    fanchart~marker~radial/.style={fanchart~marker~style={
+      gtr~set~color~series=gtr at fanchart@marker,
+      fill=gtr at fanchart@marker
+    }},
+    %
+    fanchart~complemented~segment~style/.code={\tikzset{gtr at fanchart@segment at complemented/.style={#1}}},
+    fanchart~complemented~marker~style/.code={\tikzset{gtr at fanchart@marker at complemented/.style={#1}}},
+    %
+    fanchart~segment~style~for~levels/.code~2~args={
+      \clist_set:Nn \l_tmpa_clist {#1}
+      \clist_map_inline:Nn \l_tmpa_clist
+        {
+          \tikzset{gtr at fanchart/@seg at level@##1/.style={#2}}
+        }
+    },
+    fanchart~marker~style~for~levels/.code~2~args={
+      \clist_set:Nn \l_tmpa_clist {#1}
+      \clist_map_inline:Nn \l_tmpa_clist
+        {
+          \tikzset{gtr at fanchart/@mark at level@##1/.style={#2}}
+        }
+    },
+    fanchart~segment~style~for~ids/.code~2~args={
+      \clist_set:Nn \l_tmpa_clist {#1}
+      \clist_map_inline:Nn \l_tmpa_clist
+        {
+          \tikzset{gtr at fanchart/@seg at id@##1/.style={#2}}
+        }
+    },
+    fanchart~marker~style~for~ids/.code~2~args={
+      \clist_set:Nn \l_tmpa_clist {#1}
+      \clist_map_inline:Nn \l_tmpa_clist
+        {
+          \tikzset{gtr at fanchart/@mark at id@##1/.style={#2}}
+        }
+    },
+  }
+
+\ExplSyntaxOff
+
+
+\gtrset{
+  fanchart angles/.style args={#1:#2}{fanchart minor angle=#1,fanchart major angle=#2},
+}
+
+\definecolorseries{fanchart}{rgb:hsb}{grad}[rgb:hsb]{.575,1,1}{.987,-.234,0}
+\resetcolorseries[12]{fanchart}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Templates
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\gtrset
+  {
+    fanchart template/.is choice,
+%
+    fanchart template/spartan/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={0mm},
+        fanchart boundary color=gray!50,
+        fanchart root style={fill=white},
+        fanchart segment style={fill=white},
+        empty name text={},
+      },
+    fanchart template/malefemale sober/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={0mm},
+        fanchart boundary color=gray!50,
+        fanchart root malefemale,
+        fanchart segment malefemale,
+        empty name text={},
+      },
+    fanchart template/malefemale relation/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root malefemale,
+        fanchart segment malefemale,
+        fanchart marker relation,
+        empty name text={},
+      },
+    fanchart template/colorwheel sober/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray,
+        fanchart root style={fill=white},
+        fanchart segment style={fill=white},
+        fanchart marker colorwheel,
+        empty name text={},
+      },
+    fanchart template/colorwheel serious/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root style={inner color=white,outer color=gray!4!white},
+        fanchart segment style={top color=gray!1!white,bottom color=gray!4!white},
+        fanchart marker colorwheel,
+        empty name text={},
+      },
+    fanchart template/colorwheel malefemale/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root malefemale,
+        fanchart segment malefemale,
+        fanchart marker colorwheel,
+        empty name text={},
+      },
+    fanchart template/colorwheel rich/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={0mm},
+        fanchart boundary color=white,
+        fanchart root style={inner color=white,outer color=gray!15!white},
+        fanchart segment colorwheel,
+        empty name text={},
+      },
+    fanchart template/colorwheel opulent/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=white,
+        fanchart root style={inner color=white,outer color=gray!15!white},
+        fanchart segment colorwheel,
+        fanchart marker colorwheel,
+        empty name text={},
+      },
+%
+    fanchart template/wave sober/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray,
+        fanchart root style={fill=white},
+        fanchart segment style={fill=white},
+        fanchart marker wave,
+        empty name text={},
+      },
+    fanchart template/wave serious/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root style={inner color=white,outer color=gray!4!white},
+        fanchart segment style={top color=gray!1!white,bottom color=gray!4!white},
+        fanchart marker wave,
+        empty name text={},
+      },
+    fanchart template/wave malefemale/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root malefemale,
+        fanchart segment malefemale,
+        fanchart marker wave,
+        empty name text={},
+      },
+    fanchart template/wave rich/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={0mm},
+        fanchart boundary color=white,
+        fanchart root style={inner color=white,outer color=gray!15!white},
+        fanchart segment wave,
+        empty name text={},
+      },
+    fanchart template/wave opulent/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=white,
+        fanchart root style={inner color=white,outer color=gray!15!white},
+        fanchart segment wave,
+        fanchart marker wave,
+        empty name text={},
+      },
+    fanchart template/radial sober/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray,
+        fanchart root style={fill=white},
+        fanchart segment style={fill=white},
+        fanchart marker radial,
+        empty name text={},
+      },
+    fanchart template/radial serious/.style=
+      {
+        fanchart inner offset={0mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root style={inner color=white,outer color=gray!4!white},
+        fanchart segment style={top color=gray!1!white,bottom color=gray!4!white},
+        fanchart marker radial,
+        empty name text={},
+      },
+    fanchart template/radial malefemale/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=gray!50,
+        fanchart root malefemale,
+        fanchart segment malefemale,
+        fanchart marker radial,
+        empty name text={},
+      },
+    fanchart template/radial rich/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={0mm},
+        fanchart boundary color=white,
+        fanchart root style={inner color=white,outer color=gray!15!white},
+        fanchart segment radial,
+        empty name text={},
+      },
+    fanchart template/radial opulent/.style=
+      {
+        fanchart inner offset={1mm},
+        fanchart outer offset={2mm},
+        fanchart boundary color=white,
+        fanchart root style={inner color=white,outer color=gray!15!white},
+        fanchart segment radial,
+        fanchart marker radial,
+        empty name text={},
+      },
+  }
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Presets
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\gtrset{
+  fanchart radii={2.5cm,3.5cm,3cm},
+  fanchart inner offset={0mm},
+  fanchart outer offset={0mm},
+  fanchart open up=220,
+  fanchart landscape from level=5,
+  fanchart text portrait=auto,
+  fanchart text landscape=auto,
+  fanchart boundary color=gray!50,
+  fanchart boundary width=0.4pt,
+  fanchart male style={top color=blue!1!white,bottom color=blue!6!white},
+  fanchart female style={top color=red!1!white,bottom color=red!6!white},
+  fanchart neuter style={top color=gray!1!white,bottom color=gray!6!white},
+  fanchart ancestor style={fill=red!50!gray!50},
+  fanchart descendant style={fill=red!50!gray!50},
+  fanchart sibling style={fill=blue!50!gray!50},
+  fanchart unrelated style={fill=gray!15},
+  fanchart segment malefemale,
+  fanchart root malefemale,
+  fanchart marker style={fill=gtrfanchartboundary!50!white},
+  fanchart complemented segment style=,
+  fanchart complemented marker style=,
+  fanchart reset bounds,
+  fanchart bounds border=0.2pt,
+}
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.fanchart.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.templates.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.templates.code.tex	2020-06-19 20:38:31 UTC (rev 55596)
+++ trunk/Master/texmf-dist/tex/latex/genealogytree/gtrlib.templates.code.tex	2020-06-19 20:39:11 UTC (rev 55597)
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 1.32 (2019/04/08)
+%% The LaTeX package genealogytree - version 2.00 (2020/06/19)
 %% gtrlib.templates.code.tex: Templates
 %%
 %% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
 %% -------------------------------------------------------------------------------------------
 %%
 %% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
 %%
 %% This work consists of all files listed in README
 %%
-\gtr at set@library at version{1.32}
+\gtr at set@library at version{2.00}
 
 % Templates
 



More information about the tex-live-commits mailing list.