Mensagem subliminar
Genealogia, preliminaridades de amador
enredo: histórias de famı́lia + genealogia + foto∗
importante é o conteúdo (perl: um humilde ajudante)
J.João Almeida
há sempre um espaço para o scripting dar uma ajuda
wikificação
Departamento de Informática
Universidade do Minho
scriptização de templates
2 de Outubro de 2012
JJoão
Genealogia, preliminaridades de amador
1
JJoão
Menu
Genealogia, preliminaridades de amador
2
Introdução
1
Introdução
2
Genealogia
3
Formato GEDCOM
Módulo Gedcom.pm
Exemplo do módulo Gedcom.pm
Demonstração do exemplo get-indivı́duo
4
Wikificação de GedCom
Demonstração do caderno Genealógico
5
Geração de árvores Genealógicas
Demonstração de templates genealógicos
6
Conclusões
7
Fim
JJoão
Genealogia, preliminaridades de amador
Normalmente os estudos ligados à genealogia envolvem:
Estrutura genealógica (GEDCOM)
Várias histórias de famı́lia (LATEX)
Várias histórias da miudagem (LATEX) (no meu caso particular)
Fotos diversas (jpeg + tabela)
um puzle onde se vão juntando novas peças...
JJoão
3
Genealogia
Genealogia, preliminaridades de amador
4
Formato GEDCOM
Sı́ndrome de descendente do D.Afonso Henriques
Algumas ferramenta permitem edição cooperativa:
Formato textual;
Medatada
My-heritage (edição Web de boa qualidade; armadilhado)
geneweb (ocaml; edição Web controlada localmente)
FixMe : Falta completar as ferramentas
Gramps (python)
Indivı́duos
famı́lias
notas
Várias ferramentas exportam formato Gedcom
Normalmente o Gedcom é uma espaço/sintaxe pouco claro para...
fontes
atributos em árvore
associação de Histórias, Biografias, etc
fotos
documentos diversos, recortes
JJoão
Genealogia, preliminaridades de amador
Exemplos diversos nas páginas seguintes
5
JJoão
1
Genealogia, preliminaridades de amador
6
Exemplos Gedcom (cont.)
0 HEAD
1 GEDC
2
VERS 5.5
2
FORM LINEAGE-LINKED
1 CHAR UTF-8
1 LANG Portuguese
1 SOUR MYHERITAGE
2
NAME MyHeritage Family Tree Builder
2
CORP MyHeritage.com
0 @I1@ INDI
1
NAME Duarte /Pereira Dias de Almeida/
2
GIVN Duarte
2
SURN Pereira Dias de Almeida
1
SEX M
1
BIRT
2
DATE 1922
1
FAMS @F1@
1
FAMC @F2@
0 @I2@ INDI
1
NAME José Jo~
ao /Antunes Guimar~
aes Dias de Almeida/
2
GIVN José Jo~
ao
2
SURN Antunes Guimar~
aes Dias de Almeida
1
SEX M
1
FAMS @F43@
1
FAMC @F1@
JJoão
Genealogia, preliminaridades de amador
Pessoa
0
1
2
2
2
@I3@ INDI
NAME Maria Isabel /Antunes Guimar~
aes de Vanconcelos Pignatelli/
GIVN Maria Isabel
SURN Antunes Guimar~
aes de Vanconcelos Pignatelli
_MARNM Antunes Guimar~
aes de Vasconcelos Pignatelli Dias de Almeida
Famı́lia
0
1
1
1
1
1
@F52@ FAM
HUSB @I121@
WIFE @I123@
CHIL @I78@
CHIL @I122@
CHIL @I119@
7
JJoão
Módulo Gedcom.pm
Genealogia, preliminaridades de amador
8
Exemplo do módulo Gedcom.pm
Mostra individuo de uma Gedcom
Paul Johnson
Módulo Perl
use Gedcom;
my $ged
parser de gedcom
funções para processamento de:
= Gedcom->new($gedcom_file);
my @indivs
indivı́duos,
famı́lias
atributos de indivı́duos ou famı́lia
procuras
= $ged->get_individual($ind);
for $i (@indivs){
print $i->name , "\n";
print "Pai:", $i->father->name , "\n";
print "Mae:", $i->mother->name , "\n";
for $f ($i->fams){
print "Cc: ",
$f->wife->name , "\n" ;
for ($f->children){
print "\t* ", $_->name , "\n";
}
}
permite escrever gedcom e XML-gedcom
mecanismos ricos de validação guiados por uma gramática
(alguns problemas com encodings...)
}
JJoão
Genealogia, preliminaridades de amador
9
JJoão
Demonstração do exemplo get-indivı́duo
Genealogia, preliminaridades de amador
10
Wikificação de GedCom
Caderno de genealogia
Gedcom → Zim
Zim (adicionar biografias, histórias, fotos)
...
Zim (corrigir completar inf. genealógica)
Gedcom × individuo → famı́lia do individuo
Zim → GedCom FixMe : falta completar
Zim → HTML
JJoão
Genealogia, preliminaridades de amador
11
JJoão
2
Genealogia, preliminaridades de amador
12
Demonstração do caderno Genealógico
Geração de árvores Genealógicas
... com base em templates LaTeX + Skel::Data → Scriptização de
template
Conversão GedCom → Caderno
1
2
3
4
JJoão
Genealogia, preliminaridades de amador
Construir um template LaTeX para árvores genealógicas:
escrever o exemplo LaTeX
substituir os especı́ficos por parâmetros ([% pai %])
substituir as listas por parâmetros ([% filhos*t2 %])
gerar esqueleto de script (mkskimport)
gen2zim famı́lia.ged
... famı́lia → zim;
zim famı́lia membro
... editar;
zim –export -o Gen-html –template Default –index-page index ./Gen
... builds static html
Gedcom × Indivı́duo → inf-famı́lia
inf-famı́lia × template → pdf
uso do módulo Skel::Data (templates na secção Data)
13
JJoão
Demonstração de templates genealógicos
Genealogia, preliminaridades de amador
14
Conclusões
Template LaTeX
Bricolagem genealógica: é viável
gentree-h3(famı́liax)
Wikificação de estruturas (por vezes com perdas)
Scriptização de templates
Template LaTeX scriptizado
thegentree-h3(getfamı́lia(Duarte Moreira))
JJoão
Genealogia, preliminaridades de amador
15
JJoão
Genealogia, preliminaridades de amador
17
JJoão
Fim
3
Genealogia, preliminaridades de amador
16
1
Geração de árvores genealógicas (demo)
thegentree -t=3h Famjj-j.ged "Constança"
Libania Leopoldina
/Pereira Pimentel da
Mota Castelo-Branco/
Maria da Natividade
/Pimentel de Queiros
Montenegro/
Caetano /Pinto de
Queiros Montenegro/
Maria Constança /da
Cunha Pignatelli Telles de
Vasconcelos/
Maria Constança /de
Queiros Montenegro Pinto
Moreira/
Joana /de Almeida e
Sousa/
Maria Josefa /da Cunha
Pignatelli Telles de
Vasconcelos/
João /Pinto Moreira de
Almeida e Sousa/
João /Pinto Moreira/
Margarida Maxima /da
Cunha Pignatelli Telles de
Vasconcelos/
Maria José /da Cunha
Tavares Osório/
Maria da Natividade /da
Cunha Pignatelli Telles de
Vasconcelos/
António João /Telles
Pereira de Vasconcelos
Pimentel/
Josefa Cândida /da Cunha
Pignatelli Tavares Osório/
Joaquim /da Cunha Freire
Robalo Pignatelli da
Gama Sotomaior/
António /da Cunha
Pignatelli de Tavares
Osório Telles de
Vasconcelos/
António /Telles Pereira de
Vasconcelos Pimentel/
1.1
Estrutura do thegentree
a)Calcula os parâmetros x em função de base-GedCom e do Individuo
b)invoca o template com esses parâmtros
__DATA__
__template1__
... [% x %] ....
__template2__
... [% x %] ....
__template3__
... [% x %] ....
→ gera função template1(x)
→ gera função template3(x)
→ gera função template3(x)
#!/usr/bin/perl -s
our ($pdf,$xpdf,$t);
$t
||= "3h";
$pdf =1 if $xpdf;
my $gedcom_file=shift;
my $ind=shift;
4
use Gedcom;
my $ged
my $i
= Gedcom->new($gedcom_file);
= $ged->get_individual($ind);
use Skel::Data ; skimport();
## import the __DATA_ templates as functions
sub M{ my $a=shift; return undef if not $a; return $a->mother}
sub p{ my $a=shift; return undef if not $a; return $a->father}
sub n{ my $a=shift; return ’’ if not $a; return $a->name || ’’}
open(F, ">","_.tex");
print F treegen3h({
## tree generator horizontal 3
m => n(M $i),
mm => n(M(M $i)), mmm => n(M(M(M $i))), mmp =>
mp => n(p(M $i)), mpm => n(M(p(M $i))), mpp =>
p => n(p $i),
pp => n(p(p $i)), ppm => n(M(p(p $i))), ppp =>
pm => n(M(p $i)), pmm => n(M(M(p $i))), pmp =>
f => [ map { $_->name} $i->famc->children],
}) if ($t eq "3h");
n(p(M(M $i))),
n(p(p(M $i))),
n(p(p(p $i))),
n(p(M(p $i))),
print F treegen2v({
## tree generator Vertical 2
m => n(M $i), mm => n(M(M $i)), mp => n(p(M $i)),
p => n(p $i), pp => n(p(p $i)), pm => n(M(p $i)),
f => n($i),
}) if ($t eq "2v");
print F treegen3v({
## tree generator Vertical 3
m => n(M $i),
mm => n(M(M $i)), mmm => n(M(M(M $i))), mmp => n(p(M(M $i))),
......................
}) if ($t eq "3v");
close F;
‘ppdflatex -Q _.tex‘
‘xpdf _.pdf‘
if $pdf;
if $xpdf;
__DATA__
__treegen3h__
\documentclass[portuges,a4paper]{article}
\usepackage{babel}
............
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{trees,arrows,automata,positioning}
\begin{document}
\def\per#1#2{{#1\\~\hfill #2}}
\def\num#1{node[person,label={[label distance={-3mm},red]172:#1}]}
\def\ppp#1#2#3{\num{#1} {\per{#2}{#3}}}
\begin{tikzpicture}[auto,
edge from parent fork right, grow = right,
node distance=2.2cm,
level distance=4.2cm ,
.............
\node[r] (0) at(5,0) {}
child { node[person] {[%p%]}
child { node[person] {[%pp%]}
child { node[person] {[%ppp%]} }
child { node[person] {[%ppm%]} }
}
.............
5
\node[r] (10) at (8,0) {} [edge from parent fork left,grow=left,
level 1/.style={sibling distance=1.9cm }]
[% f*child %]
\end{tikzpicture}
\end{document}
__child__
child { node [person] {[%filho%]} }
__treegen2v__
\documentclass[portuges,a4paper]{article}
..............
\usepackage{gentree}
..............
\begin{gentreev2}
\father{[%f%]}{[%p%]}{[%pp%]}{[%pm%]}{[%m%]}{[%mp%]}{[%mm%]}
\end{gentreev2}
\end{document}
__treegen3v__
\documentclass[portuges,a4paper]{article}
...............
\begin{gentreev2}
\father{[%p%]}{[%pp%]}{[%ppp%]}{[%ppm%]}{[%pm%]}{[%pmp%]}{[%pmm%]}
\mother{[%m%]}{[%mp%]}{[%mpp%]}{[%mpm%]}{[%mm%]}{[%mmp%]}{[%mmm%]}
\suns[% f*suns2 %]
......
__suns2__
{[%sun%]}
6
Download

Genealogia, preliminaridades de amador Mensagem subliminar