Morphologischer Kasten mit TikZ

Tabellen und Grafiken erstellen und anordnen


ocir
Forum-Century
Forum-Century
Beiträge: 122
Registriert: Do 22. Jun 2017, 17:14

Beitrag von ocir »

Wirklich niemand? :(

Leider muss die Arbeit morgen in den Druck. Es ist zwar nur ein Schönheitsfehler, aber es wäre schon schön, wenn man den noch ausbessern kann.

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

Beitrag von esdd »

Mir ist jetzt nicht klar, was Du suchst. Vielleicht:
\documentclass[
BCOR=5mm,           
DIV=10,             
fontsize=12pt,      
oneside,            
parskip,            
bibliography=totoc, 
listof=totoc,      
fleqn                     
]{scrbook} 
\usepackage[utf8]{inputenc}
\usepackage{booktabs} 
\usepackage{tikz} 
\usetikzlibrary{matrix} 

\newlength\bildhoehe
\setlength\bildhoehe{1.5cm}
\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[b]{\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}    

\begin{document}
\begin{minipage}{\linewidth}
    \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.4\bildhoehe},
          column 2/.style={text width=4.0cm,yshift=0.4\bildhoehe},
          row 2/.style={nodes={anchor=base}}% <- ergänzt
        ](m){
          1&erste Teilfunktion
            &\grafik{Kegelpfanne u. Kugelscheibe}{example-image}
            &\grafik{Abdrück\-schraube}{example-image}% <- geändert
            &\grafik{Keil}{example-image}
            &\grafik{Fühler\-lehrenband}{example-image}\\% <- geändert
          |[yshift=-.4\bildhoehe]|2&|[yshift=-.4\bildhoehe]|zweite Teilfunktion% <- geändert
             &formschlüssig% <- geändert
             &kraftschlüssig% <- geändert
             &reibschlüssig% <- geändert
             &\\
          3&dritte Teilfunktion
            &\grafik{Hier steht Text}{example-image}
            &\grafik{Hier steht Text}{example-image}
            &\grafik{}{example-image}
            &\grafik{}{example-image}\\[\tabcolsep]% wegen der Linie
          4&vierte Teilfunktion
            &\grafik{Kegelpfanne u. Kugelscheibe}{example-image}
            &\grafik{Gelenkteller}{example-image}
            &\grafik{Keil}{example-image}
            &\grafik{}{example-image}\\[\dimexpr\tabcolsep+\normalbaselineskip\relax] 
          5&fünfte Teilfunktion
            &\grafik{Direkt mit Rohr}{example-image}
            &\grafik{Teil eingeschweißt}{example-image}
            &\grafik{rückseitig verschraubt}{example-image}
            &\grafik{Nutenstein}{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 {A,B,C,D}
        \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-3,m-3-3,m-4-4,m-5-4,m-6-4}
      \verbindungslinie{blue}{m-1-3}{m-2-3,m-3-3,m-4-3,m-5-6,m-6-6}
      \verbindungslinie{green}{m-1-5}{m-2-5,m-3-4,m-4-5,m-5-5,m-6-5}
      \verbindungslinie{orange}{m-1-4}{m-2-3,m-3-3,m-4-4,m-5-3,m-6-3}
      \foreach \f/\p/\t in {red/m-6-4/erprobt,blue/m-6-6/kostengünstig,green/m-6-5/innovativ,orange/m-6-3/zuverlässig}
      \node[\f,below,font=\bfseries]at(\p){\t};
%-----------------------------------------------------------------------------------------
% vertikale Beschriftung und Tabellenzwischenlinie
      \path(m-1-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{Hier steht Text}
        (m-3-1.south west);
      \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m.west|-m-3-3.south)--([yshift=-\tabcolsep]m.east|-m-3-3.south);
      \path(m-4-1.north west)--
         node[xshift=\zeilenabstand,rotate=90]{Hier auch}
        (m-5-1.south west);
        \draw[line width=\lightrulewidth]([yshift=-\tabcolsep]m-4-3.south west)--([yshift=-\tabcolsep]m.east|-m-4-3.south)node[pos=.5,below]{Hier steht Text};
    \end{tikzpicture}
    \captionof{table}{Morphologischer Kasten}\label{morphKasten} 
  \end{minipage}
  \end{document}

ocir
Forum-Century
Forum-Century
Beiträge: 122
Registriert: Do 22. Jun 2017, 17:14

Beitrag von ocir »

Genau, exakt so sollte es werden :)

Besten Dank :)

Antworten