Tabelle mit multicolumn -- Problem Spaltenbreite

Tabellen und Grafiken erstellen und anordnen


bmro
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 30. Aug 2009, 12:43

Tabelle mit multicolumn -- Problem Spaltenbreite

Beitrag von bmro »

Hallo Allerseits,

ich versuche eine Tabelle zu erstellen, wo eine Spalte zwei Unterspalten hat.
Das Problem ist, dass die erste Unterspalte schmaler als die zweite ist.
Hier ist Mini-Beispiel
\documentclass[ngerman, headsepline,footsepline,12pt]{scrreprt}
\usepackage{times}
\usepackage[latin1]{inputenc} % Umlaute

\usepackage{multicol}
\usepackage{multirow}

\usepackage{setspace}
\onehalfspacing

\usepackage[ngerman]{babel}

\begin{document}

\begin{table}[h]
\centering
\caption{Tabellenbeschreibung}
\begin{tabular}{|l|c|c|c|c|c|}
\hline
\multirow{2}{*}{} & \multicolumn{2}{c|}{Überschrift eins} & \multicolumn{2}{c|}{Überschrift zwei} & Überschrift drei \\
\cline{2-6}
& 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
\multicolumn{6}{|c|}{1-6} \\
\hline
\end{tabular}
\label{tab:}
\end{table}

\end{document}
Wenn ich die Spaltenbreite mit p{<size>} ändere, bekomme ich zwar gleichgroße Untersplaten, aber dafür muss ich zum einen viele Werte ausprobieren, bis ich eine zufriedenstellende Layout bekomme, zum anderen bekomme ich die Einträge in den Unterspalten nicht zentriert, sondern nur linksbündig.
Hier ist das Mini-Beispiel dafür:
\documentclass[ngerman, headsepline,footsepline,12pt]{scrreprt}
\usepackage{times}
\usepackage[latin1]{inputenc} % Umlaute

\usepackage{multicol}
\usepackage{multirow}

\usepackage{setspace}
\onehalfspacing

\usepackage[ngerman]{babel}

\begin{document}

\begin{table}[h]
\centering
\caption{Tabellenbeschreibung}
\begin{tabular}{|l|p{2cm}|p{2cm}|c|c|c|}
\hline
\multirow{2}{*}{} & \multicolumn{2}{c|}{Überschrift eins} & \multicolumn{2}{c|}{Überschrift zwei} & Überschrift drei \\
\cline{2-6}
& 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
\multicolumn{6}{|c|}{1-6} \\
\hline
\end{tabular}
\label{tab:}
\end{table}

\end{document}
Über einen Vorschlag würde ich mich sehr freuen.

Bmro

bmro
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 30. Aug 2009, 12:43

Beitrag von bmro »

Keine Antworten :(

ich habe eine Halblösung und zwar:
mit dem Paket array und
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
bekomme ich nun die Einträge zentriert, aber immer noch muss ich mir eine passende Spaltenbreite ausdenken

Mini-bsp:
\documentclass[ngerman, headsepline,footsepline,12pt]{scrreprt}
\usepackage{times}
\usepackage[latin1]{inputenc} % Umlaute

\usepackage{multicol}
\usepackage{multirow}
\usepackage{array}

\usepackage{setspace}
\onehalfspacing

\usepackage[ngerman]{babel}

\begin{document}

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{table}[h]
\centering
\caption{Tabellenbeschreibung}
\begin{tabular}{|l|C{2cm}|C{2cm}|C{2cm}|C{2cm}|c|}
\hline
\multirow{2}{*}{} & \multicolumn{2}{c|}{Überschrift eins} & \multicolumn{2}{c|}{Überschrift zwei} & Überschrift drei \\
\cline{2-6}
& 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
\multicolumn{6}{|c|}{1-6} \\
\hline
\end{tabular}
\label{tab:}
\end{table}

\end{document}

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Hallo wenn ich dein Problem richtig verstanden habe dann suchst du das Paket tabularx. Oder etwas neuer tabulary.
[1] Nützliche Webdokumente für Anfänger und Fortgeschrittene
[2]Minimalbeispiel | [3]FAQ
[4]Regelwerk | [5] Knigge
Wenn nicht anderst angegeben ist mein System: texlive 2012, pdflatex, x86-64, Snow Leopard utd.
Angehöriger der Liga zur Verwendung von texdoc
texdoc mathmode koma l2picfaq l2tabu lshort-en
Achtung: Aufforderungen ein Minimalbeispiel oder mehr Erklärungen zu einer Frage zu liefern sind keine persönlichen Angriffe. Sie dienen viel mehr dazu die Kommunikation zwischen Fragendem und potentiellen Helfern zu erleichtern und zu präzisieren.


Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »

Mein Ansatz funktioniert auch mit tabularx. Ausserdem hab ich deine Tabelle etwas überarbeitet. Vertikale Linien sollten nämlich vermieden werden, und das Paket booktabs ermöglicht schönere Abstände, sodass für die Verständlichkeit und Übersichtlichkeit nur noch wenige horizontale Linien nötig sind.

Schau mal, wies dir gefällt:
\documentclass[ngerman, headsepline,footsepline,12pt]{scrreprt} 
\usepackage{times} 
\usepackage[latin1]{inputenc} % Umlaute 

\usepackage{multicol} 
\usepackage{multirow} 
\usepackage{array} 

\usepackage{tabularx}
\usepackage{booktabs}


\usepackage{setspace} 
\onehalfspacing 

\usepackage[ngerman]{babel} 

\begin{document} 

\newcolumntype{Y}{>{\centering\arraybackslash}X} 

\begin{table}[h] 
\centering 
\caption{Tabellenbeschreibung} 
\begin{tabularx}{.8\textwidth}{lYYYYc} 
\toprule
\multirow{2}{*}{} & \multicolumn{2}{c}{Überschrift eins} & \multicolumn{2}{c}{Überschrift zwei} & Überschrift drei \\ 
& 2 & 3 & 4 & 5 & 6 \\ 
\cmidrule(rl){2-3} \cmidrule(rl){4-5} \cmidrule(rl){6-6} 
1 & 2 & 3 & 4 & 5 & 6 \\ 
1 & 2 & 3 & 4 & 5 & 6 \\ 
1 & 2 & 3 & 4 & 5 & 6 \\ 
1 & 2 & 3 & 4 & 5 & 6 \\ 
\midrule 
\multicolumn{6}{c}{1-6} \\ 
\bottomrule 
\end{tabularx} 
\label{tab:} 
\end{table} 


\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} 
\begin{table}[h] 
\centering 
\caption{Tabellenbeschreibung} 
\begin{tabular}{|l|C{2cm}|C{2cm}|C{2cm}|C{2cm}|c|} 
\hline 
\multirow{2}{*}{} & \multicolumn{2}{c|}{Überschrift eins} & \multicolumn{2}{c|}{Überschrift zwei} & Überschrift drei \\ 
\cline{2-6} 
& 2 & 3 & 4 & 5 & 6 \\ 
\hline 
1 & 2 & 3 & 4 & 5 & 6 \\ 
\hline 
1 & 2 & 3 & 4 & 5 & 6 \\ 
\hline 
1 & 2 & 3 & 4 & 5 & 6 \\ 
\hline 
1 & 2 & 3 & 4 & 5 & 6 \\ 
\hline 
\multicolumn{6}{|c|}{1-6} \\ 
\hline 
\end{tabular} 
\label{tab:} 
\end{table} 

\end{document}
P.S. Schönes Minimalbeispiel :)

bmro
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 30. Aug 2009, 12:43

Beitrag von bmro »

Danke :).
es funktioniert. ich werde es mir anschauen.

Sebastian-Gast

Beitrag von Sebastian-Gast »

Auch wenn das Thema hier schon etwas hälter ist, ich habe ein kleines Problem mit dem von euch vorgestellten Tabellenformat. Habe das obige Beispiel von Xenara bei mir implementiert und angepasst. Jedoch ist die Zweite Zeile der Multirow nicht mittig zur Ersten. Sieht ziemlich blöd aus. Kennt jemand da einen Trick?

begin{table}[h]
\centering
\caption{Tabellenbeschreibung}
\begin{tabularx}{.8\textwidth}{lYYYYYY}
\toprule
\multirow{2}{*}{} & \multicolumn{3}{c}{\textbf{(1+1)-Evolutionary / Powell}} & \multicolumn{3}{c}{\textbf{Simplex}} \\
& Phase 1 & Phase 2 &  Phase 3 &Phase 1 & Phase 2 &  Phase 3 \\
\cmidrule(rl){2-4} \cmidrule(rl){5-7} 
$T_x$ & 2 & 3 & 4 & 5 & 6 \\
$T_y$& 2 & 3 & 4 & 5 & 6 \\
$T_z$ & 2 & 3 & 4 & 5 & 6 \\
$R_x$ & 2 & 3 & 4 & 5 & 6 \\
$R_y$ & 2 & 3 & 4 & 5 & 6 \\
$R_z$ & 2 & 3 & 4 & 5 & 6 \\
\bottomrule
\end{tabularx}
\label{tab:}
\end{table} 

Sebastian-Gast

Beitrag von Sebastian-Gast »

Habe das Problem etwas eingrenzen können, es funktioniert solange die erste Zeile der Multirow nicht länger ist als die Zweite. In meinem Beispiel kann ich durch entfernen der BOLD Schrift die Breite der beiden Zellen etwas verringern und dann passt es. Aber richtig gut ist das ja auch nicht :(

Antworten