Seite 1 von 2

Tabelle m.H.v. multicolumn erstellen

Verfasst: Mi 10. Okt 2012, 19:08
von PatKi
Hallo zusammen,

ich bin Latex-Anfänger und habe schon eine Weile versucht eine etwas komplexere Tabelle in Latex zu erstellen. Ich denke, ich bin mit viel googeln schon ganz gut voran gekommen, aber jetzt komme ich einfach nicht weiter. Ich arbeite mit Texmaker unter Windows 7, falls das relevant sein sollte.

Hier nun mein Problem: Mein Ziel ist es eine Tabelle zu erstellen, wie Ihr dem Bild im Anhang entnehmen könnt. Auf dem Weg dorthin, habe ich nun versucht als erstes die richtige Spalten- und Zeilenaufteilung mit Latex umzusetzen. Dafür nutze ich vor allem den Befehl "multicolumn". Ich kann die auf Basis des unten stehenden Beispielcodes auch setzen, allerdings mit folgenden Schönheitsfehlern:
1. Spaltenbreiten entsprechen nicht meiner definierten Breite von 20mm pro Spalte.
2. Die Linienstärken variieren leider, einige Spaltenlinien sind dicker als der Rest.

Ich würde mich freuen, wenn mir jemand helfen könnte! Vielen Dank schon mal vorab, ich hoffe, ich habe keine Infos vergessen.

PS: Vermutlich sind in meinem Beispielcode mehr Packages aufgerufen, als notwendig. Liegt einfach daran, dass ich diese aus meiner eigentlichen Hauptdatei kopiert habe und sichergehen möchte, dass am Ende alles zusammenpasst.

Mein Minimalbeispiel:
 

\documentclass[a4paper, 11pt, oneside, ngerman, openany]{scrbook} 
\usepackage[T1]{fontenc} % Schriftverbesserung
\usepackage[ngerman]{babel}%deutscher Satzbau
\usepackage[latin9]{inputenc} % mit ISO *-15
\usepackage{scrpage2} % zur Manipulation der Kopf und Fusszeilen
\usepackage{makeidx} % zum Erstellen und Indexen (Abkürzungsverzeichnis)
\makeindex
\usepackage{graphicx} % zum Einbinden von Grafiken und Bilddateien
\usepackage[intoc]{nomencl} % Abkuerzungsverzeichnis (und ins Inhaltsverzeichnis aufnehmen)
\let\abk\nomenclature % Befehl umbenennen in abk 
\renewcommand{\nomname}{Abkürzungsverzeichnis} % Deutsche Überschrift
\setlength{\nomlabelwidth}{.20\hsize} % Punkte zw. Abkürzung und Erklärung
\renewcommand{\nomlabel}[1]{#1 \dotfill} % Punkte zw. Abkürzung und Erklärung
\setlength{\nomitemsep}{-\parsep} % Zeilenabstände verkleinern
\makenomenclature
\usepackage[vcentering,dvips]{geometry} % Seitengröße definieren
\geometry{papersize={209.9mm,297mm},total={160mm,247mm}}
\usepackage{color} % um Text zu färben 
\usepackage{endnotes} % End- und Fußnoten
\usepackage{url} % Weblinks
\usepackage{hyperref} % klickbare Kapitel und Link-Fraben
\hypersetup{colorlinks=true, linkcolor=blue, pagecolor=blue, urlcolor=blue, citecolor=blue} 
\usepackage{caption} % für z.B. Tabellenüberschriften 
\usepackage{fancybox} % für Kasten und Boxen 
\usepackage{longtable} % für mehrseitige lange Tabellen
\usepackage{tabularx} % für Tabellen 
\usepackage{eurosym} % Für das EUR-Symbol
\usepackage{booktabs}
\usepackage{multirow}% Für Tabellenanpassungen
\usepackage{array}% Für Tabellenanpassungen
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % zentrierte Spalten mit Breitenangabe 
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe
\newcommand{\ctab}{\centering\arraybackslash } % Tabellenabschnitt zentrieren
\newcommand{\rtab}{\raggedleft\arraybackslash} % Tabellenabschnitt rechtsbündig 
\newcommand{\ltab}{\raggedright\arraybackslash} % Tabellenabschnitt linksbündig

\begin{document}
Meine Tabellenvorlage\\
%Breite muss noch irgendwie angepasst werden!
\begin{tabular}{|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|}
\hline
\multicolumn{8}{|l|}{8 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{|l|}{2 Spalten}\\
\hline
\multicolumn{8}{|l|}{8 Spalten}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}&\multicolumn{1}{|l|}{1 Spalte}\\
\hline
\end{tabular}\\
\end{document}


Verfasst: Mi 10. Okt 2012, 21:02
von sudo
Zu 1. - Wenn du nicht wenigstens eine Zelle in einer Spalte ohne \multicolumn benutzt, musst du deren Breite anders definieren.
- Wenn du das tabularx Paket schon einbindest, dann benutzte es doch auch.
Die Spaltenoption X macht die Spalten automatisch gleich breit.
Zu 2. Wenn du zwei \multicolumn nebeneinander mit |l| hast, dann hast du auch zwei | nebeneindander, so dass du eine dickere Linie hast.

Probier also mal eine dieser Tabellen:
\begin{tabularx}{\textwidth}{|X|X|X|X|X|X|X|X|}
\hline
\multicolumn{8}{|l|}{8 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}\\
\hline
\multicolumn{1}{|X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}&\multicolumn{1}{X|}{1 Spalte}\\
\hline
\end{tabularx}\\

\begin{tabular}{|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|p{20mm}|}
\hline
\multicolumn{8}{|p{16cm}|}{8 Spalten}\\
\hline
\multicolumn{2}{|p{4cm}|}{2 Spalten}&\multicolumn{2}{p{4cm}|}{2 Spalten}&\multicolumn{2}{p{4cm}|}{2 Spalten}&\multicolumn{2}{p{4cm}|}{2 Spalten}\\
\hline
\multicolumn{2}{|p{4cm}|}{2 Spalten}&\multicolumn{2}{p{4cm}|}{2 Spalten}&\multicolumn{2}{p{4cm}|}{2 Spalten}&\multicolumn{2}{p{4cm}|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}\\
\hline
\multicolumn{2}{|l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}&\multicolumn{2}{l|}{2 Spalten}\\
\hline
\multicolumn{8}{|l|}{8 Spalten}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{p{2cm}|}{1 Spalte}&\multicolumn{1}{p{2cm}|}{1 Spalte}&\multicolumn{1}{p{2cm}|}{1 Spalte}&\multicolumn{1}{p{2cm}|}{1 Spalte}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}\\
\hline
\multicolumn{4}{|l|}{4 Spalten}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}&\multicolumn{1}{l|}{1 Spalte}\\
\hline
\end{tabular}

Verfasst: Mi 10. Okt 2012, 21:22
von PatKi
Hallo Sudo,

erst einmal vielen Dank für die schnelle Antwort! Es läuft schon mal: spektakulär! ;-)

@tabularx: das kommt davon, wenn man manche Dinge einfach nur kopiert, sorry.

@zweite Tabelle: Genau mein Ding!!! Einzig, dass die Tabelle nach dem Setzen über den Seitenrand hinausragt. Ich hätte gedacht, dass es mit der Spaltenbreite zusammenhängt, aber 8x20mm=160mm sollte doch eigentlich auf A4 passen?! woran kann das liegen?

VG

Verfasst: Mi 10. Okt 2012, 21:56
von sudo
Zu den 16cm kommen aber noch 9 mal die Liniendicke und 17 mal der Abstand von Linie zur Zelle dazu. Das ist dann schon ein bisschen mehr. Damit du da nicht selbst rechnen musst, gibt es ja das tabularx Paket.

Verfasst: Mi 10. Okt 2012, 22:19
von PatKi
...das macht Sinn! Also passt tabularx dann evtl. doch besser zu meinen Anforderungen. Habe es damit zwischenzeitlich auch bereits umgesetzt bekommen. Um jedoch genau die Spaltenbreiten wie in meinem Beispiel-Bild abzubilden, muss ich auf jeden Fall als letzte oder erste Zeile eine Zeile mit 8 einzelnen Spalten einfügen. Ich habe das mal getan und einfach die Linien und den Inhalt entfernt. Sieht dann aus, wie eine zusätzliche Leerzeile. Ich tüftel mal noch ein wenig mit der zweiten Tabelle rum. Mal schauen, was am Ende besser passt. Vielen Dank soweit!

Verfasst: Fr 12. Okt 2012, 12:57
von PatKi
So, habe die Tabellenvorlage nun fast fertig. Allerdings hängt es noch an einer Sache, die ich nicht nachvollziehen kann:

- wenn ich Sonderzeichen (Chi-quadrat in der zweiten Zeile) einfüge, zerstört dis die Spaltenbreite in der entsprechenden Zeile. Woran kann das liegen?
\documentclass[a4paper, 11pt, oneside, ngerman, openany]{scrbook} 
\usepackage[T1]{fontenc} % Schriftverbesserung
\usepackage[ngerman]{babel}%deutscher Satzbau
\usepackage[latin9]{inputenc} % mit ISO *-15
\usepackage{scrpage2} % zur Manipulation der Kopf und Fusszeilen
\usepackage{makeidx} % zum Erstellen und Indexen (Abkürzungsverzeichnis)
\makeindex
\usepackage{graphicx} % zum Einbinden von Grafiken und Bilddateien
\usepackage[intoc]{nomencl} % Abkuerzungsverzeichnis (und ins Inhaltsverzeichnis aufnehmen)
\let\abk\nomenclature % Befehl umbenennen in abk 
\renewcommand{\nomname}{Abkürzungsverzeichnis} % Deutsche Überschrift
\setlength{\nomlabelwidth}{.20\hsize} % Punkte zw. Abkürzung und Erklärung
\renewcommand{\nomlabel}[1]{#1 \dotfill} % Punkte zw. Abkürzung und Erklärung
\setlength{\nomitemsep}{-\parsep} % Zeilenabstände verkleinern
\makenomenclature
\usepackage[vcentering,dvips]{geometry} % Seitengröße definieren
\geometry{papersize={209.9mm,297mm},total={160mm,247mm}}
\usepackage{color} % um Text zu färben 
\usepackage{endnotes} % End- und Fußnoten
\usepackage{url} % Weblinks
\usepackage{hyperref} % klickbare Kapitel und Link-Fraben
\hypersetup{colorlinks=true, linkcolor=blue, pagecolor=blue, urlcolor=blue, citecolor=blue} 
\usepackage{caption} % für z.B. Tabellenüberschriften 
\usepackage{fancybox} % für Kasten und Boxen 
\usepackage{longtable} % für mehrseitige lange Tabellen
\usepackage{eurosym} % Für das EUR-Symbol
\usepackage{booktabs}
\usepackage{multirow}% Für Tabellenanpassungen
\usepackage{array}% Für Tabellenanpassungen
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % zentrierte Spalten mit Breitenangabe 
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}} % rechtsbündig mit Breitenangabe
\newcommand{\ctab}{\centering\arraybackslash } % Tabellenabschnitt zentrieren
\newcommand{\rtab}{\raggedleft\arraybackslash} % Tabellenabschnitt rechtsbündig 
\newcommand{\ltab}{\raggedright\arraybackslash} % Tabellenabschnitt linksbündig
\renewcommand\arraystretch{1,5} %Alle Zeilen haben die gleiche Höhe

\begin{document}


\begin{center}
{\small
\begin{tabular}{|m{1,6cm}|m{1,6cm}|m{1,6cm}|m{1,6cm}|m{1,6cm}|m{1,6cm}|m{1,6cm}|m{1,6cm}|} 
\hline 
\multicolumn{8}{|m{12,8cm}|}{\textbf{Informationen zum Faktor "Wettbewerbsintensität"}}\\ 
\hline 
\multicolumn{3}{|m{4,8cm}|}{Cronbachsches Alpha:}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,88}&\multicolumn{3}{m{4,8cm}|}{Erklärte Varianz:}&\multicolumn{1}{m{1,6cm}|}{\ctab 77,50\%}\\ 
\hline 
\multicolumn{3}{|m{4,8cm}|}{\chi ^{2}-Wert (Freiheitsgrade):}&\multicolumn{1}{m{1,6cm}|}{\ctab -*}&\multicolumn{3}{m{4,8cm}|}{p-Wert:}&\multicolumn{1}{m{1,6cm}|}{\ctab -*}\\ 
\hline 
\multicolumn{3}{|m{4,8cm}|}{GFI:}&\multicolumn{1}{m{1,6cm}|}{\ctab -*}&\multicolumn{3}{m{4,8cm}|}{AGFI:}&\multicolumn{1}{m{1,6cm}|}{\ctab -*}\\ 
\hline 
\multicolumn{3}{|m{4,8cm}|}{CFI:}&\multicolumn{1}{m{1,6cm}|}{\ctab -*}&\multicolumn{3}{m{4,8cm}|}{RMSEA:}&\multicolumn{1}{m{1,6cm}|}{\ctab -*}\\ 
\hline 
\multicolumn{3}{|m{4,8cm}|}{Faktorreiabilität:}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,88}&\multicolumn{3}{m{4,8cm}|}{\ltab durchschn. erfasste Varianz:}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,71}\\ 
\hline 
\multicolumn{8}{|l|}{\textbf{Informationen zu den einzelnen Indikatoren des Faktors "Wettbewerbsintensität"}}\\ 
\hline 
\multicolumn{4}{|m{6,4cm}|}{\textbf{Bezeichnung des Indikators}}&\multicolumn{1}{m{1,6cm}|}{\ctab \textbf{Mittel-wert}}&\multicolumn{1}{m{1,6cm}|}{\ctab \textbf{Item to Total Korrelation}}&\multicolumn{1}{m{1,6cm}|}{\ctab \textbf{Indikator-relia-bilität}}&\multicolumn{1}{m{1,6cm}|}{\ctab \textbf{t-Wert der Faktorladung}}\\ 
\hline 
\multicolumn{4}{|m{6,4cm}|}{Hier würde dann der Wortlaut eines der Items stehen, um zu sehen, wie es am Ende aussieht.}&\multicolumn{1}{m{1,6cm}|}{\ctab 2,33}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,76}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,71}&\multicolumn{1}{m{1,6cm}|}{\ctab 12,50}\\
\hline
\multicolumn{4}{|m{6,4cm}|}{Hier würde dann der Wortlaut eines der Items stehen, um zu sehen, wie es am Ende aussieht.}&\multicolumn{1}{m{1,6cm}|}{\ctab 2,33}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,76}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,71}&\multicolumn{1}{m{1,6cm}|}{\ctab 12,50}\\
\hline
\multicolumn{4}{|m{6,4cm}|}{Hier würde dann der Wortlaut eines der Items stehen, um zu sehen, wie es am Ende aussieht.}&\multicolumn{1}{m{1,6cm}|}{\ctab 2,33}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,76}&\multicolumn{1}{m{1,6cm}|}{\ctab 0,71}&\multicolumn{1}{m{1,6cm}|}{\ctab 12,50}\\
\hline
\end{tabular}
} % small Ende
\end{center}


\end{document}
Eine weitere, aber (bis jetzt) nicht elementare Frage wäre: Wie kann ich die Zeilenhöhe individuell festlegen? Bisher konnte ich nur mit Hilfe von
 \renewcommand\arraystretch{1,5}
ALLE zeilen in Ihrer Höhe verändern.

Vielen Dank im voraus.

Verfasst: Fr 12. Okt 2012, 16:02
von esdd
Hallo,

du müsstest eigentlich eine Fehlermeldung erhalten haben, dass \chi^{2} den Mathemodus erfordert? Ersetz das also durch $\chi^{2}$ und stimmt bei mir die Spaltenbreite.

Gruß
Elke

Verfasst: Fr 12. Okt 2012, 17:42
von PatKi
Hallo Elke,

vielen Dank, das war's! Super, jetzt läuft's.

Wenn mir jetzt noch jemand, bei den Zeilenhöhen helfen könnte, dann wäre es perfekt (s.o.). :-D

Verfasst: Sa 13. Okt 2012, 07:22
von sudo
Du kannst in der entsprechenden Zeile einen Strut einbauen. (englicher Fachbegriff, ich weiß noch nicht wie das auf deutsch heißt)
Das geht mit
\rule[-depth]{0pt}{total height}

Um zu sehen wie groß der Strut ist, kannst du die 0pt zB. durch 1pt ersetzen.

Verfasst: So 14. Okt 2012, 14:13
von PatKi
Hallo sudo,

vielen Dank für den Hinweis, aber wie bzw. wo genau muss ich diesen Code in der entsprechenden Zeile einbauen?