PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Komplizierte Tabelle



danm357
03-09-2012, 15:02
Liebe Forengemeinde,

ich bräuchte etwas (oder eher sehr) viel Hilfe bei der Erstellung einer etwas komplizierten Tabelle.
Anbei eine Grafik, von der hoffentlich ersichtlich ist, was ich am Ende haben möchte:
http://i602.photobucket.com/albums/tt104/AlmdudlerBayern/QuestionsExamplePictures/MinBsp.png
Und anbei ein Minimalbeispiel von dem ich zu starten versuche:


\documentclass[12pt,twoside, a4paper]{report}
\usepackage[german]{babel}
\usepackage{textcomp}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usepackage{booktabs}
\usepackage{longtable}
\usepackage{dcolumn}

\usepackage{rotating}
\usepackage{tabularx}
\usepackage{multirow}

\begin{document}

\begin{tabular}{|l|l|l|}
\multirow{3}{*}{\begin{sideways}A\end{sideways}} & B & C \\
& D & E \\
& F & G \\
\end{tabular}

\end{document}
Leider komme ich trotz vieler Versuche nicht auf das gewünschte Resultat (ich scheitere immer wieder daran multicolumn und multirow korrekt ineinander zu verschachteln).

Könnte jemand von Euch bitte versuchen, mir bei der Erstellung meiner Wunsch-Tabelle zu helfen? Über eine ausgearbeitete LaTeX-Vorlage (muss nicht komplett sein) würde ich mich genauso freuen wie über Tipps!

LuPi
03-09-2012, 15:22
Wenn ich das richtig sehe, brauchst Du - mit Ausnahme des 'o' - gar kein
multirow. Den Tabellenkopf kannst Du einfach mit drei Zeilen und
entsprechend angeordneten multicolumn gestalten.




\documentclass[12pt,twoside, a4paper]{report}
\usepackage[german]{babel}
\usepackage{textcomp}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usepackage{booktabs}
\usepackage{longtable}
\usepackage{dcolumn}

\usepackage{longtable}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{multirow}

\begin{document}

\begin{tabular}{l|l|l|l|l|l|l|l|l|l|l|l|l|l}
& & & & & \multicolumn{6}{c|}{F} & \multicolumn{3}{c}{G} \\
A & B & C & D & E & \multicolumn{2}{c|}{H} &
\multicolumn{2}{c|}{I} & \multicolumn{2}{c|}{J} &
\multicolumn{2}{c|}{K} & L \\
& & & & & M & N & O & P & Q & R & S & T & \\
\hline
a & b & c & d & e & f & g & h & i & j & k & l & m & n \\
\end{tabular}

\end{document}

hakaze
03-09-2012, 15:29
Hier mal ein Beispiel, dass Lupis Aussage verdeutlicht:

\documentclass[12pt,a4paper]{report}
\usepackage[german]{babel}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{multirow}

\begin{document}

\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
& & & & \multirow{3}{*}{E} & \multicolumn{6}{c|}{F} & \multicolumn{3}{c|}{g} \\
A & B & C & D & & \multicolumn{2}{c|}{H} & \multicolumn{2}{c|}{I} & \multicolumn{2}{c|}{J} & \multicolumn{2}{c|}{K} & \multirow{2}{*}{L} \\
& & & & & M & N & O & P & Q & R & S & T & \\ \hline
a & b & c & d & e & f & g & h & i & j & k & l & m & n \\ \hline
\multirow{2}{*}{o} & p & q & r & s & t & u & v & w & x & y & z & 1 & 2 \\
& 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 \\ \hline
\end{tabular}

\end{document}Wie du siehst, kann bei ungerader Zeilenzahl einfach die darüber und darunter liegenden Zellen leer lassen. Vergleiche A, B, C, D mit E, das tatsächlich (und eigentlich überflüssig) die multirow-Konstruktion verwendet.

Bei multicolumn ist lediglich zu beachten, dass die Definitionen für vertikale Linien überschrieben werden. Deshalb musst man sich u.U. manuell im multicolumn-Befehl mit übergeben.

PS. Du lädst diverse Pakete doppelt. Das ist keine gute Idee.

EDIT. mal wieder zu langsam getippt...

danm357
03-09-2012, 15:48
Vielen Dank LuPi und hakaze,

erstmals Danke dafür, dass Ihr geantwortet habt.
Leider habe ich meine Grafik nicht ganz eindeutig gemacht, aber nun an meine Fragestellung etwas besser angepasst (und auch das doppelte LaTeX-Pakte entfernt, danke für den Hinweis!)

Natürlich kann man bei meinem ersten Bsp. die Zeilen über und unter A leer lassen. Aber wie mache ich es, wenn ich anstatt des A einen etwas längeren (gedrehten Text) habe, wie im aktuellen Bild? Ich denke, dann bin ich auf multirow angewiesen.
Da dann in der gleichen Zeile auch noch ein multicolumn kommt, weiss ich leider immer noch nicht weiter, wie ich das managen soll.

Aber vielleicht habt Ihr ja nun die richtige Lösung für mich parat ;-)

Entschuldigt auf alle Fälle meine unglückliche Zeichnung von voring!
Vielen Dank noch mal! Ich hoffe, nochmal von Euch zu hören!


P.s.: hakaze, da warst Du aber viel schneller als ich! Danke, dass Du von selbst auf die geänderte Grafik reagiert und Deine Lösung angepasst hast! Echt sehr nett und hilfreich von Dir!! Besten Dank für diese schnelle Lösung!

hakaze
03-09-2012, 15:52
Überarbeitetes Beispiel mit gedrehten Textboxen (setzt Paket graphicx voraus):

\documentclass[12pt,a4paper]{report}
\usepackage[german]{babel}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{graphicx,multirow}

\begin{document}

\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\multirow{3}{*}{\rotatebox{90}{text1}} & %
\multirow{3}{*}{\rotatebox{90}{text2}} & %
\multirow{3}{*}{\rotatebox{90}{text3}} & %
\multirow{3}{*}{\rotatebox{90}{text4}} & %
\multirow{3}{*}{\rotatebox{90}{text5}} & %
\multicolumn{6}{c|}{F} & \multicolumn{3}{c|}{G} \\
& & & & & \multicolumn{2}{c|}{H} & \multicolumn{2}{c|}{I} & \multicolumn{2}{c|}{J} & \multicolumn{2}{c|}{K} & \multirow{2}{*}{L} \\
& & & & & M & N & O & P & Q & R & S & T & \\ \hline
a & b & c & d & e & f & g & h & i & j & k & l & m & n \\ \hline
\multirow{2}{*}{\rotatebox{90}{text6}} & p & q & r & s & t & u & v & w & x & y & z & 1 & 2 \\
& 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 \\ \hline

\end{tabular}

\end{document}Wie man sieht, wird es für text6 ziemlich eng. Da musst du eventuell die übrigen Zeilenhöhen vergrößern.

LuPi
03-09-2012, 15:53
@hakaze: Oder text6 komprimieren? Aber das ist beides nicht optimal.
Vielleicht ist text6 in Realität etwas kürzer ...



Zugegebenermaßen weiß ich nicht so ganz, was Dir jetzt fehlt.
Das Beispiel


\documentclass[12pt,twoside, a4paper]{report}
\usepackage[german]{babel}
\usepackage{textcomp}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\usepackage{booktabs}
\usepackage{longtable}
\usepackage{dcolumn}

\usepackage{rotating}
\usepackage{tabularx}
\usepackage{multirow}

\begin{document}

\begin{tabular}{|l|l|l|}
\multirow{3}{*}{\begin{sideways}A\end{sideways}} & \multicolumn{2}{c|}{ccc} \\
& D & E \\
& F & G \\
\end{tabular}

\end{document}


läuft bei mir einwandfrei durch und liefert das erwartete Ergebnis.

danm357
03-09-2012, 16:02
Danke LuPi auch für Deine neue Antwort,

Deine Lösung funktioniert natürlich auch sehr schön!

Text6 zu komprimieren ist ein guter Vorschlag (da in Wahrheit text1 etc. alle verschiedene Längen haben). Diesen werde ich vermutlich für meine echte Tabelle anwenden.

Besten Dank nochmals!