Erstellen eines Morphologischen Kastens mit Lualatex

Tabellen und Grafiken erstellen und anordnen


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von Zoid »

Danke, das funktioniert erst mal so. Dann würd auch auf Grundlage davon weiterarbeiten.

Hab im Code noch gesehen, dass dort

Code: Alles auswählen

draw=#1

verwendet wird und die Farbe der Ellipse mit

Code: Alles auswählen

    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },

hinzugefügt wird. Welche Funktion hat dieses #1 genau? Ich kennen es im Ansatz von \newcommand, aber selbst da wird mir die Funktion nicht so wirklich deutlich oder versändlich.


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2226
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von Bartman »

\newcommand:

Parametrisierte TikZ-Stile:

  • Abschnitt 2.8 "Adding a Touch of Style"

  • Abschnitt 12.4 "Using Graphic Options"


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von Zoid »

Ich hab die Grefik soweit aufgearbeitet, wie ich sie vom Informationsgehalt brauche. Leider sprengt sie bei weitem die Grenzen meiner Seite und sieht am Ende vom Layout auch nicht sehr zufiredenstellend aus. Unten der Code mit vergleichbaren Wörterlängen.

Code: Alles auswählen

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}
\setparsizes{0}{0}{0  plus 1fil}	% {Einzug}{Abstand}{Endzeilenleerraum}
\usepackage{tikz}
\usetikzlibrary{fit,matrix,shapes.geometric}
\usepackage{siunitx}
\usepackage[a4paper,lmargin={3cm},rmargin={2cm},tmargin={2,5cm},bmargin={2,5cm}]{geometry}

\begin{document}
\begin{tikzpicture}[
    font=\sffamily,
    circle mark/.style={
        draw=#1,
        shape=rectangle,
        thick,
        inner sep=1pt,
        minimum width=3cm
    },
    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },
    line/.style={red, thick},
    line thick/.style={black, ultra thick}
]
\matrix [
    matrix of nodes,
    nodes={
        draw, 
        minimum width=4.5cm, 
        minimum height=.7cm, 
        anchor=center
    },
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes in empty cells,
    row 1/.style={nodes={draw=none}}
] (m) {
    |[draw]|Merkmal &&&&\\
	xxxxxxx\\ 
	- xxxxxxx & xxxx&xxxxx&xxxxxxxx&xxxx\\
	- xxxxx [\SI{}{\milli\meter}]&x,x&x,x&x,x&x,x\\
	- xxxxxxxxxxx & xxxxxxxxx & xxxxx xxxxxxxxx\\
	xxxxxxxxx\\
	- xxxxxxxxxxxxx&xxxxxxxxxxxx&xxxxxxxxxx\\
	- xxxxxxxxxxxxxx&xxxxxxx&xxx\\
	- xxxxxxxxxxxxxxxxxxxxx&xxxxxxxxxxxxxx&\SI{100}{\celsius}\\
	xxxxxxx&xxxxxxxx&xxxxxxxxxx\\
	xxxxxxxxxx xxxxx&xxxxxxx&xxxxxxxxx\\
	xxxxxxxxxx&xxx xxxxx&xxx xxxxx\\
	xxxxxxxxxxx&xxxxxxxxxx&xxxxxxxxx&xxxxxx\\
	xxxxxxxxxxxxxxxx&xxxxxxx&xxxxxxxx&xxxxxx&xxxxxxxxx\\	
};

\node [draw, fit=(m-1-2)(m-1-5), inner sep=-.5\pgflinewidth, label=center:Ausprägung]{};

\draw [line thick] (m-1-1.north east) -- (m-14-1.south east);
\draw [line thick] (m-1-1.south west) -- (m-1-5.south east);
\draw [line,black] (m-1-5.north east) -- (m-14-5.south east);

\path [nodes=circle mark finish]
    (m-3-3) node (cm1) {\phantom{Ausprägung 1}}
    (m-4-5) node (cm2) {\phantom{Ausprägung 2}}
    (m-5-3) node (cm3) {\phantom{Ausprägung 3}}
    (m-7-3) node (cm4) {\phantom{Ausprägung 4}}
    (m-8-2) node (cm5) {\phantom{Ausprägung 5}}
    (m-9-2) node (cm6) {\phantom{Ausprägung 6}}
    (m-10-2) node (cm7) {\phantom{Ausprägung 7}}
    (m-11-3) node (cm8) {\phantom{Ausprägung 8}}
    (m-12-2) node (cm9) {\phantom{Ausprägung 9}}
    (m-13-4) node (cm10) {\phantom{Ausprägung 10}}
    (m-14-3) node (cm11) {\phantom{Ausprägung 11}}
;
\path [nodes=circle mark unfinish]
;

\draw [line] (cm1.east) -- (cm2.west);
\draw [line] (cm2.west) -- (cm3.east);
\draw [line] (cm3.south) -- (cm4.north);
\draw [line] (cm4.west) -- (cm5.east);
\draw [line] (cm5.south) -- (cm6.north);
\draw [line] (cm6.south) -- (cm7.north);
\draw [line] (cm7.east) -- (cm8.west);
\draw [line] (cm8.west) -- (cm9.east);
\draw [line] (cm9.east) -- (cm10.west);
\draw [line] (cm10.west) -- (cm11.east);
\end{tikzpicture}
\end{document}

Ich denke, ich werde doch nicht drumherum kommen, die vorher ausgeschlossenen Eigenschaften zu implementieren. ich weiß jetzt nicht, ob man die Probleme Stück für Stück abarbeitet oder alles auf einmal, dafür bin ich zu wenig im Denken für Programmierung drinne. (Offtopic: Vielleicht sollte ich auch einfach nochmal ein Zweitstudium aufnehmen und eine weiter Abschlussarbeit über das erstellen dieser Grafik verfassen, Material genug kommt da bestimmt zusammen.)

Ich versuche jetzt die Zellenbreit individuell anzupassen, sodass Zeilen mit geringerer Zellenanzahl sich auf die Breite von Zeilen mit hoher Zellenanzahl anpassen. Zudem versuche ich die Spaltenbreiten auf ein Minimum zu reduzieren und die Schriftart zu verkleinern. Eventuell kann man auch Zeilenumbrüche in den Zellen integrieren.
Fortschritte, sofern ich sie jemals verzeichnen sollte, werde ich einfach hier dokumentieren. Vielleicht hilft es jemandem in Zukunft ein ähnliches Vorhaben umzusetzen oder generell davon abzusehen.


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von Zoid »

Die Schriftgöße konnte ich durch den Zusatz

Code: Alles auswählen

font=\tiny

in die eckige Klammer nach

Code: Alles auswählen

\matrix

verkleinern.

Jetzt habe ich im Tikz Script die Möglichkeit zum Zeilenumbruch gefunden. S. 434 in https://texample.net//media/pgf/builds/ ... -11-04.pdf

Umsetzen konnte ich es, indem ich den

Code: Alles auswählen

\textwidth=

in meinen Code hinzugefügt habe. Dadurch hat sich die Position der Schrift von center auf left geändert. Dies konnte durch

Code: Alles auswählen

align=center

ausgelichen werden.

Code: Alles auswählen

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}
\setparsizes{0}{0}{0  plus 1fil}	% {Einzug}{Abstand}{Endzeilenleerraum}
\usepackage{tikz}
\usetikzlibrary{fit,matrix,shapes.geometric}
\usepackage{siunitx}
\usepackage[a4paper,lmargin={3cm},rmargin={2cm},tmargin={2,5cm},bmargin={2,5cm}]{geometry}

\begin{document}
\begin{tikzpicture}[
    font=\sffamily,
    circle mark/.style={
        draw=#1,
        shape=rectangle,
        thick,
        inner sep=1pt,
        minimum width=1cm
    },
    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },
    line/.style={red, thick},
    line thick/.style={black, ultra thick}
]
\matrix [
    matrix of nodes,
    nodes={
		text width=23mm, 
		draw, 
		minimum width=2.5cm, 
		minimum height=.7cm, 
		anchor=center,
		align=center
    },
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes in empty cells,
    row 1/.style={nodes={draw=none}},
    font=\tiny	% Schriftgröße
] (m) {
    |[draw]|Merkmal &&&&\\
	xxxxxxx\\ 
	- xxxxxxx & xxxx&xxxxx&xxxxxxxx&xxxx\\
	- xxxxx [\SI{}{\milli\meter}]&x,x&x,x&x,x&x,x\\
	- xxxxxxxxxxx & xxxxxxxxx & xxxxx xxxxxxxxx\\
	xxxxxxxxx\\
	- xxxxxxxxxxxxx&xxxxxxxxxxxx&xxxxxxxxxx\\
	- xxxxxxxxxxxxxx&xxxxxxx&xxx\\
	- xxxxxxxxxxxx- xxxxxxxxx&xxxxxxxxxxxxxx&\SI{100}{\celsius}\\
	xxxxxxx&xxxxxxxx&xxxxxxxxxx\\
	xxxxxxxxxx xxxxx&xxxxxxx&xxxxxxxxx\\
	xxxxxxxxxx&xxx xxxxx&xxx xxxxx\\
	xxxxxxxxxxx&xxxxxxxxxx&xxxxxxxxx&xxxxxx\\
	xxxxxxxxxxxxxxxx&xxxxxxx&xxxxxxxx&xxxxxx&xxxxxxx\\	
};

\node [draw, fit=(m-1-2)(m-1-5), inner sep=-.5\pgflinewidth, label=center:Ausprägung]{};

\draw [line thick] (m-1-1.north east) -- (m-14-1.south east);
\draw [line thick] (m-1-1.south west) -- (m-1-5.south east);
\draw [line,black] (m-1-5.north east) -- (m-14-5.south east);

\path [nodes=circle mark finish]
    (m-3-3) node (cm1) {\phantom{Ausprägung 1}}
    (m-4-5) node (cm2) {\phantom{Ausprägung 2}}
    (m-5-3) node (cm3) {\phantom{Ausprägung 3}}
    (m-7-3) node (cm4) {\phantom{Ausprägung 4}}
    (m-8-2) node (cm5) {\phantom{Ausprägung 5}}
    (m-9-2) node (cm6) {\phantom{Ausprägung 6}}
    (m-10-2) node (cm7) {\phantom{Ausprägung 7}}
    (m-11-3) node (cm8) {\phantom{Ausprägung 8}}
    (m-12-2) node (cm9) {\phantom{Ausprägung 9}}
    (m-13-4) node (cm10) {\phantom{Ausprägung 10}}
    (m-14-3) node (cm11) {\phantom{Ausprägung 11}}
;
\path [nodes=circle mark unfinish]
;

\draw [line] (cm1.east) -- (cm2.west);
\draw [line] (cm2.west) -- (cm3.east);
\draw [line] (cm3.south) -- (cm4.north);
\draw [line] (cm4.west) -- (cm5.east);
\draw [line] (cm5.south) -- (cm6.north);
\draw [line] (cm6.south) -- (cm7.north);
\draw [line] (cm7.east) -- (cm8.west);
\draw [line] (cm8.west) -- (cm9.east);
\draw [line] (cm9.east) -- (cm10.west);
\draw [line] (cm10.west) -- (cm11.east);
\end{tikzpicture}
\end{document}

Allerdings sind jetzt die untersten beiden roten Boxen breiter als die anderen, obwohl der Ihnalt nicht mehr ist. Ein ändern von

Code: Alles auswählen

minimum width

bringt leider kein Ergebnis, die Boxen scheinen in ihrer Breite fest zu sein. Woran könnte das liegen? Hab ich irgendwo ein Deteil übersehen?

Unbenannt.PNG

EDIT: Es liegt an folgendem Eintrag:

Code: Alles auswählen

\phantom{Ausprägung 11}

Der wird von der Nummerierung zweizeilig. Kürze ich den ein, dann lässt sich die Breite der Boxen noch weiter reduzieren.


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von Zoid »

Jetzt ist noch eine Frage aufgetaucht:
Ich würde gerne die Zellenhöhe einer Zeile gleichmäßig gestalten. Wie kann ich das machen?
In der ersten Spalte kommt es zu Zeilenumbrüchen, wodurch diese Zellen höher sind. Bei einzeiligen Zellen schrumpft die Höhe dann aber, sofern minimum height dort nicht entgegen wirkt.

Unbenannt.PNG

Wenn sich die Zeilenhöhe bei allen Zellen einer Spalte einheitlich gestalten lassen würde, dann wäre das super.


gast

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von gast »

warum gibst du nicht eine passende minimum height an?


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Re: Erstellen eines Morphologischen Kastens mit Lualatex

Beitrag von Zoid »

gast hat geschrieben:
Di 3. Nov 2020, 14:40

warum gibst du nicht eine passende minimum height an?

Das würde sich auf die Zeilen mit ein und zweizeiligen Wörtern gleichermaßen auswirken, wodurch die Abbildung in ihrer Größe zu viel Platz wegnehmen würde.


Antworten