
Estou procurando uma maneira simples de compor uma árvore genealógica em LaTeX.
Em particular, estou interessado em compor o chamado "Ahnentafel", que é uma árvore que mostra a mim, meus pais, meus avós, meus bisavós etc. de filiais dobra em cada nível.
Existe um pacote que pode me ajudar? Tristemente,http://www.ctan.org/topic/genealogyestá vazia.
Observei alguns posts recomendando o TikZ para desenhar árvores. Nunca usei o TikZ e estou relutante em mergulhar nele apenas para esse propósito. Mas se for preciso, devo.
EDITAR:
Aqui está um exemplo do que desejo criar:
Este é um Ahnentafel de 3 gerações.
Responder1
Aqui está outra opção usandoforest
para ilustrar algumas outras de suas características:
\documentclass{standalone}
\usepackage{tabularx}
\usepackage{forest}
\usetikzlibrary{shapes.geometric}
% comment out the following four lines if the Helvet Neue font are not available:
\usepackage{fontspec}
\newfontfamily\namefont[]{Helvetica Neue Condensed Bold}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Mapping=tex-text, Color=textcolor]{Helvetica Neue Light}
\definecolor{color1}{HTML}{FFCB73}
\definecolor{color2}{HTML}{FFA100}
\newcommand\Person[5]{%
{\namefont #1} \\
\begin{tabularx}{4.5cm}[t]{@{}r@{\hspace*{2pt}}X@{}}
b: & #2 \\
& #3 \\
d: & #4 \\
& #5
\end{tabularx}%
}
\begin{document}
\begin{forest}
delay={
for tree={
edge path={
\noexpand\path[\forestoption{edge}]
([xshift=-(6pt-1pt*level)].child anchor) to[out=180,in=0]
([xshift=(6pt-1pt*level)]!u.parent anchor)\forestoption{edge label};
},
if n=1
{fill=color1,shape=tape,tape bend bottom=none}
{if n'=1
{fill=color2,shape=tape,tape bend top=none}
{}
}
}
},
for tree={
line width=3pt,
inner sep=8pt,
draw=brown,
minimum size=1cm,
text width=4.5cm,
child anchor=west,
parent anchor=east,
grow=east,
l sep=2cm,
s sep=10pt,
draw,
anchor=west,
edge={line width=(18pt-3pt*level),line cap=rect,color=brown},
}
[\Person{Abraham /LINCOLN/}{12 Feb 1809}{Hardin (Larue), KY}{15 Apr 1865}{Washington, DC},fill=color2
[\Person{Nancy /HANKS/}{5 Feb 1784}{Campbell Co., Virginia}{5 Oct 1818}{Centryville, Spencer, Ind}
[\Person{Nancy /SHIPLEY/}{ABT 1745}{Pembroke, Wash, ME}{}{Amelia, Amelia, VA}
[\Person{Sarah Or Rachel}{ABT 1723}{}{}{}
]
[\Person{Robert /SHIPLEY/}{ABT 1719}{}{}{}
]
]
[\Person{Joseph /HANKS/}{ABT 1740}{Pembroke, Wash, ME}{}{Amelia, Amelia, VA}
[\Person{Sarah /EVANS/}{ABT 1714}{Pembroke, Wash, ME}{}{}
]
[\Person{John /HANKS/}{22 Oct 1709}{Pembroke, Wash, ME}{6 Sep 1742}{Pembroke, Wash, ME}
]
]
]
[\Person{Thomas /LINCOLN/}{20 Jan 1780}{Rockingham, VA}{17 Jan 1851}{Beechland, Co., KY.}
[\Person{Bethsheba /HERRING/}{1746}{Rockingham, Co., VA.}{}{}
[]
[]
]
[\Person{Abraham /LINCOLN/}{17 May 1744}{Berks, Co., Penn.}{1786}{Jefferson County, KY}
[\Person{Rebecca /FLOWERS/}{30 Mar 1720}{Berks, Co., Penn.}{1806}{Berks, Co., Penn}
]
[\Person{John /LINCOLN/}{3 May 1711}{Freehold, Monmouth, N.J.}{1778}{PA}
]
]
]
]
\end{forest}
\end{document}
O resultado:
Nesta solução, as bordas são curvadas de modo a sugerir uma árvore e a espessura dos galhos diminui automaticamente à medida que o nível aumenta; além disso, homens e mulheres se distinguem pela seleção de diferentes atributos para seus nós (forma, preenchimento); tudo isso é feito na especificação da árvore.
A Helvet Neue
fonte usada no meu exemplo pode ser baixada emrebba pocket
.
Responder2
O recém-lançado pacote genealogytree irá ajudá-lo! Este post mencionou anteriormente a versão 0.10 alpha. Tive que instalar a versão atual manualmente, pois a distribuição atual do Latex está congelada até a nova atualização.
Um exemplo atual do que pode ser feito com o pacote:http://mirrors.ctan.org/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
Não consigo adicionar o MWE desta imagem, porque não consigo analisá-lo sozinho.
Você pode encontrar o pacote aqui:http://www.ctan.org/pkg/genealogytree
Do manual do pacote genealogytree para a versão 0.90 (22/05/2015):
Diagramas de árvore genealógica e genealógica são ferramentas comprovadas para visualizar conexões genéticas e relacionais entre indivíduos. A nomenclatura para estruturas de árvores matemáticas com nós pais e nós filhos é negociada a partir de diagramas familiares históricos. Contudo, mesmo a menor entidade familiar composta por dois pais e vários filhos não é uma árvore matemática, mas um gráfico mais geral. O pacote genealogytree fornece um conjunto de ferramentas para compor essas árvores genealógicas ou, mais precisamente, para compor um conjunto de gráficos especiais para a descrição de estruturas semelhantes a famílias. O pacote usa um algoritmo de layout automático que pode ser personalizado para, por exemplo, priorizar determinados caminhos.
Responder3
Você poderia usar forest
o que aprendi recentemente a usar para diagramas de árvore. Este código deve praticamente tudo aA resposta de Gonzalo Medinaà minha pergunta sobre como usar forest
desta forma:
\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{calc,positioning,backgrounds,arrows.meta}
\usepackage{forest}
\pagestyle{empty}
\begin{document}
\begin{forest}
for tree={
child anchor=west,
parent anchor=east,
grow=east,
draw,
anchor=west,
edge path={
\noexpand\path[\forestoption{edge}]
(.child anchor) -| +(-5pt,0) -- +(-5pt,0) |-
(!u.parent anchor)\forestoption{edge label};
},
}
[Me
[My Father
[My Father's Father
]
[My Father's Mother
]
]
[My Mother
[My Mother's Father
]
[My Mother's Mother
]
]
]
\end{forest}
\end{document}
Responder4
Outra solução indireta. Há alguns anos usei um programa chamado LifeLineshttp://lifelines.sourceforge.netque lê um arquivo GEDCOM (tente pesquisar no Google) e pode produzir uma variedade de relatórios e árvores em formato LaTeX (e outros também).
EDITARAcima, adicionei uma varredura de algumas páginas de saída LaTeX.