Tabelle in Tabelle mit senkrechten Pfeilen

Tabellen und Grafiken erstellen und anordnen


Sheila
Forum-Anfänger
Forum-Anfänger
Beiträge: 41
Registriert: So 24. Jan 2010, 13:58

Tabelle in Tabelle mit senkrechten Pfeilen

Beitrag von Sheila »

Hallo zusammen!

Habe Probleme mit folgnder Tabelle:
\documentclass[12pt,draft]{scrreprt}
\usepackage{setspace}		
\usepackage[T1]{fontenc}	
\usepackage[latin1]{inputenc} 
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{dcolumn}
\usepackage{array}
\usepackage{booktabs}
\usepackage[belowskip=12pt]{caption}
\usepackage{colortbl}
\usepackage{amsfonts}
\usepackage{amsmath}		
\usepackage{url}
\usepackage[numbers]{natbib}

\begin{document}
\setlength\extratabsurround{5pt}

\begin{tabular}{|ccc|}
\firsthline
Top & & High\\
& \begin{tabular}[t]{|c|} \firsthline 
			Privileged Creditors	 \\
			\hline
			Secured Creditors \\
			\hline
			Unsecured Creditors \\
			\hline
			Subordinated Creditors \\
			\hline
			Shareholders \\\lasthline 
			\end{tabular}   & \\\lasthline 
Bottom & &Low \\
\end{tabular}

\end{document}
Ich hätte gerne noch zwei senkrechte Pfeile eingebaut: Zum einen zwischen Top und Bottom (Top <--> Bottom) mit der Pfeilüberschrift "Priority Ranking" und zum anderen zwischen High und Low (High <--> Low) mit der Pfeilüberschrift "Recovery". Ich habe zwar im Internet nach Lösungsvorschlägen recherchiert, aber leider nichts dazu gefunden! Bin für jeden Tipp dankbar!!

Viele Grüsse!

Sheila
Forum-Anfänger
Forum-Anfänger
Beiträge: 41
Registriert: So 24. Jan 2010, 13:58

Beitrag von Sheila »

Keiner eine Idee?

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Irgendwie mit TikZ, in der Richtung:
\documentclass[12pt,draft]{scrreprt}
\usepackage[T1]{fontenc}  
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\setlength\extratabsurround{5pt}

\begin{tikzpicture}
\matrix[draw,column sep=0pt,row sep=0pt]
{%
\node(top){Top}; & & \node(high){High};\\
& \node{ \begin{tabular}[t]{|c|} \firsthline
         Privileged Creditors    \\
         \hline
         Secured Creditors \\
         \hline
         Unsecured Creditors \\
         \hline
         Subordinated Creditors \\
         \hline
         Shareholders \\\lasthline
         \end{tabular} }; & \\
\node(bottom){Bottom}; & & \node(low){Low}; \\
};
\draw [<->,red,thick] (top.center) -- (bottom.center);
\draw [<->,red,thick] (high.center) -- (low.center);
\end{tikzpicture}

\end{document}

Sheila
Forum-Anfänger
Forum-Anfänger
Beiträge: 41
Registriert: So 24. Jan 2010, 13:58

Beitrag von Sheila »

Vielen Dank für Deine Antwort, Koma. Das sieht schon mal sehr gut aus :)

Hab nun die Beschriftung noch reingemacht. Leider ist diese waagerecht, obwohl ich sie gerne senkrecht hätte. Kann man da noch irgendwas machen?
\documentclass[12pt,draft]{scrreprt}
\usepackage{setspace}		
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage[belowskip=12pt]{caption}
\usepackage{colortbl, booktabs}
\usepackage{amsfonts}
\usepackage{amsmath}	
\usepackage{tikz} 
\usetikzlibrary{matrix} 
\def\nodeCell#1{\pnode{#1}}
\newcommand{\changefont}[3]{\fontfamily{#1} \fontseries{#2} \fontshape{#3} \selectfont} 

\begin{document}
\setlength\extratabsurround{5pt} 
\begin{tikzpicture}[auto]
\matrix[draw,column sep=0pt,row sep=0pt] 
{% 
\node(top){Top}; & & \node(high){High};\\ 
& \node{ 

\begin{tabular}[t]{|c|} \firsthline 
         Privileged Creditors    \\ 
         \hline 
         Secured Creditors \\ 
         \hline 
         Unsecured Creditors \\ 
         \hline 
         Subordinated Creditors \\ 
         \hline 
         Shareholders \\\lasthline 
         \end{tabular} }; & \\ 
\node(bottom){Bottom}; & & \node(low){Low}; \\ 
}; 
\draw [<->,black,thick] (top) -- (bottom) node [midway] {Priority Ranking}; 
\draw [<->,black,thick] (high) -- (low)  node [midway] {Recovery Expectations}; 
\end{tikzpicture} 
\end{document}

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Probier mal die Eigenschaft sloped bei den entsprechenden Text-Nodes, also
\draw [<->,black,thick] (top) -- (bottom) node [midway,sloped] {Priority Ranking};
\draw [<->,black,thick] (high) -- (low)  node [midway,sloped] {Recovery Expectations};
Probiert habe ich es nicht, ich muss nämlich dringend weg. Näheres ist im pgfmanual bei der Erklärung zu \node zu finden.

Sheila
Forum-Anfänger
Forum-Anfänger
Beiträge: 41
Registriert: So 24. Jan 2010, 13:58

Beitrag von Sheila »

Danke! Habs nun mit
\draw [shorten <=10pt,<->,black,thick, shorten >=10pt] (top) -- (bottom) node [midway, rotate=90, above] {Priority Ranking}; 
\draw [shorten <=10pt, <->,black,thick, shorten >=10pt] (high) -- (low)  node [midway, rotate=90, below] {Recovery Expectations}; 
hinbekommen. Das einzige, was mir noch nicht so gut gefällt ist, dass der rechte Pfeil mit dem Text so nah an dem rechten Tabellenrand ist. Hätte gern mehr Platz, so dass der Abstand des linken und des rechten Pfeils zu den Tabellenrändern gleich ist. Wie könnte man das machen?

Sheila
Forum-Anfänger
Forum-Anfänger
Beiträge: 41
Registriert: So 24. Jan 2010, 13:58

Beitrag von Sheila »

Hat vielleicht jemand eine Idee, wie man das Problem mit der Breite lösen könnte? Bin für jeden Tipp dankbar!

Nerd 032F

Beitrag von Nerd 032F »

Wenn ich Dein Problem richtig verstehe, musst Du doch nur die beiden Nodes high und low etwas weiter nach rechts schieben. Das geht einfach, indem man den Node mit der inneren Tabelle breiter macht, also beispielsweise nach \end{tabular} noch ein \hspace*{.5em} o. ä. einfügt. Oder geht das nicht?

Sheila
Forum-Anfänger
Forum-Anfänger
Beiträge: 41
Registriert: So 24. Jan 2010, 13:58

Beitrag von Sheila »

Danke für den Tipp. Hab etwas rumprobiert, aber leider nichts vernünftiges rausbekommen. Sonst noch jemand eine Idee?

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

Beitrag von esdd »

Hallo,

Du den Nodes in der Matrix eine Mindestbreite zuordnen. Wenn diese breiter ist als Dein längstes Wort, sind alle Noden gleich breit und damit der Pfeilabstand von den Tabellenrändern auch.
\documentclass{scrreprt} 

\usepackage{colortbl, booktabs} 
\usepackage{tikz} 
\usetikzlibrary{matrix} 

\begin{document} 
\setlength\extratabsurround{5pt} 
\begin{tikzpicture}[auto] 
\matrix(m)[matrix of nodes,draw,column sep=0pt,row sep=10pt,nodes={minimum width=1.5cm}] 
{% 
Top & & High\\ 
&
\begin{tabular}[t]{|c|} \firsthline 
         Privileged Creditors    \\ 
         \hline 
         Secured Creditors \\ 
         \hline 
         Unsecured Creditors \\ 
         \hline 
         Subordinated Creditors \\ 
         \hline 
         Shareholders \\\lasthline 
\end{tabular} & \\ 
Bottom & & Low \\ 
}; 
\draw [shorten <=10pt,<->,black,thick, shorten >=10pt] (m-1-1) -- (m-3-1) node [midway, rotate=90, above] {Priority Ranking}; 
\draw [shorten <=10pt, <->,black,thick, shorten >=10pt] (m-1-3) -- (m-3-3)  node [midway, rotate=90, below] {Recovery Expectations}; 
\end{tikzpicture} 
\end{document} 
Ich habe row sep gleich 10pt gesetzt, weil bei mir Recovery Expectations sonst nicht zwischen High und Low gepasst hat.
Gruß
Elke

Antworten