Tikz Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


ProtonLaser
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Mo 12. Dez 2022, 16:32

Tikz

Beitrag von ProtonLaser »

Guten Tag,
wie ihr sehen könnt bin ich neu hier. Mit LateX aber mehr als ein Newbie.

Ich hätte folgende Frage an euch hier in der Runde:
Ich erstelle gerade eine Thesis, in der ein Morphologischer Kasten vorkommen soll, diesen habe ich online gefunden.
Grundsätzlich ist er für mein Vorhaben gut, dennoch habe ich ein zwei Änderungen die ich leider trotz langen Versuche nicht umgesetzt bekomme.
Ersten würde ich gerne, dass zwischen den beiden Linien oben der ganze Bereich grün hinterlegt wird.

Zweitens möchte ich das die diagonale Linie die nach "Lösungsvarianten" aufhört senkrecht nach unten geht und so eine Linie als Abgrenzung bildet.

Wenn es darüber hinaus noch möglich wäre, die Teilfunktionen 1, Teilfunktion 2 usw. die untereinander stehen umbrechen zu lassen, sodass mehr Platz für Bilder entsteht wäre das fantastisch!

Und als letztes, gibt es eine Möglichkeit, die Hintergründe der einzelnen Punkte so zu gestallten, das sie abwechselnd weiß und dann grau sind?

Für eure Hilfe wäre ich sehr, sehr Dankbar und hoffe das ich in Zukunft auch unterstützend hier im Forum helfen kann!
Vielen Dank im Voraus! :)
Hier der Link zum Original Code:viewtopic.php?t=24743
\documentclass[captions=tableheading]{scrreprt}
\usepackage[top=25mm , bottom=25mm , left=25mm , right=25mm , bindingoffset=5mm]{geometry}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{matrix}

\newlength\bildhoehe
\setlength\bildhoehe{2cm}
\newcommand\bildbreite{2cm}
\newcommand\schrift{\footnotesize}% Einstellung für Bildbeschriftungen
\newcommand\zeilenabstand{.75\tabcolsep}

\newcommand\grafik[2]{%
  \begin{minipage}{\bildbreite}
    \centering\raisebox{.5\tabcolsep}{%
      \parbox{\linewidth}{\hspace*{0pt}\raggedright\schrift#1}}\newline%
    \includegraphics[width=\linewidth,height=\bildhoehe]{#2}%
  \end{minipage}%
}

\newcommand\LV{\rule{0pt}{0.5\bildhoehe}}% Stütze, liefert nötige Höhe für Endpunkte

\tikzset{vp/.style={circle,fill,inner sep=3pt}}
\newcommand\verbindungslinie[3]{
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3}
    \draw[#1]([yshift=.5\bildhoehe]\lastp.south)node[vp]{}--([yshift=.5\bildhoehe]\p.south)node[vp]{};
}

\usepackage{mwe}% für example-image
\begin{document}
\begin{center}
  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten}\label{morphKasten} 
    \begin{tikzpicture}[
        very thick,
        nodes={inner sep=\tabcolsep}
      ]
      \matrix[
          matrix of nodes,
          inner sep=0pt,
          nodes={anchor=south},
          row sep=\zeilenabstand,
          column 1/.style={text width={2\tabcolsep+1em},align=right,yshift=0.5\bildhoehe},
          column 2/.style={minimum width=4.5cm,yshift=0.5\bildhoehe}
        ](m){
          1&Teilfunktion 1
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          2&Teilfunktion 2
            &\grafik{längerer Text}{example-image}
            &\grafik{Beispielbild}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\[\tabcolsep]% wegen der Linie
          \ldots&{}
            &\grafik{Text}{example-image}
            &\grafik{Bild mit sehr langem Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          n&Teilfunktion n
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          &&\LV&\LV&\LV&\LV\\
        };
% Kopfzeile
      \node(ul)[anchor=south west] 
        at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west)
        {Teilfunktion};
      \node(or)[anchor=south east] at (ul.north-|m-1-2.east){Lösungsvarianten};
      \foreach[count=\i from 3] \c in {1,2,\ldots,m}
        \node[anchor=base] at (or.base-|m-1-\i){\c};
% Tabellenlinien
      \draw[line width=\lightrulewidth](or.north-|ul.west)--(or.east|-ul.south)
        ([yshift=-\aboverulesep]ul.south-|m.west)
          --([yshift=-\aboverulesep]ul.south-|m.east);
      \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west)
          --([yshift=\belowrulesep]or.north-|m.east)
        ([yshift={-\aboverulesep-\zeilenabstand}]m.south west)
          --([yshift={-\aboverulesep-\zeilenabstand}]m.south east);
% Verbindungslinien
      \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5,m-5-5}
      \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3,m-5-3}
      \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6,m-5-6}
      \foreach \f/\p/\t in {red/m-5-5/LV1,blue/m-5-3/LV2,green/m-5-6/LV3}
        \node[\f,below,font=\bfseries]at(\p){\t};
% vertikale Beschriftung und Tabellenzwischenlinie
      \path(m-1-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{}
        (m-2-1.south west);
      \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m.west|-m-2-3.south)--([yshift=-\tabcolsep]m.east|-m-2-3.south);
    \end{tikzpicture}
  \end{minipage}
\end{center}
\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Tikz

Beitrag von esdd »

\documentclass[captions=tableheading]{scrreprt}
\usepackage[top=25mm , bottom=25mm , left=25mm , right=25mm , bindingoffset=5mm]{geometry}

\usepackage[ngerman]{babel}
%\usepackage[utf8]{inputenc}% wird nicht mehr benötigt
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{backgrounds}

\newlength\bildhoehe
\setlength\bildhoehe{2cm}
\newcommand\bildbreite{2cm}
\newcommand\schrift{\footnotesize}% Einstellung für Bildbeschriftungen
\newcommand\zeilenabstand{.75\tabcolsep}

\newcommand\grafik[2]{%
  \begin{minipage}{\bildbreite}
    \centering\raisebox{.5\tabcolsep}{%
      \parbox{\linewidth}{\hspace*{0pt}\raggedright\schrift#1}}\newline%
    \includegraphics[width=\linewidth,height=\bildhoehe]{#2}%
  \end{minipage}%
}

\newcommand\LV{\rule{0pt}{0.5\bildhoehe}}% Stütze, liefert nötige Höhe für Endpunkte

\tikzset{vp/.style={circle,fill,inner sep=3pt}}
\newcommand\verbindungslinie[3]{
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3}
    \draw[#1]([yshift=.5\bildhoehe]\lastp.south)node[vp]{}--([yshift=.5\bildhoehe]\p.south)node[vp]{};
}

\usepackage{mwe}% für example-image
\begin{document}
\begin{center}
  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten}\label{morphKasten} 
    \begin{tikzpicture}[
        very thick,
        nodes={inner sep=\tabcolsep}
      ]
      \matrix[
          matrix of nodes,
          inner sep=0pt,
          nodes={anchor=south},
          row sep=\zeilenabstand,
          column 1/.style={text width={2\tabcolsep+1em},align=right,yshift=0.5\bildhoehe},
          column 2/.style={text width=2.5cm,yshift=0.5\bildhoehe}
        ](m){
          1&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 1}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          2&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 2}}
            &\grafik{längerer Text}{example-image}
            &\grafik{Beispielbild}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\[\tabcolsep]% wegen der Linie
          \ldots&{}
            &\grafik{Text}{example-image}
            &\grafik{Bild mit sehr langem Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          n&\smash{\parbox[t]{\linewidth}{Teil-\\funktion n}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          &&\LV&\LV&\LV&\LV\\
        };
% Kopfzeile
      \node(ul)[anchor=south west] 
        at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west)
        {Teilfunktion};
      \node(or)[anchor=south east] at (ul.north-|m-1-2.east){\begin{tabular}{@{}l@{}}Lösungs-\\varianten\end{tabular}};
      \foreach[count=\i from 3] \c in {1,2,\ldots,m}
        \node[anchor=base] at (or.base-|m-1-\i){\c};
      \draw[line width=\lightrulewidth]([yshift=\aboverulesep]or.north-|ul.west)--([yshift=-\aboverulesep]or.east|-ul.south) 
        ([yshift=-\aboverulesep]ul.south-|m.west)
          --([yshift=-\aboverulesep]ul.south-|m.east)coordinate(kzr)
          ([yshift=-\aboverulesep]or.south east|-ul.south)--([yshift={-\aboverulesep-\zeilenabstand}]or.south east|-m.south)
        ;
      \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west) coordinate(kzl)
          --([yshift=\belowrulesep]or.north-|m.east)
        ([yshift={-\aboverulesep-\zeilenabstand}]m.south west)
          --([yshift={-\aboverulesep-\zeilenabstand}]m.south east);
% Kopfzeilenhintergrund
      \begin{scope}[on background layer]
        \fill[green](kzl) rectangle (kzr);
      \end{scope}
% Verbindungslinien
      \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5,m-5-5}
      \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3,m-5-3}
      \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6,m-5-6}
      \foreach \f/\p/\t in {red/m-5-5/LV1,blue/m-5-3/LV2,green/m-5-6/LV3}
        \node[\f,below,font=\bfseries]at(\p){\t};
% vertikale Beschriftung und Tabellenzwischenlinie
      \path(m-1-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{}
        (m-2-1.south west);
      \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m.west|-m-2-3.south)--([yshift=-\tabcolsep]m.east|-m-2-3.south);
    \end{tikzpicture}
  \end{minipage}
\end{center}
\end{document}
Welche Hintergründe weiß und grau sein sollen, habe ich nicht verstanden.

PS: Das Original stammt ursprünglich von TeXwelt Wie kann ich mit TikZ die Lösungsvarianten im morphologischen Kasten in Gruppen zusammenfassen?
oder
Wie kann ich mit TikZ die Lösungsvarianten im morphologischen Kasten zeichnen?

ProtonLaser
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Mo 12. Dez 2022, 16:32

Re: Tikz

Beitrag von ProtonLaser »

Vielen, vielen lieben Dank für deine Antwort!
Du kannst dir gar nicht vorstellen wie sehr mir das geholfen hat.

Ich hätte noch zwei weiter Fragen.

Wie kann ich die Kästchen der Fotos größer machen ?

Und wie bekomme ich einen "Rahmen" um das ganze , sodass ein Kasten entsteht also quasi zwei senkrechte Linien rechts und links?

Danke im Voraus!

Und nochmals vielen Dank für deine Hilfe!

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Tikz

Beitrag von esdd »

Die Größe der Bildchen wird in den Zeilen 12 (\bildhöhe) und 13 (\bildbreite) festgelegt.

Die linke und rechte Begrenzungslinie habe ich dir in folgendem Beispiel eingefügt:
\documentclass[captions=tableheading]{scrreprt}
\usepackage[top=25mm , bottom=25mm , left=25mm , right=25mm , bindingoffset=5mm]{geometry}

\usepackage[ngerman]{babel}
%\usepackage[utf8]{inputenc}% wird nicht mehr benötigt
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{backgrounds}

\newlength\bildhoehe
\setlength\bildhoehe{2cm}% Höhe der Bildchen
\newcommand\bildbreite{2cm}% Breite der Bildchen
\newcommand\schrift{\footnotesize}% Einstellung für Bildbeschriftungen
\newcommand\zeilenabstand{.75\tabcolsep}

\newcommand\grafik[2]{%
  \begin{minipage}{\bildbreite}
    \centering\raisebox{.5\tabcolsep}{%
      \parbox{\linewidth}{\hspace*{0pt}\raggedright\schrift#1}}\newline%
    \includegraphics[width=\linewidth,height=\bildhoehe]{#2}%
  \end{minipage}%
}

\newcommand\LV{\rule{0pt}{0.5\bildhoehe}}% Stütze, liefert nötige Höhe für Endpunkte

\tikzset{vp/.style={circle,fill,inner sep=3pt}}
\newcommand\verbindungslinie[3]{
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3}
    \draw[#1]([yshift=.5\bildhoehe]\lastp.south)node[vp]{}--([yshift=.5\bildhoehe]\p.south)node[vp]{};
}

\usepackage{mwe}% für example-image
\begin{document}
\begin{center}
  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten}\label{morphKasten} 
    \begin{tikzpicture}[
        very thick,
        nodes={inner sep=\tabcolsep}
      ]
      \matrix[
          matrix of nodes,
          inner sep=0pt,
          nodes={anchor=south},
          row sep=\zeilenabstand,
          column 1/.style={text width={2\tabcolsep+1em},align=right,yshift=0.5\bildhoehe},
          column 2/.style={text width=2.5cm,yshift=0.5\bildhoehe}
        ](m){
          1&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 1}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          2&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 2}}
            &\grafik{längerer Text}{example-image}
            &\grafik{Beispielbild}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\[\tabcolsep]% wegen der Linie
          \ldots&{}
            &\grafik{Text}{example-image}
            &\grafik{Bild mit sehr langem Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          n&\smash{\parbox[t]{\linewidth}{Teil-\\funktion n}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          &&\LV&\LV&\LV&\LV\\% nur nötig, wenn es Endpunkte unterhalb der Bildchen gibt
        };
% Kopfzeile
      \node(ul)[anchor=south west] 
        at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west)
        {Teilfunktion};
      \node(or)[anchor=south east] at (ul.north-|m-1-2.east){\begin{tabular}{@{}l@{}}Lösungs-\\varianten\end{tabular}};
      \foreach[count=\i from 3] \c in {1,2,\ldots,m}
        \node[anchor=base] at (or.base-|m-1-\i){\c};
      \draw[line width=\lightrulewidth]([yshift=\aboverulesep]or.north-|ul.west)--([yshift=-\aboverulesep]or.east|-ul.south) 
        ([yshift=-\aboverulesep]ul.south-|m.west)
          --([yshift=-\aboverulesep]ul.south-|m.east)coordinate(kzr)
          ([yshift=-\aboverulesep]or.south east|-ul.south)--([yshift={-\aboverulesep-\zeilenabstand}]or.south east|-m.south)
        ;
      \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west) coordinate(kzl)
          --([yshift=\belowrulesep]or.north-|m.east)% obere Begrezung
        ([yshift={-\aboverulesep-\zeilenabstand}]m.south west)
          --([yshift={-\aboverulesep-\zeilenabstand}]m.south east)coordinate(fzr)% untere Begrenzung
        (kzl)--(kzl|-fzr)% linke Begrenzung
        (kzl-|fzr)--(fzr)% rechte Begrenzung
        ;
% Kopfzeilenhintergrund
      \begin{scope}[on background layer]
        \fill[green](kzl) rectangle (kzr);
      \end{scope}
% Verbindungslinien
      \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5,m-5-5}
      \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3,m-5-3}
      \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6,m-5-6}
      \foreach \f/\p/\t in {red/m-5-5/LV1,blue/m-5-3/LV2,green/m-5-6/LV3}
        \node[\f,below,font=\bfseries]at(\p){\t};
% vertikale Beschriftung und Tabellenzwischenlinie
      \path(m-1-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{}
        (m-2-1.south west);
      \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m.west|-m-2-3.south)--([yshift=-\tabcolsep]m.east|-m-2-3.south);
    \end{tikzpicture}
  \end{minipage}
\end{center}
\end{document}

ProtonLaser
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Mo 12. Dez 2022, 16:32

Re: Tikz

Beitrag von ProtonLaser »

Vielen, vielen lieben Dank für deine Hilfe!

ProtonLaser
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Mo 12. Dez 2022, 16:32

Re: Tikz

Beitrag von ProtonLaser »

Ich hätte noch eine weiter Frage:

In der letzten Zeile (n) des Morphologischen Kastens ende die bunten Linien.
Ich habe nun folgendes Problem:
Wie kann ich die "Lösungsvarianten - LV" so neben den Punkten positionieren, sodass wenn ich mehrere Lösungsvarianten habe, die an einem Punkte Ende nicht übereinander gelegt werden?
Ich würde es gerne erreichen, das ich das "LV" neben, drüber oder unter dem Endpunkt der Linie positionieren kann.

Ich hoffe meine Anliegen wird deutlich bzw. ist verständlich erklärt.

Danke im Voraus für Hilfe!

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Tikz

Beitrag von esdd »

Dann musst du den Teil
% Verbindungslinien
      \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5,m-5-5}
      \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3,m-5-3}
      \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6,m-5-6}
      \foreach \f/\p/\t in {red/m-5-5/LV1,blue/m-5-3/LV2,green/m-5-6/LV3}
        \node[\f,below,font=\bfseries]at(\p){\t};
entsprechend Deinen Wünschen anpassen.

Beispiel:
\documentclass[captions=tableheading]{scrreprt}
\usepackage[top=25mm , bottom=25mm , left=25mm , right=25mm , bindingoffset=5mm]{geometry}

\usepackage[ngerman]{babel}
%\usepackage[utf8]{inputenc}% wird nicht mehr benötigt
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{backgrounds}

\newlength\bildhoehe
\setlength\bildhoehe{2cm}% Höhe der Bildchen
\newcommand\bildbreite{2cm}% Breite der Bildchen
\newcommand\schrift{\footnotesize}% Einstellung für Bildbeschriftungen
\newcommand\zeilenabstand{.75\tabcolsep}

\newcommand\grafik[2]{%
  \begin{minipage}{\bildbreite}
    \centering\raisebox{.5\tabcolsep}{%
      \parbox{\linewidth}{\hspace*{0pt}\raggedright\schrift#1}}\newline%
    \includegraphics[width=\linewidth,height=\bildhoehe]{#2}%
  \end{minipage}%
}

\newcommand\LV{\rule{0pt}{0.5\bildhoehe}}% Stütze, liefert nötige Höhe für Endpunkte

\tikzset{vp/.style={circle,fill,inner sep=3pt}}
\newcommand\verbindungslinie[3]{
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3}
    \draw[#1]([yshift=.5\bildhoehe]\lastp.south)node[vp]{}--([yshift=.5\bildhoehe]\p.south)node[vp]{};
}

\usepackage{mwe}% für example-image
\begin{document}
\begin{center}
  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten}\label{morphKasten} 
    \begin{tikzpicture}[
        very thick,
        nodes={inner sep=\tabcolsep}
      ]
      \matrix[
          matrix of nodes,
          inner sep=0pt,
          nodes={anchor=south},
          row sep=\zeilenabstand,
          column 1/.style={text width={2\tabcolsep+1em},align=right,yshift=0.5\bildhoehe},
          column 2/.style={text width=2.5cm,yshift=0.5\bildhoehe}
        ](m){
          1&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 1}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          2&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 2}}
            &\grafik{längerer Text}{example-image}
            &\grafik{Beispielbild}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\[\tabcolsep]% wegen der Linie
          \ldots&{}
            &\grafik{Text}{example-image}
            &\grafik{Bild mit sehr langem Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          n&\smash{\parbox[t]{\linewidth}{Teil-\\funktion n}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          &&\LV&\LV&\LV&\LV\\% nur nötig, wenn es Endpunkte unterhalb der Bildchen gibt
        };
% Kopfzeile
      \node(ul)[anchor=south west] 
        at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west)
        {Teilfunktion};
      \node(or)[anchor=south east] at (ul.north-|m-1-2.east){\begin{tabular}{@{}l@{}}Lösungs-\\varianten\end{tabular}};
      \foreach[count=\i from 3] \c in {1,2,\ldots,m}
        \node[anchor=base] at (or.base-|m-1-\i){\c};
      \draw[line width=\lightrulewidth]([yshift=\aboverulesep]or.north-|ul.west)--([yshift=-\aboverulesep]or.east|-ul.south) 
        ([yshift=-\aboverulesep]ul.south-|m.west)
          --([yshift=-\aboverulesep]ul.south-|m.east)coordinate(kzr)
          ([yshift=-\aboverulesep]or.south east|-ul.south)--([yshift={-\aboverulesep-\zeilenabstand}]or.south east|-m.south)
        ;
      \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west) coordinate(kzl)
          --([yshift=\belowrulesep]or.north-|m.east)% obere Begrezung
        ([yshift={-\aboverulesep-\zeilenabstand}]m.south west)
          --([yshift={-\aboverulesep-\zeilenabstand}]m.south east)coordinate(fzr)% untere Begrenzung
        (kzl)--(kzl|-fzr)% linke Begrenzung
        (kzl-|fzr)--(fzr)% rechte Begrenzung
        ;
% Kopfzeilenhintergrund
      \begin{scope}[on background layer]
        \fill[green](kzl) rectangle (kzr);
      \end{scope}
% Verbindungslinien
      \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5,m-5-5}
      \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3,m-5-3}
      \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6,m-5-6}
      \foreach \f/\p/\t in {red/m-5-5/LV1,green/m-5-6/LV3}% <- geändert
        \node[\f,below,font=\bfseries]at(\p){\t};
      \node[blue,right,font=\bfseries]at([yshift=.5\bildhoehe]m-5-3.south){LV2};% <- hinzugefügt
% vertikale Beschriftung und Tabellenzwischenlinie
      \path(m-1-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{}
        (m-2-1.south west);
      \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m.west|-m-2-3.south)--([yshift=-\tabcolsep]m.east|-m-2-3.south);
    \end{tikzpicture}
  \end{minipage}
\end{center}
\end{document}

ProtonLaser
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Mo 12. Dez 2022, 16:32

Re: Tikz

Beitrag von ProtonLaser »

Guten Tag ,
auch hier möchte ich mich erneut für Ihre Hilfe bedanken!
Es hat mir viel gebracht und Zeit gespart- DANKE dafür!

Ich hätte noch eine weiter Frage und zwar möchte ich die verschiedenen Lösungslinien, die alle in der sechsten Reihe Ende so platzieren, das sie sich nicht überlappen.
Es liegen zB. LV1 über LV2 die Lösungen haben unterschiedliche Farben jedoch kann man leider nicht genau erkennen um welche Lösungen es sich handelt.

Wie bekomme ich es hin, das die "LV" die in der gleichen Zeile und Spalte enden so platziere, das diese nebeneinander erkennbar stehen?


vielen Dank im voraus für eine Hilfe!

VG

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Tikz

Beitrag von esdd »

Dann musst du halt das letzte Verbindungsstück separat zeichnen und die letzten Knoten und Beschriftungen von Hand platzieren.
\documentclass[captions=tableheading]{scrreprt}
\usepackage[top=25mm , bottom=25mm , left=25mm , right=25mm , bindingoffset=5mm]{geometry}

\usepackage[ngerman]{babel}
%\usepackage[utf8]{inputenc}% wird nicht mehr benötigt
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{backgrounds}

\newlength\bildhoehe
\setlength\bildhoehe{2cm}% Höhe der Bildchen
\newcommand\bildbreite{2cm}% Breite der Bildchen
\newcommand\schrift{\footnotesize}% Einstellung für Bildbeschriftungen
\newcommand\zeilenabstand{.75\tabcolsep}

\newcommand\grafik[2]{%
  \begin{minipage}{\bildbreite}
    \centering\raisebox{.5\tabcolsep}{%
      \parbox{\linewidth}{\hspace*{0pt}\raggedright\schrift#1}}\newline%
    \includegraphics[width=\linewidth,height=\bildhoehe]{#2}%
  \end{minipage}%
}

\newcommand\LV{\rule{0pt}{0.5\bildhoehe}}% Stütze, liefert nötige Höhe für Endpunkte

\tikzset{vp/.style={circle,fill,inner sep=3pt}}
\newcommand\verbindungslinie[3]{
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3}
    \draw[#1]([yshift=.5\bildhoehe]\lastp.south)node[vp]{}--([yshift=.5\bildhoehe]\p.south)node[vp]{};
}
\newcommand\verbindungsendlinie[5][]{%
  \draw[#2]([yshift=.5\bildhoehe]#3.south)node[vp]{}--([yshift=.5\bildhoehe,#1]#4.south)node[vp,font=\bfseries,label={#5}]{};
}

\usepackage{mwe}% für example-image
\begin{document}
\begin{center}
  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten}\label{morphKasten} 
    \begin{tikzpicture}[
        very thick,
        nodes={inner sep=\tabcolsep}
      ]
      \matrix[
          matrix of nodes,
          inner sep=0pt,
          nodes={anchor=south},
          row sep=\zeilenabstand,
          column 1/.style={text width={2\tabcolsep+1em},align=right,yshift=0.5\bildhoehe},
          column 2/.style={text width=2.5cm,yshift=0.5\bildhoehe}
        ](m){
          1&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 1}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          2&\smash{\parbox[t]{\linewidth}{Teil-\\funktion 2}}
            &\grafik{längerer Text}{example-image}
            &\grafik{Beispielbild}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\[\tabcolsep]% wegen der Linie
          \ldots&{}
            &\grafik{Text}{example-image}
            &\grafik{Bild mit sehr langem Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          n&\smash{\parbox[t]{\linewidth}{Teil-\\funktion n}}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}
            &\grafik{Text}{example-image}\\
          &&\LV&\LV&\LV&\LV\\% nur nötig, wenn es Endpunkte unterhalb der Bildchen gibt
        };
% Kopfzeile
      \node(ul)[anchor=south west] 
        at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west)
        {Teilfunktion};
      \node(or)[anchor=south east] at (ul.north-|m-1-2.east){\begin{tabular}{@{}l@{}}Lösungs-\\varianten\end{tabular}};
      \foreach[count=\i from 3] \c in {1,2,\ldots,m}
        \node[anchor=base] at (or.base-|m-1-\i){\c};
      \draw[line width=\lightrulewidth]([yshift=\aboverulesep]or.north-|ul.west)--([yshift=-\aboverulesep]or.east|-ul.south) 
        ([yshift=-\aboverulesep]ul.south-|m.west)
          --([yshift=-\aboverulesep]ul.south-|m.east)coordinate(kzr)
          ([yshift=-\aboverulesep]or.south east|-ul.south)--([yshift={-\aboverulesep-\zeilenabstand}]or.south east|-m.south)
        ;
      \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west) coordinate(kzl)
          --([yshift=\belowrulesep]or.north-|m.east)% obere Begrezung
        ([yshift={-\aboverulesep-\zeilenabstand}]m.south west)
          --([yshift={-\aboverulesep-\zeilenabstand}]m.south east)coordinate(fzr)% untere Begrenzung
        (kzl)--(kzl|-fzr)% linke Begrenzung
        (kzl-|fzr)--(fzr)% rechte Begrenzung
        ;
% Kopfzeilenhintergrund
      \begin{scope}[on background layer]
        \fill[green](kzl) rectangle (kzr);
      \end{scope}
% Verbindungslinien
      \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5}%,m-5-5}
      \verbindungsendlinie[xshift=10pt]{red}{m-4-5}{m-5-4}{[anchor=135]below:LV1}
      \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3}%,m-5-3}
      \verbindungsendlinie[xshift=-10pt]{blue}{m-4-3}{m-5-4}{[anchor=45]below:LV2}% letzte Verbindung
      \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6}%,m-5-6}
      \verbindungsendlinie{green}{m-4-6}{m-5-6}{below:LV3}
% vertikale Beschriftung und Tabellenzwischenlinie
      \path(m-1-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{}
        (m-2-1.south west);
      \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m.west|-m-2-3.south)--([yshift=-\tabcolsep]m.east|-m-2-3.south);
    \end{tikzpicture}
  \end{minipage}
\end{center}
\end{document}

ProtonLaser
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Mo 12. Dez 2022, 16:32

Re: Tikz

Beitrag von ProtonLaser »

Vielen Dank!

Hat funktioniert und mir sehr geholfen!

Nochmals DANKE!!

Antworten