summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-06-20 03:02:28 +0000
committerNorbert Preining <norbert@preining.info>2020-06-20 03:02:28 +0000
commiteb6236a4ba3566f36e4f6f8cf78f39ea56861520 (patch)
tree630919fac6b621bb68e445019b8e4cb9a2b7eed2 /macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
parentfa4840ca74917d6402885b9b77c26e51b61fc68a (diff)
CTAN sync 202006200302
Diffstat (limited to 'macros/latex/contrib/genealogytree/gtrcore.parser.code.tex')
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.parser.code.tex198
1 files changed, 193 insertions, 5 deletions
diff --git a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
index 27e1cdaaf3..579be1f91a 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
@@ -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@set@library@version{1.32}
+\gtr@set@library@version{2.00}
%% (local) stack implementation
\def\gtrnewstack#1{%
@@ -209,11 +209,16 @@
\fi%
}
+
\def\gtr@pparse@c{\@ifnextchar[{\gtr@parent@@c}{\gtr@parent@@c[]}}
\long\def\gtr@parent@@c[#1]#2{%
\gtr@trav@@c[#1]{#2}%
\gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
}
+\long\def\gtr@parent@@c@ignore[#1]#2{%
+ \gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
+}
+
\def\gtr@pparse@p{%
\@ifnextchar a{\gtr@pparse@parent@}{\gtr@pparse@p@}}
@@ -223,10 +228,37 @@
\gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
}
\def\gtr@pparse@p@{\@ifnextchar[{\gtr@parent@@p}{\gtr@parent@@p[]}}
-\long\def\gtr@parent@@p[#1]#2{%
+
+
+\long\def\gtr@parent@@p@normal[#1]#2{%
\gtr@trav@@p[#1]{#2}%
\gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
}
+\long\def\gtr@parent@@p@malefemale[#1]#2{%
+ \ifnum\gtr@c@level<\gtr@complementparents@levellimit\relax%
+ \gtr@trav@@complementedparent{g[#1]{#2}p[c@mpl@m@nt@d,complemented]{male}p[c@mpl@m@nt@d,complemented]{female}}%
+ \else%
+ \gtr@trav@@p[#1]{#2}%
+ \fi%
+ \gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
+}
+\long\def\gtr@parent@@p@femalemale[#1]#2{%
+ \ifnum\gtr@c@level<\gtr@complementparents@levellimit\relax%
+ \gtr@trav@@complementedparent{g[#1]{#2}p[c@mpl@m@nt@d,complemented]{female}p[c@mpl@m@nt@d,complemented]{male}}%
+ \else%
+ \gtr@trav@@p[#1]{#2}%
+ \fi%
+ \gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
+}
+\long\def\gtr@parent@@p@unspecific[#1]#2{%
+ \ifnum\gtr@c@level<\gtr@complementparents@levellimit\relax%
+ \gtr@trav@@complementedparent{g[#1]{#2}p[c@mpl@m@nt@d,complemented]{}p[c@mpl@m@nt@d,complemented]{}}%
+ \else%
+ \gtr@trav@@p[#1]{#2}%
+ \fi%
+ \gtr@parse@graphwithhandle{\gtr@handle@continue@parent}%
+}
+
\def\gtr@pparse@g{\@ifnextchar[{\gtr@parent@@g}{\gtr@parent@@g[]}}
\long\def\gtr@parent@@g[#1]#2{%
@@ -387,7 +419,7 @@
\def\gtr@previous@family{%
\let\gtr@lastfamily=\gtr@currentfamily%
- \ifnum\gtr@famstack@size>0%
+ \ifnum\gtr@famstack@size>0\relax%
\gtr@famstack@popto{\gtr@currentfamily}%
\else%
\let\gtr@currentfamily=\@undefined%
@@ -448,6 +480,24 @@
\gtr@parse@beginfamily@hook%
\gtr@parse@graphwithhandle{\gtr@handle@continue@parent}#2x%
\gtr@parse@endfamily@hook%
+ \gtr@parse@complementparents@hook%
+ \gtr@proc@@parent@end%
+ \fi%
+ \gtr@previous@family%
+ \gtr@down@level@pop%
+ \gtr@parse@afterfamily@hook%
+}
+
+\long\def\gtr@trav@@complementedparent#1{%
+ \gtr@up@level@push%
+ \gtr@next@family%
+ \gtr@proc@@parent@begin{}%
+ \ifgtr@ignore%
+ \advance\gtr@c@family -1\relax%
+ \else%
+ \gtr@parse@beginfamily@hook%
+ \gtr@parse@graph #1x%
+ \gtr@parse@endfamily@hook%
\gtr@proc@@parent@end%
\fi%
\gtr@previous@family%
@@ -465,6 +515,7 @@
\gtr@parse@beginfamily@hook%
\gtr@parse@graphwithhandle{\gtr@handle@continue@child}#2x%
\gtr@parse@endfamily@hook%
+ \gtr@parse@childlesschild@hook%
\gtr@proc@@child@end%
\fi%
\gtr@previous@family%
@@ -512,6 +563,27 @@
#3%
\fi%
}
+% \long\def\gtr@trav@@add@node@malefemale#1#2#3{%
+ % \gdef\gtr@gtrav@mark{m}%
+ % \gtr@proc@add@node{#1}{#2}%
+ % \ifgtr@ignore%
+ % \advance\gtr@c@pid -1\relax%
+ % \else%
+ % \csedef{gtr@per@\gtr@currentperson @mark}{\gtr@gtrav@mark}%
+ % #3%
+ % \fi%
+% }
+% \long\def\gtr@trav@@add@node@femalemale#1#2#3{%
+ % \gdef\gtr@gtrav@mark{f}%
+ % \gtr@proc@add@node{#1}{#2}%
+ % \ifgtr@ignore%
+ % \advance\gtr@c@pid -1\relax%
+ % \else%
+ % \csedef{gtr@per@\gtr@currentperson @mark}{\gtr@gtrav@mark}%
+ % #3%
+ % \fi%
+% }
+
\long\def\gtr@trav@@parent@g[#1]#2{%
\gtr@down@level@push%
@@ -595,6 +667,7 @@
\gtr@parse@afternode@hook%
}
+
%%%%%%%%%%%%%%%%%%%%%%%
%% Hooks
%%%%%%%%%%%%%%%%%%%%%%%
@@ -615,6 +688,121 @@
}}\x%
}
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% Parent Autofill
+%%%%%%%%%%%%%%%%%%%%%%%
+
+% precondition: list with exact 2 parents
+\def\gtr@parse@toggle@parents{%
+ \letcs\gtr@currentparentlist{gtr@fam@\gtr@currentfamily @par}%
+ \def\dodo##1{%
+ \def\gtr@tempB{##1}%
+ }%
+ \def\do##1{%
+ \def\gtr@tempA{##1}%
+ \let\do\dodo%
+ }%
+ \dolistloop{\gtr@currentparentlist}%
+ \csundef{gtr@fam@\gtr@currentfamily @par}%
+ \listcseadd{gtr@fam@\gtr@currentfamily @par}{\gtr@tempB}%
+ \listcseadd{gtr@fam@\gtr@currentfamily @par}{\gtr@tempA}%
+ \letcs\gtr@currentparentlist{gtr@fam@\gtr@currentfamily @par}%
+}
+
+\def\gtr@parse@complementparents@malefemale{%
+ \ifnum\gtr@c@level>\gtr@complementparents@levellimit\relax%
+ \else%
+ \ifcsdef{gtr@fam@\gtr@currentfamily @par}%
+ {%
+ \def\dodo##1{%
+ \let\gtr@parse@do@complementparents\@secondoftwo%
+ }%
+ \def\do##1{%
+ \let\gtr@parse@do@complementparents\@firstoftwo%
+ \letcs\gtr@temp{gtr@per@##1@flag@s}%
+ \let\do\dodo%
+ }%
+ \dolistcsloop{gtr@fam@\gtr@currentfamily @par}%
+ \gtr@parse@do@complementparents%
+ {%
+ \ifdefstring{\gtr@temp}{female}%
+ {
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{male}x
+ \gtr@parse@toggle@parents%
+ }%
+ {
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{female}x
+ }%
+ }{%
+ \ifdefstring{\gtr@temp}{female}{\gtr@parse@toggle@parents}{}%
+ }%
+ }%
+ {%
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{male}p[c@mpl@m@nt@d,complemented]{female}x
+ }%
+ \fi%
+}
+
+\def\gtr@parse@complementparents@femalemale{%
+ \ifnum\gtr@c@level>\gtr@complementparents@levellimit\relax%
+ \else%
+ \ifcsdef{gtr@fam@\gtr@currentfamily @par}%
+ {%
+ \def\dodo##1{%
+ \let\gtr@parse@do@complementparents\@secondoftwo%
+ }%
+ \def\do##1{%
+ \let\gtr@parse@do@complementparents\@firstoftwo%
+ \letcs\gtr@temp{gtr@per@##1@flag@s}%
+ \let\do\dodo%
+ }%
+ \dolistcsloop{gtr@fam@\gtr@currentfamily @par}%
+ \gtr@parse@do@complementparents%
+ {%
+ \ifdefstring{\gtr@temp}{male}%
+ {
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{female}x
+ \gtr@parse@toggle@parents%
+ }%
+ {
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{male}x
+ }%
+ }{%
+ \ifdefstring{\gtr@temp}{male}{\gtr@parse@toggle@parents}{}%
+ }%
+ }%
+ {%
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{female}p[c@mpl@m@nt@d,complemented]{male}x
+ }%
+ \fi%
+}
+
+\def\gtr@parse@complementparents@unspecific{%
+ \ifnum\gtr@c@level>\gtr@complementparents@levellimit\relax%
+ \else%
+ \ifcsdef{gtr@fam@\gtr@currentfamily @par}%
+ {%
+ \def\dodo##1{%
+ \let\gtr@parse@do@complementparents\@secondoftwo%
+ }%
+ \def\do##1{%
+ \let\gtr@parse@do@complementparents\@firstoftwo%
+ \let\do\dodo%
+ }%
+ \dolistcsloop{gtr@fam@\gtr@currentfamily @par}%
+ \gtr@parse@do@complementparents%
+ {%
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{}x
+ }{}%
+ }%
+ {%
+ \gtr@parse@graph p[c@mpl@m@nt@d,complemented]{}p[c@mpl@m@nt@d,complemented]{}x
+ }%
+ \fi%
+}
+
+
%%%%%%%%%%%%%%%%%%%%%%%
%% Information
%%%%%%%%%%%%%%%%%%%%%%%