%define;tothegen(xx) [to the %s generation:::xx]%nn; %end; %define;thegen(xx) [the %s generation:::xx]%nn; %end; %define;togena(xx) %if;(xx = 0)[specify::generation/generations]0%nn; %elseif;(xx = 1)[to the parents]%nn; %elseif;(xx = 2)[to the grandparents]%nn; %elseif;(xx = 3)[to the great-grandparents]%nn; %else; %apply;tothegen%with; %apply;nth([nth (generation)], xx) %end; %end; %end; %define;gen(xx) %if;(e.xx = 0)[*specify::generation/generations]0%nn; %elseif;(e.xx = 1)[parents]%nn; %elseif;(e.xx = 2)[grand-parents]%nn; %elseif;(e.xx = 3)[great-grand-parents]%nn; %else; %apply;thegen%with; %apply;nth([nth (generation)], e.xx) %end; %end; %end; %nn; %if;(e.t = "D") [*ancestor/ancestors]1 ... [up to] ...%nn; %elseif;(e.t = "N" and e.only = "on") [*generation/generations]0 %e.v; %else; %apply;a_of_b%with; %if;(e.t = "M") %if;(e.evt = "on")[*missing events]%else;[*missing ancestors]%end; %else;[*ancestor/ancestors]1 %end; %and; %if;(public_name != "")%public_name;%else;%first_name;%end; %if;(qualifier != "") %qualifier;%end; %sp;%surname; %end; %if;(e.cgl="on" and e.t!="N") %let;nb_gen;%apply;min(e.v, max_anc_level)%in; %sp;%apply;togena(nb_gen). %end; %end; %include;css %include;hed %message_to_wizard;
%if;not cancel_links; %include;menubar %end; %let;central_index;%index;%in; %let;l_v0;%if;(e.v != "")%if;(e.v > max_anc_level)%max_anc_level;%else;%e.v;%end;%else;1%end;%in; %let;l_v;%if;(bvar.max_anc_level = "")%l_v0;%elseif;(bvar.max_anc_level > l_v0)%l_v0;%else;%bvar.max_anc_level;%end;%in; %let;birth_symbol;%if;(bvar.birth_symbol != "")%bvar.birth_symbol;%else;°%end;%in; %let;death_symbol;%if;(bvar.death_symbol != "")%bvar.death_symbol;%else;†%end;%in; %let;l_up;%if;(e.i1 != "" or e.p1 != "")1%end;%in; %define;image_MF(xxx) %if;not cancel_links; %if;wizard; %nn; %if;wizard;%nn; %elseif;friend;%end; %end; %end; %define;letter(xx) %apply;nth%with; /a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z %and;xx%end; %end; %( fin recopie perso_utils %) %define;link(aaa,xxx,nnn) %if;(e.cgl="on")xxx%else;xxx%end; %end; %define;link2(xxx, nnn) %if;(e.cgl="on")%xxx;%else;%xxx;%end; %xxx.title;%xxx.dates; %end; %define;my_link(aaa, xxx, rrr, nnn) %if;(e.cgl="on" or rrr)xxx%else;xxx%end; %end; %define;living_interval_dates(xxx, yyy) %if;(e.after != "" and e.before != "") ,%sp;[living between %s and %s:::xxx:yyy] %elseif;(e.before != "") ,%sp;[living before %s:::yyy] %elseif;(e.after != "") ,%sp;[living after %s:::xxx] %else; %( On n'affiche rien %) %end; %end; %define;ancestor_missing_birth(xx) %if;(xx.has_birth_date or xx.has_birth_place) %if;xx.has_birth_date; %xx.slash_birth_date;%end; %if;xx.has_birth_place; - %xx.birth_place;%end; %elseif;(xx.has_baptism_date or xx.has_baptism_place) %if;xx.has_baptism_date; %xx.slash_baptism_date;%end; %if;xx.has_baptism_place; - %xx.baptism_place;%end; %else; %end; %end; %define;ancestor_missing_death(xx) %if;xx.is_dead; %if;xx.has_death_date; %xx.slash_death_date;%end; %if;xx.has_death_place; - %xx.death_place;%end; %elseif;xx.is_buried; %if;xx.has_burial_date; %xx.slash_burial_date;%end; %if;xx.has_burial_place; - %xx.burial_place;%end; %elseif;xx.is_cremated; %if;xx.has_cremation_date; %xx.slash_cremation_date;%end; %if;xx.has_cremation_place; - %xx.cremation_place;%end; %else; %end; %end; %define;display_missing_ancestor_info(xx) %if;(e.birth = "on") %apply;ancestor_missing_birth("xx") %end; %if;(e.death = "on") %apply;ancestor_missing_death("xx") %end; %if;(e.spouse = "on") %if;xx.has_families; %if;(not xx.has_parents and xx.first_name != "?" and xx.surname != "?") %foreach;xx.family; %if;(spouse.first_name != "?" and spouse.surname != "?") %if;(family_cnt > 1),%sp;%end; %apply;image_MF("spouse") %apply;link(spouse.access, spouse, spouse.index) %end; %end; %end; %end; %end; %end; %define;somebody_long_info(xx) %if;xx.has_aliases; %foreach;xx.alias;, [alias] %alias;%end; %end; %if;(("xx" = "ancestor" or xx.sosa_in_list = "") and xx.has_nobility_titles) %nn; %foreach;xx.nobility_title;, %nobility_title;%end; %nn; %end; %if;(xx.has_birth_date or xx.has_birth_place) , %if;xx.is_male;[born]0%elseif;xx.is_female;[born]1%else;[born]2%end; %if;xx.has_birth_date; %xx.on_birth_date;%end; %if;xx.has_birth_place;, %xx.birth_place;%end; %end; %if;(xx.has_baptism_date or xx.has_baptism_place) , %if;xx.is_male;[baptized]0%elseif;xx.is_female;[baptized]1%nn; %else;[baptized]2%end; %if;xx.has_baptism_date; %xx.on_baptism_date;%end; %if;xx.has_baptism_place;, %xx.baptism_place;%end; %end; %if;xx.is_dead;, %xx.died; %if;(xx.has_death_date) %xx.on_death_date;%end; %if;(xx.has_death_place), %xx.death_place;%end; %end; %if;xx.is_buried;, %if;xx.is_male;[buried]0%else;[buried]1%end; %if;xx.has_burial_date; %xx.on_burial_date;%end; %if;xx.has_burial_place;, %xx.burial_place;%end;%nl; %end; %if;xx.is_cremated;, %if;xx.is_male;[cremated]0%else;[cremated]1%end; %if;xx.has_cremation_date; %xx.on_cremation_date;%end; %if;xx.has_cremation_place;, %xx.cremation_place;%end;%nl; %end; %if;xx.computable_death_age;%sp; ([age at death:] %xx.death_age;)%nn; %end; %end; %define;somebody_extra_info(xx) %if;xx.has_occupation;, %xx.occupation;%end; %if;(e.rel = "on" and xx.has_relations) %foreach;xx.relation;%nl; (%relation_type;: %if;has_relation_him; %apply;link2(relation_him.var, relation_him.index) %if;(relation_him.sosa_in_list != ""), [see] %nn; %relation_him.sosa_in_list;%nn; %end; %end; %if;has_relation_her; %if;has_relation_him;,%nl;%end; %apply;link2(relation_her.var, relation_her.index) %if;(relation_her.sosa_in_list != ""), [see] %nn; %relation_her.sosa_in_list;%nn; %end; %end;)%nn; %end; %foreach;xx.related;%nl; (%related_type;: %apply;link2(related.var, related.index) %if;(related.sosa_in_list != ""), [see] %nn; %related.sosa_in_list;%nn; %end;)%nn; %end; %end; %end; %define;somebody(xx) %apply;my_link(xx.access, xx, xx.is_restricted, xx.index)%nn; %apply;somebody_long_info("xx") %apply;somebody_extra_info("xx") %end; %define;somebody_spouse_parent(xx) %apply;my_link(spouse.xx.access, spouse.xx, spouse.is_restricted, spouse.index)%nn; %if;spouse.xx.has_nobility_titles;, %nn; %spouse.xx.nobility_title;%nn; %end; %spouse.xx.dates; %if;(spouse.xx.sosa_in_list != "")%sp; ([see] %spouse.xx.sosa_in_list; )%nn; %end; %end; %define;image_sosa(xxx,yyy) %nn; %end; %define;display_sosa(xx) %if;(xx.has_sosa and bvar.display_sosa="yes") %if;not cancel_links;%end; %apply;image_sosa%with;%sosa_ref.first_name_key_strip;%sp; %sosa_ref.surname_key_strip; %and;%xx.sosa;%end; %if;not cancel_links;%end;%sp; %end; %end; %define;short_display_person(xx) %apply;display_sosa("xx") %if;(xx.index=central_index)%xx;%else; %if;(cancel_links or xx.is_restricted)%xx; %else;%xx;%end; %end; %xx.title;%xx.dates; %end; %define;married_to(is_male, date_place) %if;("is_male" = 1) %if;are_married;[married%t to:::date_place]0%nn; %elseif;are_not_married;[relationship%t to:::date_place]0%nn; %elseif;are_engaged;[engaged%t to:::date_place]0%nn; %elseif;is_no_sexes_check;[relationship%t to:::date_place]0%nn; %elseif;is_no_mention;date_place [with]%nn; %end; %else; %if;are_married;[married%t to:::date_place]1%nn; %elseif;are_not_married;[relationship%t to:::date_place]1%nn; %elseif;are_engaged;[engaged%t to:::date_place]1%nn; %elseif;is_no_sexes_check;[relationship%t to:::date_place]1%nn; %elseif;is_no_mention;date_place [with]%nn; %end; %end; %end; %let;lai;alt="[image/images]0"%in; %let;ltap;%if;(wizard and not cancel_links) title="[add::parents]" %end;%in; %let;ltmf;%if;(wizard and not cancel_links) title="[modify::family/families]0" %end;%in; %let;ltmp;%if;(wizard and not cancel_links) title="[modify::person/persons]0" %end;%in; %define;link3(aa, xx) %if;(cancel_links)xx%else;xx%end; %end; %define;link_dates1(xx) %sp; %if;(wizard and not cancel_links) %nn; %end; %apply;lazy_print(birth_symbol) %if;(xx.has_birth_date or xx.has_baptism_date) %if;(xx.birth_date.year != "")%lazy_force;%xx.slash_birth_date;%nn; %elseif;(xx.baptism_date.year != "")%lazy_force;%xx.slash_baptism_date;%nn; %end; %end; %if;(xx.has_birth_place or xx.has_baptism_place) %sp;%lazy_force;%if;xx.has_birth_place;%xx.birth_place;%elseif;xx.has_baptism_place;%xx.baptism_place;%end; %end; %let;l1;%if;lazy_printed;
%end;%in; %if;(xx.is_dead) %l1; %apply;lazy_print(death_symbol) %if;(xx.has_death_date or xx.has_burial_date) %if;(xx.death_date.year != "")%lazy_force;%xx.slash_death_date;%nn; %elseif;(xx.burial_date.year != "")%lazy_force;%xx.slash_burial_date;%nn; %end; %end; %if;(xx.has_death_place or xx.has_burial_place) %sp;%lazy_force;%if;xx.has_death_place;%xx.death_place;%elseif;xx.has_burial_place;%xx.burial_place;%end; %end; %end; %let;l2;%if;lazy_printed; %else;%lazy_force;%end;%in; %if;(wizard and not cancel_links) %if;(l1 = "" and l2 = "") - %end; %nn; %end; %end; %define;link_marriage1(xx) %if;(wizard and not cancel_links) %nn; &%nn; %if;(nb_children >= 1)%nb_children;
%end; %slash_marriage_date; %marriage_place; %else; &%nn; %slash_marriage_date; %marriage_place;
&%nb_children; %end; %end; %define;link_parents() %if;(e.only != "on" and ancestor.father_sosa != "") %ancestor.anc_sosa;%nn; %elseif;(e.cgl != "on" and wizard and not ancestor.has_parents and ancestor.first_name != "?" and ancestor.surname != "?") %ancestor.anc_sosa;%nn; %else; %ancestor.anc_sosa;%nn; %end; %end; %define;imgtdz(xx) %if;(e.image!="off" and xx.has_image) %nn; %end; %end; %define;info3(xx) %if;(xx.has_nobility_titles) %xx.nobility_title;
%end; %if;(xx.has_occupation) %xx.occupation;
%end; %if;xx.computable_age; [age] : %xx.age;
%end; %if;(xx.computable_death_age) %xx.death_age;
%end; %if;(xx.has_consanguinity and (bvar.show_consang != "no" or manitou)) %xx.consanguinity; %end; %end; %define;link_rel(xx) %if;(cancel_links) ==
xx %else; ==
xx %end; %end; %define;symbol2(xx) %if;(xx.has_siblings) ♦%nn; %elseif;(xx.has_parents) ◊%nn; %else; -%nn; %end; %end; %define;symbol1(xx) %if;(xx.has_sosa) %apply;symbol2("xx")%nn; %else; %apply;symbol2("xx") %end; %end; %define;nb_fam(xx) %if;(xx.same = "") %if;(not cancel_links) %end;
%apply;symbol1("xx") %if;(xx.nb_families > 1)
%xx.nb_families;&%xx.nb_children; %end; %if;(not cancel_links) %end; %else;
%apply;link_rel%with; %xx.same; %end; %end; %end; %define;male_line(xx,z1) %apply;link_parents() %apply;nb_fam("xx") %apply;imgtdz("xx")
%apply;link3(xx.access, xx)
%apply;info3("xx") %apply;link_dates1("xx") %end; %define;female_line(xx,z1) %apply;link_dates1("xx") %apply;imgtdz("xx")
%apply;link3(xx.access, xx)
%apply;info3("xx") %apply;link_parents() %apply;nb_fam("xx") %end; %define;one_line(z1) %if;(ancestor.anc_sosa.v % 2 = 0)
%apply;male_line("ancestor","z1") %if;(ancestor.same = "") %foreach;ancestor.family; %if;(family.index = ancestor.family.index) %apply;link_marriage1("ancestor") %end; %end; %end; %end; %if;(ancestor.anc_sosa.v % 2 = 1) %apply;female_line("ancestor","z1")
%end; %end; %( Long display %) %define;child_notes(spec) %if;(child.sosa_in_list = "" and (e.src = "on" and child.has_sources or e.notes = "on" and (child.has_notes or child.has_event)))
%ancestor.anc_sosa; %if;("spec" != "")-spec%end; %apply;letter(child_cnt):
  %if;(e.notes = "on" and (child.has_notes or child.has_event))

  %child.notes; %if;child.has_event; %foreach;child.event;
  %if;event.has_date;%event.date; : %else;--- : %end; | %apply;capitalize(event.name)%sp; %if;event.has_spouse;([with] %event.spouse;)%end; %if;event.has_place; - %event.place; %end; %if;event.has_witnesses; %foreach;event_witness; %apply;capitalize(event_witness_kind) : %apply;short_display_person("event_witness") %end; %end; %if;event.has_note; %event.note; %end; %if;event.has_src;[*source/sources]1: %event.src;%end;
  %end; %end;

  %end; %if;(e.src = "on" and child.has_sources) [*source/sources]1:
  %foreach;child.source; - %source_type;: %source;
  %end;
  %end;
%end; %end; %define;long_display_notes()

### %if;(e.notes = "on")[*note/notes]1%else;[*source/sources]1%end;

%foreach;ancestor_level; %if;(e.v != "" and level <= e.v and (e.only != "on" or level = e.v)) %foreach;ancestor; %if;((e.src = "on" and ancestor.has_sources or e.notes = "on" and (ancestor.has_notes or ancestor.has_event)) and ancestor.same = "")
%ancestor.anc_sosa;:
  %if;(e.notes = "on" and (ancestor.has_notes or ancestor.has_event))

  %ancestor.notes; %if;ancestor.has_event; %foreach;ancestor.event;
  %if;event.has_date;%event.date; : %else;--- : %end; | %apply;capitalize(event.name)%sp; %if;event.has_spouse;([with] %event.spouse;)%end; %if;event.has_place; - %event.place; %end; %if;event.has_witnesses; %foreach;event_witness; %apply;capitalize(event_witness_kind) : %apply;short_display_person("event_witness") %end; %end; %if;event.has_note; %event.note; %end; %if;event.has_src;[*source/sources]1: %event.src;%end;
  %end; %end;

  %end; %if;(e.src = "on" and ancestor.has_sources) [*source/sources]1:
  %foreach;ancestor.source; - %source_type;: %source;
  %end;
  %end;
%end; %if;(e.siblings = "on" and ancestor.is_female and ancestor.same = "") %( siblings %) %if;(ancestor.index != self.index) %foreach;ancestor.family; %if;(family.index = ancestor.family.index) %foreach;child; %apply;child_notes("") %end; %end; %end; %( father's other families %) %foreach;ancestor.spouse.family; %if;(spouse.index != ancestor.index) %foreach;child; %apply;child_notes(family_cnt) %end; %end; %end; %( mother's other families %) %foreach;ancestor.family; %if;(spouse.index != ancestor.spouse.index) %foreach;child; %apply;child_notes(family_cnt) %end; %end; %end; %end; %end; %end; %end; %end;

%end; %define;long_display_ancestor_personal() %apply;somebody("ancestor"). %if;(e.only != "on" and ancestor.father_sosa != "") [*parents]:%sp; %ancestor.father_sosa;%sp; [and]%sp; %ancestor.mother_sosa;. %end; %if;(e.siblings = "on") %foreach;ancestor.family; %if;(ancestor.index = index or family.index != ancestor.family.index) %apply;capitalize%with; %apply;married_to%with; %ancestor.is_male; %and; %if;(ancestor.index != index) (%family_cnt;)%end; %if;(on_marriage_date != "") %on_marriage_date;%end; %if;(marriage_place != ""), %marriage_place;, %end; %end;%sp; %end; %apply;somebody("spouse")%nn; %if;spouse.has_parents;,%sp; %apply;a_of_b%with; %if;spouse.is_male;[son/daughter/child]0 %else;[son/daughter/child]1%end; %and; %apply;somebody_spouse_parent("father") [and] %apply;somebody_spouse_parent("mother") %end; %end;. %end; %end; %end; %if;((e.notes = "on" and (ancestor.has_notes or ancestor.has_event) and e.inline = "on") or (e.src = "on" and ancestor.has_sources and e.inline = "on"))

%if;(e.notes = "on" and (ancestor.has_notes or ancestor.has_event)) [*note/notes]0 : %apply;clean_comment_tag(ancestor.notes)
%if;ancestor.has_event;

%foreach;ancestor.event;
%if;event.has_date;%event.date; : %else;--- : %end; | %apply;capitalize(event.name)%sp; %if;event.has_spouse;([with] %event.spouse;)%end; %if;event.has_place; - %event.place; %end; %if;event.has_witnesses; %foreach;event_witness; %apply;capitalize(event_witness_kind)[:] %apply;short_display_person("event_witness") %end; %end; %if;event.has_note; %event.note; %end; %if;event.has_src;[*source/sources]1[:] %event.src;%end;
%end;

%end;
%end; %if;(e.src = "on" and ancestor.has_sources) [*source/sources]1 : %foreach;ancestor.source; %source_type;: %apply;clean_comment_tag(source) %if;(not is_last),%sp;%end; %end; %end; %end; %if;((e.notes = "on" and (ancestor.has_notes or ancestor.has_event) or e.src = "on" and ancestor.has_sources) and e.inline != "on") %if;(e.notes = "on")%[[*note/notes]0%sp; %else;%[[*source/sources]1%sp; %end; %ancestor.anc_sosa;%]. %end; %end; %define;child_long_info(spec) %apply;my_link(child.access, child.child_name, child.is_restricted, child.index)%nn;%nn; %apply;somebody_long_info("child") %if;(child.sosa_in_list != ""). %if;(e.only != "on")[*see]%sp; %child.sosa_in_list;. %end; %else; %apply;somebody_extra_info("child"). %foreach;child.family; %if;(e.inline= "on" and (((child.has_notes or child.has_event) and e.notes = "on") or (child.has_sources and e.src = "on")))
%end; %apply;capitalize%with; %apply;married_to%with; %child.is_male; %and; %if;(on_marriage_date != "") %on_marriage_date;%end; %if;(marriage_place != ""), %marriage_place;, %end; %end;%sp; %end; %apply;somebody("spouse")%nn; %if;spouse.has_parents;,%sp; %apply;a_of_b%with; %if;spouse.is_male;[son/daughter/child]0 %else;[son/daughter/child]1%end; %and; %apply;somebody_spouse_parent("father") [and] %apply;somebody_spouse_parent("mother") %end; %end;. %if;are_divorced;[*divorced]0%divorce_date;.%nl; %elseif;are_separated;[*separated]0.%nl; %end; %end; %if;((e.notes = "on" and (child.has_notes or child.has_event) and e.inline = "on") or (e.src = "on" and child.has_sources and e.inline = "on"))

%if;(e.notes = "on" and (child.has_notes or child.has_event)) [*note/notes]0 : %apply;clean_comment_tag(child.notes)
%if;child.has_event;

%foreach;child.event;
%if;event.has_date;%event.date; : %else;--- : %end; | %apply;capitalize(event.name)%sp; %if;event.has_spouse;([with] %event.spouse;)%end; %if;event.has_place; - %event.place; %end; %if;event.has_witnesses; %foreach;event_witness; %apply;capitalize(event_witness_kind) : %apply;short_display_person("event_witness") %end; %end; %if;event.has_note; %event.note; %end; %if;event.has_src;[*source/sources]1: %event.src;%end;
%end;

%end;
%end; %if;(e.src = "on" and child.has_sources) [*source/sources]1 : %foreach;child.source; %source_type;: %apply;clean_comment_tag(source) %if;(not is_last),%sp;%end; %end; %end; %end; %if;((e.notes = "on" and (child.has_notes or child.has_event) or e.src = "on" and child.has_sources) and e.inline != "on") %if;(e.notes = "on")%[[*note/notes]0%sp; %else;%[[*source/sources]1%sp; %end; %ancestor.anc_sosa;%if;("spec" != "")-spec%end;%apply;letter(child_cnt) %]. %end; %end; %end; %define;long_display_ancestor_families() %if;ancestor.is_male; ... %foreach;ancestor.family; %if;(family.index = ancestor.family.index) %apply;married_to%with %ancestor.is_male; %and; %if;(on_marriage_date != "") %on_marriage_date;%end; %if;(marriage_place != ""), %marriage_place;, %end; %end;... %end; %end; %else; %foreach;ancestor.family; %if;(family.index = ancestor.family.index) ... %if;(e.witn = "on" and has_witnesses)([witness/witnesses]1: %foreach;witness; %if;(not is_first),%nl;%end; %apply;link2(witness.var, witness.index) %end;), %end; %if;(e.comm = "on" and (has_comment or has_marriage_note)) (%comment; %if;has_marriage_note; %marriage_note; %end;)%nl; %end; [having as children]:

%foreach;child; %if;(e.siblings = "on" or child.sosa_in_list != "")
1. %apply;child_long_info("")
%end; %end;

%end; %end; %if;(e.siblings = "on") %( father's other children %) %foreach;ancestor.spouse.family; %if;(spouse.index != ancestor.index and nb_children > 0) ... [having as children]%sp; %family.father.sosa_in_list; -(X%family_cnt;):

%foreach;child;
1. %apply;child_long_info(family_cnt)
%end;

%end; %end; %( mother's other children %) %foreach;ancestor.family; %if;(spouse.index != ancestor.spouse.index and nb_children > 0) ... [having as children]%sp; %family.mother.sosa_in_list; -(X%family_cnt;):

%foreach;child;
1. %apply;child_long_info(family_cnt)
%end;

%end; %end; %end; %end; %end; %define;dates_in_interval(xx) %if;(e.after != "" and (xx.birth_date.year = "" and xx.baptism_date.year = "" and xx.death_date.year = "" and xx.burial_date.year = "" and xx.cremated_date.year = "" or xx.birth_date.year != "" and xx.birth_date.year < e.after or xx.baptism_date.year != "" and xx.baptism_date.year < e.after or xx.death_date.year != "" and xx.death_date.year < e.after or xx.burial_date.year != "" and xx.burial_date.year < e.after or xx.cremated_date.year != "" and xx.cremated_date.year < e.after) or e.before != "" and (xx.birth_date.year = "" and xx.baptism_date.year = "" and xx.death_date.year = "" and xx.burial_date.year = "" and xx.cremated_date.year = "" or xx.birth_date.year != "" and xx.birth_date.year > e.before or xx.baptism_date.year != "" and xx.baptism_date.year > e.before or xx.death_date.year != "" and xx.death_date.year > e.before or xx.burial_date.year != "" and xx.burial_date.year > e.before or xx.cremated_date.year != "" and xx.cremated_date.year > e.before))false%nn; %else;true%end; %end; %( Display ascend in table %) %define;table_header()
%reset_count; %if;(e.num="on") № %incr_count; %end; [*person/persons]0 %incr_count; %if;(e.birth="on" and e.birth_place="on") [*birth] %incr_count;%incr_count; %elseif;(e.birth="on" and e.birth_place!="on") [*date of birth] %incr_count; %elseif;(e.birth!="on" and e.birth_place="on") [*birth place] %incr_count; %end; %if;(e.baptism="on" and e.baptism_place="on") [*baptism] %incr_count;%incr_count; %elseif;(e.baptism="on" and e.baptism_place!="on") [*date of baptism] %incr_count; %elseif;(e.baptism!="on" and e.baptism_place="on") [*baptism place] %incr_count; %end; %if;(e.marr="on") [*spouse/spouses]1 %incr_count; %end; %if;((e.marr_date="on" and e.marr_place="on") or (e.marr_date="on" and e.child="on") or (e.marr_place="on" and e.child="on")) %nn; [*marriage/marriages]0%nn; %if;(e.marr_date="on" and e.marr_place="on" and e.child="on") %incr_count;%incr_count;%incr_count;%else;%incr_count;%incr_count;%end; %elseif;(e.marr_date="on" and e.marr_place!="on" and e.child!="on") [*date of marriage] %incr_count; %elseif;(e.marr_date!="on" and e.marr_place="on" and e.child!="on") [*marriage place] %incr_count; %elseif;(e.marr_date!="on" and e.marr_place!="on" and e.child="on") %incr_count; %end; %if;(e.death="on" and e.death_place="on") [*death] %incr_count;%incr_count; %elseif;(e.death="on" and e.death_place!="on") [*date of death] %incr_count; %elseif;(e.death!="on" and e.death_place="on") [*death place] %incr_count; %end; %if;(e.burial="on" and e.burial_place="on") [*burial] %incr_count;%incr_count; %elseif;(e.burial="on" and e.burial_place!="on") [*date of burial] %incr_count; %elseif;(e.burial!="on" and e.burial_place="on") [*burial place] %incr_count; %end; %if;(e.age="on") [*age] %incr_count; %end; %if;(e.occu="on") [*occupation/occupations]1 %incr_count; %end;
%if;(e.birth="on" and e.birth_place="on") [*date/dates]0 [*place] %end; %if;(e.baptism="on" and e.baptism_place="on") [*date/dates]0 [*place] %end; %if;((e.marr_date="on" and e.marr_place="on") or (e.marr_date="on" and e.child="on") or (e.marr_place="on" and e.child="on")) %if;(e.marr_date="on") [*date/dates]0%nn; %end; %if;(e.marr_place="on") [*place]%nn; %end; %if;(e.child="on") %end; %end; %if;(e.death="on" and e.death_place="on") [*date/dates]0 [*place] %end; %if;(e.burial="on" and e.burial_place="on") [*date/dates]0 [*place] %end;
%end; %define;implex() %if;(e.num!="on")
%end; %if;(not cancel_links) %nn; %end;==%nn; %if;(not cancel_links)%end; %if;(e.num="on")
%else;%sp;%end; %if(e.sosab = 16)%ancestor.same.hexa; %elseif(e.sosab = 8)%ancestor.same.octal; %else;%ancestor.same; %end; %end; %define;date_popup(xxx) %let;symb;%if;("xxx"="birth")°%elseif;("xxx"="death" and ancestor.is_dead)†%end;%in; %if;(e.xxx="on") 1 and (e.marr = "on" or e.marr_date = "on" or e.marr_place = "on")) rowspan="%ancestor.nb_families;"%end;> %if;(wizard and not cancel_links) %nn; %if;ancestor.has_xxx_date;%ancestor.slash_xxx_date;%else;%symb;%end;%nn; %else; %if;ancestor.has_xxx_date;%ancestor.slash_xxx_date;%else;%symb;%end; %end; %end; %end; %define;place_popup(xxx) %if;(e.xxx_place="on") 1 and (e.marr = "on" or e.marr_date = "on" or e.marr_place = "on")) rowspan="%ancestor.nb_families;"%end;%sp; class="align-middle%nn; %if;(e.ns=1) %if;(ancestor.has_xxx_note and not ancestor.has_xxx_source) note%nn; %elseif;(not ancestor.has_xxx_note and ancestor.has_xxx_source) source%nn; %elseif;(ancestor.has_xxx_note and ancestor.has_xxx_source) notesource%nn; %end; %end; %if;(e.hl=1) %if;(not ancestor.has_xxx_place and ("xxx"="birth" or (ancestor.is_dead and "xxx"="death"))) table-warning %elseif;(not ancestor.is_dead and "xxx"="death") table-active%end; %end;"%sp; %if;(e.ns=1 and (ancestor.has_xxx_note or ancestor.has_xxx_source)) tabindex="0" data-trigger="focus" data-toggle="popover" data-placement="bottom" data-html="true" data-content='%if;ancestor.has_xxx_note;%apply;capitalize(ancestor.xxx_note)%end; %if;ancestor.has_xxx_source;%if;ancestor.has_xxx_note;

%end;%apply;capitalize(ancestor.xxx_source)%end;' title="%if;(ancestor.has_xxx_note or ancestor.has_xxx_source) %apply;a_of_b%with; %if;(ancestor.has_xxx_note and not ancestor.has_xxx_source)[*note/notes]1%nn; %elseif;(not ancestor.has_xxx_note and ancestor.has_xxx_source)[*source/sources]1%nn; %elseif;(ancestor.has_xxx_note and ancestor.has_xxx_source)[*note/notes]1 [and] [source/sources]1%nn; %end; %and;[xxx]%end; %end;"%nn; %end;>%nn; %if;ancestor.has_xxx_place;%ancestor.xxx_place;%end; %end; %end; %define;table_row() %lazy_force; %if;(level!=0 and ancestor.same="" and (ancestor.first_name!="?" and ancestor.surname!="?"))%incr_count;%end; %( Sosa %) %if;(e.num="on") 1 and (e.marr = "on" or e.marr_date = "on" or e.marr_place = "on")) rowspan="%ancestor.nb_families;"%end;>%nn; %if;(ancestor.anc_sosa!=1 and not cancel_links) %if;ancestor.has_parents; %nn; %else; %nn; %end; %end; %if;(e.sosab = 16)%ancestor.anc_sosa.hexa;%nn; %elseif;(e.sosab = 8)%ancestor.anc_sosa.octal;%nn; %else;%ancestor.anc_sosa;%nn; %end; %if;(ancestor.anc_sosa!=1 and not cancel_links) %end; %if;(ancestor.same != "" and e.repeat = "on" and e.num="on") %apply;implex() %end; %end; %( Ancêtre %) 1 and (e.marr = "on" or e.marr_date = "on" or e.marr_place = "on")) rowspan="%ancestor.nb_families;"%end;%sp; class="align-middle%if;(ancestor.nb_families > 1) border-bottom-0%end;%if;(e.nowrap="on") text-nowrap%end; pl-2%nn; %if;(e.ns=1) %if;(ancestor.has_notes and not ancestor.has_psources) note%nn; %elseif;(not ancestor.has_notes and ancestor.has_psources) source%nn; %elseif;(ancestor.has_notes and ancestor.has_psources) notesource%nn; %end; %end; %if;(e.hl=1 and ("?" is_substr ancestor or ancestor.first_name="N." or ancestor.first_name="Nn" or ancestor.first_name="Xx" or ancestor.first_name="Yy" or ancestor.first_name="Xy")) table-warning%end;"%sp; %if;(e.ns=1 and (ancestor.has_notes or ancestor.has_psources)) tabindex="0" data-trigger="focus" data-toggle="popover" data-placement="right" data-html="true" data-content='%if;(ancestor.has_notes)%apply;clean_comment_tag(ancestor.notes)%end; %if;(ancestor.has_psources) %if;(ancestor.has_notes)

%end; %apply;capitalize(ancestor.psources) %end;'%sp; title="%if;(ancestor.has_notes and not ancestor.has_psources)[*note/notes]1%nn; %elseif;(not ancestor.has_notes and ancestor.has_psources)[*source/sources]1%nn; %elseif;(ancestor.has_notes and ancestor.has_psources)[*note/notes]1 [and] [source/sources]1%nn; %end;"%nn; %end;>
%apply;image_MF("ancestor") %apply;link%with;%ancestor.access;%and;%if;(e.fn=1)%ancestor.first_name; %ancestor.surname;%else;%ancestor;%end;%and;%ancestor.index;%end; %if;(e.tt=1 and ancestor.title!=""), %ancestor.title;%end; %if;(ancestor.same != "" and e.repeat = "on" and e.num!="on") %apply;implex() %end;
%if;(e.im="" and ancestor.has_image) %end;
%( Date de naissance %) %apply;date_popup%with;birth%end; %( Lieu de naissance %) %apply;place_popup%with;birth%end; %( Date de baptême %) %apply;date_popup%with;baptism%end; %( Lieu de baptême %) %apply;place_popup%with;baptism%end; %( Conjoints %) %if;(e.marr = "on") %foreach;ancestor.family; %if;(family_cnt = 1) %apply;image_MF("spouse") %apply;link%with;%spouse.access;%and;%if;(e.fn="on")%spouse.first_name; %spouse.surname;%else;%spouse;%end;%and;%spouse.index;%end; %end; %end; %end; %( Date du mariage %) %if;(e.marr_date = "on") %foreach;ancestor.family; %if;(family_cnt = 1) %if;(wizard and not cancel_links) %nn; %if;(slash_marriage_date != "")%slash_marriage_date;%else; %end; %nn; %else; %slash_marriage_date;%nn; %end; %end; %end; %end; %( Lieu du mariage %) %if;(e.marr_place = "on") %foreach;ancestor.family; %if;(family_cnt = 1) %nn; %if;(marriage_place != "") %marriage_place;%nn; %else; %nn; %end; %end; %end; %end; %( Nombre d'enfants %) %if;(e.child = "on") %if;(ancestor.nb_families = 0) %else; %if;(e.marr = "on" or e.marr_date = "on" or e.marr_place = "on") %foreach;ancestor.family; %if;(family_cnt = 1) %nb_children; %end; %end; %else; %ancestor.nb_children; %end; %end; %end; %( Date du décès %) %apply;date_popup%with;death%end; %( Lieu de naissance %) %apply;place_popup%with;death%end; %( Date de la sépulture %) %apply;date_popup%with;burial%end; %( Lieu de la sépulture %) %apply;place_popup%with;burial%end; %( Âge %) %if;(e.age = "on") 1 and (e.marr = "on" or e.marr_date = "on" or e.marr_place = "on")) rowspan="%ancestor.nb_families;"%end;>%nn; %if;ancestor.computable_death_age;%ancestor.death_age;%end;%nn; %if;ancestor.computable_age;%ancestor.age;%end;%nn; %end; %( Profession %) %if;(e.occu = "on") 1 and (e.marr = "on" or e.marr_date = "on" or e.marr_place = "on")) rowspan="%ancestor.nb_families;"%end;>%nn; %if;(ancestor.has_occupation) %ancestor.occupation%nn; %else; %nn; %end; %end; %end; %define;table_family() %if;(e.marr = "on" or e.marr_date = "on" or e.marr_place = "on") %foreach;ancestor.family; %if;(family_cnt != 1)
%if;(e.marr = "on") %apply;image_MF("spouse") %apply;link%with;%spouse.access;%and;%if;(e.fn="on")%spouse.first_name; %spouse.surname;%else;%spouse;%end;%and;%spouse.index;%end; %end; %if;(e.marr_date = "on") %if;(wizard and not cancel_links) %if;(slash_marriage_date != "")%slash_marriage_date;%else; %end; %nn; %else; %slash_marriage_date; %end; %end; %if;(e.marr_place = "on") %if;(marriage_place != "") %marriage_place; %else; %end; %end; %if;(e.child = "on") %nb_children;%nn; %end;
%end; %end; %end; %end; %define;table_ancestor_to_somebody() %p_of_index.1.mark_descendants; %foreach;ancestor_level; %apply;lazy_print%with;
%nl;[*generation/generations]0 %level;%nl;
%end; %if;(level <= e.l) %foreach;ancestor; %if;(level!=0 and ancestor.same="" and (ancestor.is_descendant or ancestor.spouse.is_descendant)) %lazy_force; %let;l1;%if;(ancestor.is_descendant)class="border border-%if;(ancestor.is_male)info%elseif(ancestor.is_female)danger%end; is_desc_1%ancestor.sex;"%end;%in; %apply;one_line(l1) %end; %end; %end; %end; %end; %define;table_double() %foreach;ancestor_level(l_v) %if;(level>0 and (e.only!="on" or level=l_v))
%nl;[*generation/generations]0 %level;%nl;
%foreach;ancestor %if;(ancestor.same = "")%incr_count;%end; %apply;one_line("") %end; %end; %end;
[*total] : %count;%if;(e.only="on")/%expr(2^l_v) %else;/%expr(2^(l_v+1)-2)%end; [[person/persons]1@(c)]
%end; %( Précision des dates intégrée à l’année en utilisant la syntaxe pour leur saisie dans les formulaires TODO: obtenir les secondes valeurs valeurs jj/mm/aaaa pour les cas « ou | » et « entre .. » %) %define;date_prec_year(xx) %let;dp;%xx_date.prec%in; %if;(dp="<" or dp="ca ")/%elseif;(dp="?")?%end;%nn; %xx_date.year;%nn; %if;(dp=">" or dp="ca ")/%(%elseif;(dp="|" or dp="..")%dp;%)%end;%nn; %end; %( Ligne du tableau ascendant au format CSV %) %define;csv_row(xx) %foreach;xx.family; %if;(xx!=self)%xx.anc_sosa;%else;1%end; ;%xx.first_name; ;%xx.surname; ;%xx.occ; ;%xx.title; ;%xx.birth_date.day; ;%xx.birth_date.month; ;%apply;date_prec_year("xx.birth") ;%xx.birth_place; ;%xx.death_date.day; ;%xx.death_date.month; ;%apply;date_prec_year("xx.death") ;%xx.death_place; ;%xx.occupation; ;%spouse.first_name; ;%spouse.surname; ;%spouse.occ; ;%marriage_date.day; ;%marriage_date.month; ;%apply;date_prec_year("xx.marriage") ;%marriage_place; ;%xx.nb_children; ;%family_cnt; ;%family.index;
%end; %end; %( Main %) %if;(e.templ!="templm")

# %nn; %apply;a_of_b%with; %if;(e.t = "M") %if;(e.evt = "on")[*missing events]%else;[*missing ancestors]%end;%nn; %else; %if;(e.only="on" and e.v<5)%apply;capitalize%with;%apply;gen("v")%end; %else;[*ancestor/ancestors]1%nn; %end; %end; %and; %if;(public_name != "")%public_name;%else;%first_name;%end; %if;(qualifier != "") %qualifier;%end; %sp;%surname; %if;(alias != "") (%alias;)%end; %end; %if;(e.t = "D") [up to] %p_of_index.1; %else; %if;(cancel_links and e.v > 4) %apply;togena(e.v)%end; %end;

%end; %if;((e.t="Z" or e.t="Y" or e.t="X") and not cancel_links) %include;buttons %end; %if;(e.t = "P") %include;perso_short %elseif;(e.t = "N" and e.only = "on") %( short display; only the selected generation %) %reset_count; %foreach;ancestor_at_level; %if;(e.v>=0 and level=e.v)

%nl; %foreach;ancestor;
- %sp; %if;(ancestor.interval != "")%ancestor.interval; %else; %if;(ancestor.same = "")%incr_count;%end; %ancestor.anc_sosa;%sp; %if;(ancestor.same != "")=>%else;-%end;%sp; %apply;link%with;%ancestor.access;%and; %if;(ancestor.same != "")%ancestor.same; %else;%ancestor;%end; %and;%ancestor.index; %end; %if;(ancestor.same = "")%ancestor.title;%ancestor.dates; %else; %sp;(↑) %end; %end;
%nl; %end;

%end; %end;

[*total][:] %count; [[person/persons]0@(c)]

%elseif;(e.t = "N") %( short display %) %let;nb_gen;%apply;min(e.v, max_anc_level)%in;

%apply;togena(nb_gen).

%reset_count; %foreach;ancestor_level(nb_gen) %apply;lazy_print%with; %nl;%if;(level!=0)[*generation/generations]0 %level;%nl;%end;

%nl; %end; %foreach;ancestor; %lazy_force; %if;(ancestor.same = "")%if;(level!=0)%incr_count;%end;%end;
- %nn; %if;(e.sosab = 16)%ancestor.anc_sosa.hexa; %elseif;(e.sosab = 8)%ancestor.anc_sosa.octal; %else;%ancestor.anc_sosa; %end;%sp; %if;(ancestor.same != "")=>%else;-%end;%sp; %apply;link%with;%ancestor.access;%and; %if;(ancestor.same != "")%nn; %if(e.sosab = 16)%ancestor.same.hexa; %elseif(e.sosab = 8)%ancestor.same.octal; %else;%ancestor.same; %end; %else;%ancestor; %end;%and;%ancestor.index; %end; %if;(ancestor.same != "") %sp;(↑)
  %end; %if;(ancestor.same = "")%ancestor.title;%ancestor.dates;%end;
%nl; %end; %if;lazy_printed;

%end; %end;

[*total][:] 1+%count; [[ancestor/ancestors]1@(c)]

%elseif;(e.t = "M" and e.evt = "on") %include;miss_evt %elseif;(e.t = "M" and e.al = "on") %( missing ancestors alphabetically %) %let;nb_gen;%apply;min(e.v, max_anc_level)%in;

%apply;togena(nb_gen) %apply;living_interval_dates(e.after, e.before).

[*sort by/generation/alphabetic order]0 |  | [sort by/generation/alphabetic order]1 |  | [sort by/generation/alphabetic order]2

%empty_sorted_list; %reset_count; %foreach;ancestor_level(nb_gen) %foreach;ancestor; %if;(ancestor.same = "") %if;(ancestor.first_name != "?" and ancestor.surname != "?" and (not ancestor.has_parents or (ancestor.has_families and (ancestor.spouse.first_name = "?" and ancestor.spouse.surname = "?")))) %if;(dates_in_interval(ancestor.var) = "true") %incr_count; %apply;add_in_sorted_list%with %ancestor.surname_end; %and;%ancestor.first_name; %and;%ancestor.surname_begin; %and;%ancestor.access; %and;%apply;image_MF("ancestor") %and;%ancestor.nobility_title; %and;%apply;ancestor_missing_birth("ancestor") %and;%apply;ancestor_missing_death("ancestor") %and; %if;(not ancestor.has_parents) x %else; %end; %and; %if;(ancestor.has_families and (ancestor.spouse.first_name = "?" and ancestor.spouse.surname = "?")) x %else; %end; %end; %end; %end; %end; %end; %end; %let;nb_ind;%count;%in; %reset_count; %if;(nb_ind > 100)

%foreach;sorted_list_item; %if;(initial(prev_item.1) != initial(item.1)) %apply;initial(item.1) %end; %end;

%end;

%if;(nb_ind <= 100)
- %nn; %apply;initial(item.1)

  [*person/persons]0 %if;(e.birth = "on") | [*birth date and birth place] %end; %if;(e.death = "on") | [*death date and death place] %end; | [*missing parents] | [*missing spouse]
  --- | --- | --- | --- | ---
  %end; %foreach;sorted_list_item; %if;(initial(prev_item.1) != initial(item.1) and nb_ind > 100)

- %nn; %apply;initial(item.1)

  [*person/persons]0 %if;(e.birth = "on") | [*birth date and birth place] %end; %if;(e.death = "on") | [*death date and death place] %end; | [*missing parents] | [*missing spouse]
  --- | --- | --- | --- | ---
  %end;
  %if;cancel_links; %item.5;%item.1;%sp;%item.2;%item.3; %else; %item.5;%item.1;%sp;%item.2;%item.3; %end; %if;(item.6 != ""), %item.6;%end; %if;(e.birth = "on") | %item.7; %end; %if;(e.death = "on") | %item.8; %end; | %item.9; %if;(initial(item.9) = "x")%incr_count;%incr_count;%end; | %item.10; %if;(initial(item.10) = "x")%incr_count;%end;
  %if;(initial(item.1) != initial(next_item.1) and nb_ind > 100)

%end; %end; %if;(nb_ind <= 100) %end;

[*total][:] %count; [[person/persons]]1@(c)]

%elseif;(e.t = "M") %( missing ancestors by generation %) %let;nb_gen;%apply;min(e.v, max_anc_level)%in;

%apply;togena(nb_gen) %apply;living_interval_dates(e.after, e.before)

[*sort by/generation/alphabetic order]0 |  | [sort by/generation/alphabetic order]1 |  | [sort by/generation/alphabetic order]2

%reset_count;

[*missing sosa] | [*missing parents] | [*missing spouse] | [*person/persons]0 %if;(e.birth = "on") | [*birth date and birth place] %incr_count; %end; %if;(e.death = "on") | [*death date and death place] %incr_count; %end; %if;(e.spouse = "on") | [*spouse/spouses]1 %incr_count; %end;
--- | --- | --- | --- | --- | --- | ---
%let;nb_col;%expr(count + 4)%in; %reset_count; %foreach;ancestor_level(nb_gen) %apply;lazy_print%with;
[*generation/generations]0 %expr(level+1)
%end; %foreach;ancestor; %if;(ancestor.same = "") %if;(not ancestor.has_parents and ancestor.first_name != "?" and ancestor.surname != "?") %if;(dates_in_interval(ancestor.var) = "true") %incr_count;%incr_count; %lazy_force;
%expr(ancestor.anc_sosa.v * 2) - %expr(ancestor.anc_sosa.v * 2 + 1) | x |  | %apply;image_MF("ancestor") %apply;link(ancestor.access, ancestor, ancestor.index) %ancestor.title; %apply;display_missing_ancestor_info("ancestor")
%end; %elseif;(ancestor.has_parents) %if;(ancestor.father.first_name = "?" and ancestor.father.surname = "?") %if;(dates_in_interval(ancestor.mother.var) = "true") %incr_count; %lazy_force;
%expr(ancestor.anc_sosa.v * 2) |  | x | %apply;image_MF("ancestor.mother") %apply;link(ancestor.mother.access, ancestor.mother, ancestor.mother.index) %ancestor.mother.title; %apply;display_missing_ancestor_info("ancestor.mother")
%end; %end; %if;(ancestor.mother.first_name = "?" and ancestor.mother.surname = "?") %if;(dates_in_interval(ancestor.father.var) = "true") %incr_count; %lazy_force;
%expr(ancestor.anc_sosa.v * 2 + 1) |  | x | %apply;image_MF("ancestor.father") %apply;link(ancestor.father.access, ancestor.father, ancestor.father.index) %ancestor.father.title; %apply;display_missing_ancestor_info("ancestor.father")
%end; %end; %end; %end; %end; %end;

[*total][:] %count; [[person/persons]1@(c)]

%elseif;(e.t = "G" and e.only= "on") %( long display; only the selected generation %) %if;((e.notes = "on" or e.src = "on") and e.inline != "on")

[*see]: [*ancestor/ancestors]1%sp;%nn; %if;((e.notes = "on" or e.src = "on") and e.inline != "on") | [*note/notes]1 %end;

%end; %if;(e.v!=0)

### %apply;capitalize%with;%apply;gen("v")%end;.

%end; %foreach;ancestor_level; %if;(e.v != "" and level = e.v) %foreach;ancestor; %if;(ancestor.same != "")

%ancestor.anc_sosa;: [see] %ancestor.same;.

%else;

%ancestor.anc_sosa; %apply;long_display_ancestor_personal()

%if;(ancestor.index != self.index)

%apply;long_display_ancestor_families()

%end; %end; %end; %end; %end; %if;((e.notes = "on" or e.src = "on") and e.inline != "on")

%apply;long_display_notes()

%end; %elseif;(e.t = "G") %( long display %) %if;((e.notes = "on" or e.src = "on") and e.inline != "on")

[*see]: [*ancestor/ancestors]1%sp;%nn; %if;((e.notes = "on" or e.src = "on") and e.inline != "on") | [*note/notes]1 %end;

%end; %let;nb_gen;%apply;min(e.v, max_anc_level)%in;

%apply;togena(nb_gen).

%foreach;ancestor_level(nb_gen) %if;(level!=0)

### [*generation/generations]0 %level;

%end; %foreach;ancestor; %if;(ancestor.same != "")

%ancestor.anc_sosa;: [see] %ancestor.same;.

%else;

%ancestor.anc_sosa; %apply;long_display_ancestor_personal()

%if;(ancestor.index != self.index)

%apply;long_display_ancestor_families()

%end; %end; %end; %end; %if;((e.notes = "on" or e.src = "on") and e.inline != "on")

%apply;long_display_notes()

%end; %elseif;(e.t = "D") %( ancestors up to somebody %) %p_of_index.1.mark_descendants;

%foreach;ancestor_level; %apply;lazy_print%with;
- [*generation/generations]0 %level;%nl;
  %end; %if;(level <= e.l + 1) %foreach;ancestor; %if;(ancestor.same = "" and ancestor.is_descendant) %lazy_force;
  - [Sosa] %ancestor.anc_sosa; -%sp; %ancestor;%nn; %ancestor.title;%ancestor.dates;
  %end; %end; %end; %if;lazy_printed;
  %nl;
%nl;%end; %end;

%elseif;(e.t = "X" or e.t = "Y") %if;(e.t = "X")

[*only] [up to] %p_of_index.1; %p_of_index.1.dates;

%(%if;(not cancel_links)
%end;%) %end; %reset_count;

%if;(e.t = "X") %apply;table_ancestor_to_somebody() %else; %apply;table_double() %end;

%elseif;(e.t = "Z") %if;(e.csv!="on") %reset_count;

%apply;table_header() %let;nb_col;%count;%in; %reset_count; %foreach;ancestor_level(l_v) %if;(e.only!="on" and e.gen=1 and level!=0)
[*generation/generations]0 %level;
%end; %foreach;ancestor; %if;(e.only!="on" or level=l_v)
%apply;table_row()
%if;(ancestor.nb_families > 1) %apply;table_family() %end; %end; %end; %end;

[*total][:] %if;(e.only!="on")1+%count;/%expr((2^(l_v+1)-2)) %else;%count;/%expr(2^l_v)%end; [[person/persons]1@(c)].
%else;
%( CSV header %) [Sosa]%nn; ;[first name/first names]1%nn; ;[surname/surnames]0%nn; ;occ%nn; ;[title/titles]0%nn; ;[birth]_[year/month/day]2%nn; ;[birth]_[year/month/day]1%nn; ;[birth]_[year/month/day]0%nn; ;[birth]_[place]%nn; ;[death]_[year/month/day]2%nn; ;[death]_[year/month/day]1%nn; ;[death]_[year/month/day]0%nn; ;[death]_[place]%nn; ;[occupation/occupations]1%nn; ;[first name/first names]0_[spouse/spouses]0%nn; ;[surname/surnames]0_[spouse/spouses]0%nn; ;occ_[spouse/spouses]0%nn; ;[marriage/marriages]0_[year/month/day]2%nn; ;[marriage/marriages]0_[year/month/day]1%nn; ;[marriage/marriages]0_[year/month/day]0%nn; ;[marriage/marriages]0_[place]%nn; ;[nb children]%nn; ;family_count%nn; ;family_index%nn;
%reset_count; %foreach;ancestor_level(l_v) %if;(e.only!="on" or (e.only="on" and level=e.v)) %if;(e.gen=1) [*generation/generations]0 %level;
%end; %end; %foreach;ancestor; %if;(level>0 and (e.only!="on" or level=l_v)) %apply;csv_row("ancestor") %end; %end; %end;
%end; %end; %base_trailer; %include;copyr
%include;js