Stammbaum erstellen

Tabellen und Grafiken erstellen und anordnen


Primorsk
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Mo 13. Jan 2020, 19:50

Stammbaum erstellen

Beitrag von Primorsk »

Hallo,

ich bin auf der Suche nach einer Möglichkeit, wie ich meinen eigenen Stammbaum umsetzen kann so wie in den Beispielbildern gezeigt. Also mit den horizontalen geschwungenen Klammern und Erläuterungen zu den Personen, den römischen Zahlen der Generationen an der Seite etc.
Stammbaum Beispiel 1 mit geschweiften, horizontalen Klammern
Stammbaum Beispiel 1 mit geschweiften, horizontalen Klammern
Beispiel 4.png (93.69 KiB) 4224 mal betrachtet
Stammbaum Beispiel 2 mit geschweiften, horizontalen Klammern
Stammbaum Beispiel 2 mit geschweiften, horizontalen Klammern
Beispiel 7.png (199.02 KiB) 4216 mal betrachtet
Ich habe bisher keine gescheite Lösung gefunden und da fiel mit Latex ein, womit ich vor vielen Jahren mal meine Diplomarbeit geschrieben hatte.

Hat jemand eine Idee, wie man so etwas in Latex umsetzen kann? Oder gibts vielleicht sogar schon einen guten Quellcode?

Danke und Grüße!

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 22. Jul 2020, 20:14

Re: Stammbaum erstellen

Beitrag von cis »

Für derlei Annotationen könnte eine TikZ-matrix geeignet sein; allerdings müsste man dabei sehr viel einstellen, daher ist eine tcolorbox-tcbitemize-Umgebung praktisch.

Als Zusatzpunkt ist es hier angenehmer, wenn man nicht alle Daten in die Umgebung schreibt -was auch sehr unübersichtlich werden würde-, sondern anhand einer schlicht aufgebauten Text-Hilfsdatei des Typs

no, name, geb, gest, beruf, verh, sonst
VIIb, Kaspar Friedrich, 20.9.1735, 9.7.1799, Bürger und Buchmachermeister, Anna Magarete Schacht,
VIIIa, Maria Elisabeth, 25.9.1759, , , ,
.....

eingeben kann. Diese Hilfsdatei kann man z.B. mit pgfplotstable (oder auch datatool) auslesen.

stammbaum01.png

€dit: Umlaute ergänzt. Kleinere Verbesserungen.

\begin{filecontents}[overwrite]{\jobname-data.tex}
no, name, geb, gest, beruf, verh, sonst
VIIb, Kaspar Friedrich, 20.9.1735, 9.7.1799, B{"u}rger und Buchmachermeister, Anna Magarete Schacht,   
VIIIa, Maria Elisabeth, 25.9.1759, , , ,
VIIIb, Johan Joachim Friedrich, 10.3.1761, , , ,
VIIIc, Maria Dorothea, 6.12.1764, , , ,
VIIId, Dorothea Elisabeth, 27.4.1767, , , ,
VIIIe, Katharina Maria Regina, , , , ,
VIIIf, Georg Joachim Dietrich, , , , ,
VIIIg, Kaspar Friedrich, 6.8.1773,15.8.1804 , , ,
VIIIh, Johan Joachim, 11.10.1775, 26.10.1847,B{"u}rger und Buchmachermeister, , Hier als Beispiel eines l{"a}ngeren Eintrages. \end{filecontents} \documentclass[a4paper, landscape]{article} \usepackage[%showframe, margin=2cm, ]{geometry} \usepackage[T1]{fontenc} \usepackage{yfonts} \newcommand\myfont[1]{\textfrak{#1}} \usepackage{bbding} \def\gebsymb{\SixStar} \newcommand\gestsymb{\CrossMaltese} \newcommand\verhsymb{\XSolid} \usepackage{pgfplotstable} \pgfplotsset{compat=1.17} \usepackage{tikz} \usetikzlibrary{decorations.pathreplacing} \usepackage[most]{tcolorbox} \tcbset{ NoGaps/.style={boxsep=3pt, left=0pt, right=0pt, top=0pt, bottom=0pt,}, } \usepackage{mwe} \begin{document} \pgfplotstableread[col sep=comma]{\jobname-data.tex}\stammb \pgfplotstablegetrowsof{\stammb} \pgfmathtruncatemacro{\RowsNo}{\pgfplotsretval-1}
%Zeilennummer max.: \RowsNo \newcommand\pers[1]{% \foreach \n in {0,...,\RowsNo}{% \xdef\myNo{#1}% VIIIa VIIb \pgfplotstablegetelem{\n}{no}\of{\stammb}% %\pgfplotsretval \ifx\pgfplotsretval\myNo%
\xdef\row{\n}% \pgfplotstablegetelem{\row}{name}\of{\stammb}% \xdef\Name{\pgfplotsretval}% \pgfplotstablegetelem{\row}{geb}\of{\stammb}% \xdef\Geb{\ifx \pgfplotsretval\empty \else {\noexpand\gebsymb\,\pgfplotsretval}\fi}% \pgfplotstablegetelem{\row}{gest}\of{\stammb}% \xdef\Gest{\ifx \pgfplotsretval\empty \else {\noexpand\myfont{,} \noexpand\gestsymb\,\pgfplotsretval}\fi}% \pgfplotstablegetelem{\row}{beruf}\of{\stammb}% \xdef\Beruf{\ifx \pgfplotsretval\empty \else {, \pgfplotsretval.}\fi}% \pgfplotstablegetelem{\row}{verh}\of{\stammb}% \xdef\Verh{\ifx \pgfplotsretval\empty \else {\noexpand\verhsymb\,\pgfplotsretval.}\fi}% \pgfplotstablegetelem{\row}{sonst}\of{\stammb}% \xdef\Sonst{\ifx \pgfplotsretval\empty \else {\pgfplotsretval}\fi}% % Output: \myfont{\Name} \\ \Geb \Gest \myfont{\Beruf} \myfont{\Verh} \myfont{\Sonst} \else\fi}} % Test: %\gebsymb %\gestsymb %\verhsymb %\pers{VIIIa} %\pers{VIIb} %\textfrak{This: is: Fraktur} \tcbset{sharp corners,} \begin{tcbitemize}[ raster every box/.style={NoGaps,},
colframe=white, % entweder boxrule=0pt, frame hidden, % oder raster columns=9, raster equal height=rows, raster column skip=3mm, raster row skip=5mm, colback=white, notitle, halign=center, valign=top, remember, % = tikz remember picture ] \tcbitem[] VII. % =============================== \tcbitem[raster multicolumn=8] \pers{VIIb} \tcbitem[] VIII. % =============================== \tcbitem[enhanced, finish={\coordinate[label=] (U) at (frame.north west);},] \pers{VIIIa} \tcbitem[] \pers{VIIIb} \tcbitem[] \pers{VIIIc} \tcbitem[] \pers{VIIId} \tcbitem[enhanced, finish={\coordinate[label=] (A) at (frame.south west);},] \pers{VIIIe} % \tcbitem[enhanced, finish={\coordinate[label=] (B) at (frame.south east);},] \pers{VIIIf} % \tcbitem[] \pers{VIIIg} \tcbitem[enhanced, finish={\coordinate[label=] (V) at (frame.north east);},] \pers{VIIIh} \tcbitem[] IX. % =============================== \tcbitem[enhanced, finish={\coordinate[label=] (P) at (frame.north west);},] \pers{VIIIa} \tcbitem[] \pers{VIIIb} \tcbitem[enhanced, finish={\coordinate[label=] (Q) at (frame.north east);},] \pers{VIIIc} \tcbitem[] \pers{VIIId} \tcbitem[] \pers{VIIIe} \tcbitem[] \pers{VIIIf} \tcbitem[] \pers{VIIIg} \tcbitem[] \pers{VIIIg} \end{tcbitemize} \begin{tikzpicture}[remember picture, overlay, thick] \draw[decorate,decoration={brace, amplitude=10pt}] (U) -- (V); \draw[decorate,decoration={brace, amplitude=10pt}] ([yshift=25mm]B) -- ([yshift=25mm]A) node[fill=none, midway, below=4mm, anchor=north](X1) {\myfont{Zwillinge, \gebsymb} 26.6.1770}; %\node[](X){ooo}; \coordinate[] (X) at ([yshift=-5mm]X1.south); \draw[decorate,decoration={brace, amplitude=10pt}] (P) -- (Q) node[midway, above=3mm] (Y) {}; \draw[] (X1) -- (X) -| (Y); \end{tikzpicture} \end{document}

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 22. Jul 2020, 20:14

Re: Stammbaum erstellen

Beitrag von cis »

Diese Umsetzung, mit kleineren Ergänzungen und Vereinfachungen, orientiert sich stärker an der gezeigten Vorlage im Startpost.
Da die 3. Zeile 16 Spalten enthält, muss in der 2. Zeile (8 Spalten) mit multicolumns gearbeitet werden.

stammbaum02.png
% arara: pdflatex
% arara: pdflatex
% arara: pdflatex

\begin{filecontents}[overwrite]{\jobname-data.tex}
no, name, geb, gest, beruf, verh, sonst
VIIb, Kaspar Friedrich, 20.9.1735, 9.7.1799, B{"u}rger- und Buchmachermeister, Anna Magarete Schacht,   
VIIIa, Maria Elisabeth, 25.9.1759, , , ,
VIIIb, Johan Joachim Friedrich, 10.3.1761, , , ,
VIIIc, Maria Dorothea, 6.12.1764, , , ,
VIIId, Dorothea Elisabeth, 27.4.1767, , , ,
VIIIe, Katharina Maria Regina, , , , ,
VIIIf, Georg Joachim Dietrich, , , , ,
VIIIg, Kaspar Friedrich, 6.8.1773,15.8.1804 , , ,
VIIIh, Johan Joachim, 11.10.1775, 26.10.1847,B{"u}rger und Buchmachermeister, , Hier als Beispiel eines l{"a}ngeren Eintrages. IXa, Johan Gottlieb Friedrich, 6.1.1800, , , ,
IXb, Johan Kaspar Rudolf, 8.5.1802, , , , IXc, Johan Friedrich, 21.8.1804, , , , IXd, Johan Gottlieb Friedrich, 6.1.1800 , , ,{Marie Tuchel; 2. Charlotte Quandt in Pritzwalk. Nachkommen siehe Blatt 6}, IXe, Sophie Dorothea Elisabeth, 6.1.1800, , Nachkommen siehe Blatt 6 , , IXf, Karl Friedrich, 1814, 24.1.1879 , , , IXg, Johan Friedrich Willhelm, 6.1.1800, , , , IXh, Heinrich Gottfried Karl, 6.1.1800, , , , IXi, Charlotte Maria Elisabeth, 6.1.1800, , , , IXk, Willhelmine Maria, 6.1.1800, , , ,{Edelgardt, Tuscherer in Pritzwalk.} IXl, Louis August Willhelm, 6.1.1800, , , , IXm, August Ferdinand, 6.1.1800, , , , IXn, Karl August, 6.1.1800, , ,{Henriette Zick aus Wittstock, {\noexpand\normalfont 27.6.1820} bis {\noexpand\normalfont 15.2.1892}. Nachkommen siehe Blatt 15}, IXo, Ferdinand Gottlieb, 6.1.1800, , , , IXp, Louis Karl, 27.5.1824, {14.9./11. 1824}, , , \end{filecontents} \documentclass[8pt, landscape]{scrartcl} \usepackage[%showframe, margin=2cm, ]{geometry} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{microtype} \usepackage{yfonts} \newcommand\myfont[1]{\textfrak{#1}} \usepackage{bbding} \def\gebsymb{\SixStar} \newcommand\gestsymb{\CrossMaltese} \newcommand\verhsymb{\XSolid} \usepackage{pgfplotstable} \pgfplotsset{compat=1.17} \usepackage{tikz} \usetikzlibrary{decorations.pathreplacing} \usepackage[most]{tcolorbox} \tcbset{ NoGaps/.style={boxsep=3pt, left=0pt, right=0pt, top=0pt, bottom=0pt,}, nwCoord/.style={enhanced, finish={\coordinate[label=] (#1) at (frame.north west);}}, neCoord/.style={enhanced, finish={\coordinate[label=] (#1) at (frame.north east);}}, swCoord/.style={enhanced, finish={\coordinate[label=] (#1) at (frame.south west);}}, seCoord/.style={enhanced, finish={\coordinate[label=] (#1) at (frame.south east);}}, sCoord/.style={enhanced, finish={\coordinate[label=] (#1) at (frame.south);}}, } \usepackage{mwe} \begin{document} \pgfplotstableread[col sep=comma]{\jobname-data.tex}\stammb \pgfplotstablegetrowsof{\stammb} \pgfmathtruncatemacro{\RowsNo}{\pgfplotsretval-1}
%Zeilennummer max.: \RowsNo \newcommand\pers[1]{% \foreach \n in {0,...,\RowsNo}{% \xdef\myNo{#1}% VIIIa VIIb \pgfplotstablegetelem{\n}{no}\of{\stammb}% %\pgfplotsretval \ifx\pgfplotsretval\myNo%
\xdef\row{\n}% \pgfplotstablegetelem{\row}{name}\of{\stammb}% \xdef\Name{\pgfplotsretval}% \pgfplotstablegetelem{\row}{geb}\of{\stammb}% \xdef\Geb{\ifx \pgfplotsretval\empty \else {\noexpand\gebsymb\,\pgfplotsretval}\fi}% \pgfplotstablegetelem{\row}{gest}\of{\stammb}% \xdef\Gest{\ifx \pgfplotsretval\empty \else {\noexpand\myfont{,} \noexpand\gestsymb\,{\pgfplotsretval\noexpand\myfont{.}}}\fi}% \pgfplotstablegetelem{\row}{beruf}\of{\stammb}% \xdef\Beruf{\ifx \pgfplotsretval\empty \else {\pgfplotsretval.}\fi}% \pgfplotstablegetelem{\row}{verh}\of{\stammb}% \xdef\Verh{\ifx \pgfplotsretval\empty \else {\noexpand\verhsymb\,\pgfplotsretval.}\fi}% \pgfplotstablegetelem{\row}{sonst}\of{\stammb}% \xdef\Sonst{\ifx \pgfplotsretval\empty \else {\pgfplotsretval}\fi}% % Output: \myfont{\Name} \\ {\Geb \Gest} \myfont{\Beruf} \myfont{\Verh} \myfont{\Sonst} \else\fi}} % Test: %\gebsymb %\gestsymb %\verhsymb %\pers{VIIIa} %\pers{VIIb} %\textfrak{This: is: Fraktur} \pgfmathsetlengthmacro\RowSep{7mm} \tcbset{sharp corners,} \begin{tcbitemize}[ raster every box/.style={NoGaps,},
colframe=white, % entweder boxrule=0pt, frame hidden, % oder raster columns=16, raster equal height=rows, raster column skip=3mm, raster row skip=\RowSep, colback=white, notitle, halign=center, valign=top, remember, % = tikz[remember picture] %raster row 1/.style={raster row skip=0.5*\RowSep}, % kein Effekt ] \tcbitem[] VII. % ======================= \tcbitem[raster multicolumn=15] \pers{VIIb} \tcbitem[] VIII. % ======================= \tcbitem[raster multicolumn=2, nwCoord=A] \pers{VIIIa} \tcbitem[raster multicolumn=2] \pers{VIIIb} \tcbitem[raster multicolumn=2] \pers{VIIIc} \tcbitem[raster multicolumn=2] \pers{VIIId} \tcbitem[raster multicolumn=1, swCoord=P] \pers{VIIIe} \tcbitem[raster multicolumn=1, seCoord=Q] \pers{VIIIf} \tcbitem[raster multicolumn=2, sCoord=X] \pers{VIIIg} \tcbitem[raster multicolumn=3, neCoord=B] \pers{VIIIh} \\ \rule{0pt}{10mm} \tcbitem[] IX. % ======================= \tcbitem[nwCoord=C] \pers{IXa} \tcbitem[] \pers{IXb} \tcbitem[neCoord=D] \pers{IXc} \tcbitem[nwCoord=E] \pers{IXd} \tcbitem[] \pers{IXe} \tcbitem[] \pers{IXf} \tcbitem[] \pers{IXg} \tcbitem[] \pers{IXh} \tcbitem[] \pers{IXi} \tcbitem[] \pers{IXk} \tcbitem[] \pers{IXl} \tcbitem[] \pers{IXm} \tcbitem[] \pers{IXn} \tcbitem[] \pers{IXo} \tcbitem[neCoord=F] \pers{IXp} \end{tcbitemize} \begin{tikzpicture}[remember picture, overlay, thick, Brace/.style={decorate, decoration={brace, amplitude=10pt}}, ] \draw[Brace] (A) -- (B); \draw[Brace] (C) -- (D) node[midway, above=0.5*\RowSep](Y){}; \draw[Brace,decoration={aspect=0.875}] (E) -- (F); \pgfmathsetlengthmacro\Yshift{2*\RowSep} \draw[Brace] ([yshift=\Yshift]Q) -- ([yshift=\Yshift]P) node[fill=none, midway, below=4mm, anchor=north](X1) {\myfont{Zwillinge, \gebsymb} 26.6.1770}; \draw[] ([yshift=2*\RowSep]X) --([yshift=0.5*\RowSep]X) -| ([yshift=3pt]Y); \end{tikzpicture} \end{document}

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: Stammbaum erstellen

Beitrag von u_fischer »


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 47
Registriert: Mi 22. Jul 2020, 20:14

Re: Stammbaum erstellen

Beitrag von cis »

u_fischer hat geschrieben:
So 2. Aug 2020, 15:25

https://ctan.org/pkg/genealogytree

Das ist interessant. Ich hatte etwas mit tcolorbox gemacht und genealogytree ist vom selben Autor.

Er verwendet auch eine inputmethode \genealogytreeinput.
Was ich will, ist eine sehr schlicht gehaltene Eingabe-Textdatei, wie
VIIb, Kaspar Friedrich, 20.9.1735, 9.7.1799, B{"u}rger und Buchmachermeister, Anna Magarete Schacht,
VIIIa, Maria Elisabeth, 25.9.1759, , , ,

Mal schauen, vielleicht mache ich etwas mit genealogytree.


Antworten