Tikzpicture - Morphologischer Kasten, Tabellenbreite

Tabellen und Grafiken erstellen und anordnen


Bachi
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mi 30. Mär 2016, 12:19

Tikzpicture - Morphologischer Kasten, Tabellenbreite

Beitrag von Bachi »

Hallo in die Runde,

ich habe die Herausforderung, dass ich in einer tikzpicture-Matrix zwar alles hinbekomme habe, was man für einen Morphologischen Kasten braucht (Matrix an sich zzgl. der Kennzeichnung der Lösungsvarianten), aber ich bin ratlos, wie ich
a) einen Zeilenumbruch in den Spalten erzeugen kann und
b) die Spalte linksbündig ausrichten kann.

Problem ist beim aktuellen Stand, dass die Matrix (selbst bei sehr kleiner Schrift) über die Seite "hinauswandert".

Anbei der Code (nach Rückmeldung von Bartman jetzt auch hier korrigiert):
\RequirePackage{fix-cm}
\documentclass[a4paper,,12pt, ngerman]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[automark]{scrpage2} %%%%%KOpfzeile
\pagestyle{scrheadings}	%%%%%KOpfzeile
\clearscrheadfoot			%%%%%KOpfzeile
\ofoot{\pagemark}		%%%%%KOpfzeile
\ohead[\pagemark]{\headmark}		%%%%%KOpfzeile
\automark[chapter]{section}	%%%%%KOpfzeile
\automark[section]{subsection}

\usepackage{setspace}
\onehalfspacing
\usepackage{blindtext}
\usepackage{mdwlist}
\usepackage{geometry}
\geometry{width=15cm, left=3cm, right=4cm, top=2.5cm, bottom=2.5cm}
\usepackage{graphicx}
\usepackage{float}
\usepackage{longtable}
\usepackage{xcolor}
\usepackage{standalone}

\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{positioning,shapes,shadows,arrows}

\usepackage{tabu} 
\usepackage{colortbl}

\usepackage{booktabs}
\usepackage{array} 
\usepackage{multirow}  

\usepackage{hyperref} 
\usepackage[figure]{hypcap} 

\usepackage{diagbox}

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

\newcommand\grafik[2]{%
  \begin{minipage}{\bildbreite}
    \centering\raisebox{.75\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=2pt}}
\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]{};
}

\begin{document}

\begin{center}
\begin{tiny}

  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten}\label{tab:table6} 
    
    \begin{tikzpicture}[
        very thick,
        nodes={inner sep=0.0ex}
      ]
      \matrix[
          matrix of nodes ,
          inner sep=0pt,
          row sep=10pt,
          column 2/.style={minimum width=0.5cm},
        ](m)
       {
          1&größenveränderbare Mechanismen in Heizkörpern
            &{}{Ofen}
            &{}{Holz}           
          & {}{Stein}
            &{}{Text zum Test}
            &{}{Schlauch mit Innendruck}\\
          2&Auch hier kann etwas neues stehen
            &{}{ausziehbar}
            &{}{faltbar}
            &{}{aufblasbar}
            &{}{}\\
          3&Gehäuseöffnung
            &{}{Drehdeckel}
            &{}{Klappdeckel}
            &{}{Deckel mit Verklippung}
            &{}{}\\
          4& größenveränderbare Mechanismen in Heizkörpern            
            &{}{Plane}
            &{}{Kunststoff}
            &{}{Leichtmetall}
            &{}{Glas}
            &{}{Hier geht der Text schnell bis Ende Seite}\\
	
            5& größenveränderbare Mechanismen in Heizkörpern
            &{}{mit einer Hand}
            &{}{mit zwei Händen}
            &{}{automatisch}
            &{}{}
            &{}{}\\
            6& 
            &{}{}
            &{}{}
            &{}{}
            &{}{}
            &{}{}\\
          &&{}&{}&{}&{}\\
        };
% 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] \l in {1,2,3,4,5}
          \node[anchor=base] at (or.base-|m-1-\i){\l};
% 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-4,m-4-3,m-5-4,m-6-3}
        \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-4,m-4-4,m-5-4,m-6-4}
        \verbindungslinie{green}{m-1-7}{m-2-5,m-3-4,m-4-4,m-5-5,m-6-4}
        \foreach \f/\p/\t in {red/m-6-3/LV1,blue/m-6-4/LV2,green/m-6-5/LV3}
          \node[\f,below,font=\bfseries]at(\p){\t};
    \end{tikzpicture}
  \end{minipage}
  \end{tiny}
\end{center}

\end{document}
Ich freue mich über Tipps!
Zuletzt geändert von Bachi am Mo 1. Aug 2016, 21:52, insgesamt 1-mal geändert.

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

Beitrag von Bartman »

Bachi hat geschrieben:Problem ist beim aktuellen Stand, dass die Matrix (selbst bei sehr kleiner Schrift) über die Seite "hinauswandert".
Mancher Leser Deines Beitrages möchte sich das vielleicht ansehen, braucht dafür aber ein Beispiel, mit welchem sich ein PDF erzeugen lässt. Dazu fehlt leider etwas. Ein Minimalbeispiel könnte helfen, Dir zu helfen.
\begin{tiny}
Kann ich Schriftgrößenumschaltungen auch als Umgebungen verwenden?
Bachi hat geschrieben:a) einen Zeilenumbruch in den Spalten erzeugen kann
\matrix[
   matrix of nodes,
   inner sep=0pt,
   row sep=10pt,
   column sep=15pt,% Vergrößern des Spaltenabstandes
   column 2/.style={text width=2cm}
](m)

Bachi
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mi 30. Mär 2016, 12:19

Beitrag von Bachi »

Hallo Bartman,

ich habe schon versucht, ein Minimalbeispiel zu erzeugen - eigentlich ist die Tabelle 32 Zeilen lang ...
Aber stimmt, ich hatte Kommandozeilen von begin{document} rausgenommen. Das war wohl nicht die beste Idee ...

Ich habe mir deinen link angesehen bzgl. Schriftgrößenbefehlen
- die Schriftgröße ist nicht das Problem, sondern dass der Text für die Spalten zu lang ist und daher die Matrix über das Blatt raus geht.

Ich suche also noch einem Tipp, wie ich in diese (für mich komplexe) Matrix einen Zeilenumbruch integrieren (oder auch erzwingen) kann.


Ich habe den vollständigen CODE, aus dem (bei mir) direkt ein PDF wird (hoffe es funktioniert bei dir auch)
bei meiner (Eingangs-)Frage korrigiert[/b]

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

Beitrag von Bartman »

In Deinem Eröffnungsbeitrag fehlen jetzt die Code-Tags für die Hervorhebung des Quelltextes am Anfang und am Ende Deines Beispiels.
Bachi hat geschrieben:die Schriftgröße ist nicht das Problem, sondern dass der Text für die Spalten zu lang ist und daher die Matrix über das Blatt raus geht.
Hast Du das geänderte optionale Argument
column 2/.style={text width=2cm}
des \matrix-Befehls in meinem Beitrag gelesen und in Deinem Beispiel ausprobiert?

Bachi
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mi 30. Mär 2016, 12:19

Beitrag von Bachi »

Guten Abend Bartman,

ich habe es eben probiert:
folgende Befehle geändert:
\matrix[
          matrix of nodes ,
          inner sep=0pt,
          row sep=10pt,
          column sept=15pt,
          column 2/.style={text width=2cm},
        ](m)
Ergebnis:
! Package pgfkeys Error: I do not know the key '/tikz/column sept', to which yo
u passed '15pt', and I am going to ignore it. Perhaps you misspelled it.

See the pgfkeys package documentation for explanation.
Type H <return> for immediate help.

Hast du noch einen anderen Tipp für mich?
Ich probiere alles aus, was du mir schreibst ;-)

Zu Deiner Anmerkung:
In Deinem Eröffnungsbeitrag fehlen jetzt die Code-Tags für die Hervorhebung des Quelltextes am Anfang und am Ende Deines Beispiels.
--> Ich schreibe das sofort hier rein, wenn du mir verrätst, was ein Code-Tag ist .... :-|

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

Beitrag von Bartman »

column sept=15pt,
Siehst Du den Tippfehler?

Bachi
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mi 30. Mär 2016, 12:19

Beitrag von Bachi »

:roll: ja - wer tippen kann ist klar im Vorteil ;-)

Also 1 Schritt funktioniert, die Spalte 2 kann ich so verkleinern und damit entsteht der Zeilenumbruch = Jippi!.

Mein Problem bleiben leider die Spalten 3-7, die gehen leider immer noch über das Blatt hinaus.

Hast du noch einen Tipp für mich!

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

Beitrag von Bartman »

Bachi hat geschrieben:Mein Problem bleiben leider die Spalten 3-7, die gehen leider immer noch über das Blatt hinaus.
Abschnitt 20.3.3 in der Dokumentation des Pakets tikz.
column 2/.style={text width=2cm},
Die Zahl 2 steht für die zweite Spalte in der Matrix. Was schließt Du daraus?

Ich habe es zwar nicht getestet, aber ich vermute, die vielen geschweiften Klammern in Deiner Matrix werden nicht gebraucht.

Bachi
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mi 30. Mär 2016, 12:19

Beitrag von Bachi »

Lieber Bartman,

IT WORKS! *YES! - cool*
\matrix[
matrix of nodes ,
inner sep=0pt,
row sep=10pt,
column sep=15pt,
column 2/.style={text width=3cm}, 
column 3/.style={text width=1.5cm}, 
column 4/.style={text width=1.5cm}, 
column 5/.style={text width=1.5cm}, 
column 6/.style={text width=1.5cm}, 
column 7/.style={text width=1.5cm}, 
](m)
Du hast mir mega geholfen - hab vielen Dank!

Ob es die vielen geschweiften Klammern in meiner Matrix braucht?
Das weiß ich ehrlich gesagt nicht. Ich bin blutiger Latex-Anfänger für meine Bachelorarbeit und hab dafür echt irre viel über Latex gelernt und bin sehr vom dem Programm begeistert.
Die Kommandozeilen für den Morphologische Kasten hab ich im Netz gefunden und dann weiter daran gebastelt, dass er für meine Darstellung passt - nur an der Spaltenbreite bin ich gescheitert ...
Selbst erstellen könnte ich diese Matrix aber wohl nicht ...

Herzliche Grüße!

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2766
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag von Stefan Kottwitz »

>> In Deinem Eröffnungsbeitrag fehlen jetzt die Code-Tags für die Hervorhebung
>> des Quelltextes am Anfang und am Ende Deines Beispiels.
>Ich schreibe das sofort hier rein, wenn du mir verrätst, was ein Code-Tag ist .... :-|

Man schreibt [CODE] an den Beginn der Codezeilen und [/CODE] an das Ende. Es gibt auch einen "Schalter" über dem Eingabefeld, ganz oben unter dem Titelfeld, mit der Aufschrift "Code". Den kann man zum Öffnen und Schließen einer Code-Umgebung anklicken. Ich habe das mal für Deinen Beitrag oben gemacht, sieh es als Info zum nächsten Mal. Code wird dadurch lesbarer und kann sogar direkt im LaTeX Online-Editor ausgeführt werden.

Stefan

Antworten