komplexe Tabelle mit tabularx über mehrere Seiten

Tabellen und Grafiken erstellen und anordnen


yellowbird
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 28. Aug 2015, 16:49

komplexe Tabelle mit tabularx über mehrere Seiten

Beitrag von yellowbird »

Hallo zusammen,

da ich nun Seit einigen Studen an der Lösung meines Problems arbeite und kein Land in Sicht ist, wende ich mich an euch!
Ich habe eine recht komplexe Tabelle mit tabularx erstellt. Diese enthält sowohl multicolums als auch multirows, was problemlos klappte:
%Muster zum Generieren von Tabellen

\documentclass[a4paper,12pt,onesite]{article}

\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[]{xcolor}
\usepackage[german]{babel}
\usepackage{setspace}
\usepackage{fancyhdr}
\usepackage[numbers, round]{natbib}
\usepackage{graphicx}
\usepackage{booktabs} %Für Tabellen im "wissenschaftlichen Stil" mit ausschließlich horizontalen Linien
\usepackage[justification=RaggedRight, singlelinecheck=false]{caption} %Für die Tabellenüberschrift (linkszentriert)
\usepackage{siunitx} %Zur individuellen Anpassung der Abstände zwischen den Spalten
\usepackage{dcolumn} %Zur kommazentrierten Darstellung der Werte mit Dezimalstellen in den Spalten         
\usepackage[flushleft]{threeparttable} %Für Anmerkungen etc. unter der Tabelle
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{icomma}
\usepackage{nicefrac}
\usepackage{longtable,tabu}
% Seitengröße 
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
headsep=10mm, footskip=12mm, textwidth=160mm}
%\tolerance=1500

% Zeilenabstand 
\setstretch{1.5}

\newcommand{\tabhead}[1]{\textbf{#1}}


\begin{document}


\begin{table}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}
	\small

	\caption{Überblick über die Variablen}

		\begin{tabularx}{\textwidth}{>{\raggedright\arraybackslash}m{.2\textwidth}>{\raggedright\arraybackslash}m{.2\textwidth}XXXXXXXl>{\centering\arraybackslash}p{.2\textwidth}}

			\toprule
			\tabhead{Variable} & 
			\tabhead{Ausprägung oder Spanne} &
			\multicolumn{2}{c}{\tabhead{Welle 1}} &
			\multicolumn{2}{c}{\tabhead{Welle 2}} &  
			\multicolumn{2}{c}{\tabhead{Welle 3}} \\
			\cmidrule(lr){3-4}
			\cmidrule(lr){5-6}
			\cmidrule(lr){7-8} 
			& & 
			\tabhead{N} & 
			\tabhead{$\O$ ($SD$)  oder \%} &
			\tabhead{N} & 
			\tabhead{$\O$ ($SD$) oder \%} &
			\tabhead{N} & 
			\tabhead{$\O$ ($SD$) oder \%} \\
			
			\midrule
			 
			\multirow{2}{2cm}{Freundschaft} & (0) nein & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  & (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  
										  \addlinespace
			
			\multirow{3}{2cm}{Freundschafts-stärke}	& (0) keine & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) schwach & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (2) eng & 11111	& \%	& 11111	& \% & 11111	& \%\\
										  			
\addlinespace
		\bottomrule
		\addlinespace[.09cm]
	\end{tabularx}
\begin{tablenotes}
       \footnoterule
        \footnotesize
        \item Quelle: eigene Berechnungen
\end{tablenotes} 
\end{table}



\end{document}

nun wird die Tabelle aber immer länger und geht über mindestens 2 Seiten (wenn sie denn gesetzt werden würde...).
Das longtable Kommando fällt wohl eher raus, da es nicht mit den nötigen tabularx Kommandos zusammenspielt. Dann habe ich ltxtable ausprobiert und zwar wie folgt:
%Muster zum Generieren von Tabellen

\documentclass[a4paper,12pt,onesite]{article}

\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[]{xcolor}
\usepackage[german]{babel}
\usepackage{setspace}
\usepackage{fancyhdr}
\usepackage[numbers, round]{natbib}
\usepackage{graphicx}
\usepackage{booktabs} %Für Tabellen im "wissenschaftlichen Stil" mit ausschließlich horizontalen Linien
\usepackage[justification=RaggedRight, singlelinecheck=false]{caption} %Für die Tabellenüberschrift (linkszentriert)
\usepackage{siunitx} %Zur individuellen Anpassung der Abstände zwischen den Spalten
\usepackage{dcolumn} %Zur kommazentrierten Darstellung der Werte mit Dezimalstellen in den Spalten         
\usepackage[flushleft]{threeparttable} %Für Anmerkungen etc. unter der Tabelle
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{icomma}
\usepackage{nicefrac}
\usepackage{ltxtable}
% Seitengröße 
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
headsep=10mm, footskip=12mm, textwidth=160mm}
%\tolerance=1500

% Zeilenabstand 
\setstretch{1.5}



\LTXtable{\textwidth}{table.tex}


\end{document}



	
und table.tex sieht so aus (sorry, sehr lang, aber sonst geht es nicht über mehrere Seiten):
\newcommand{\tabhead}[1]{\textbf{#1}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}
	
			\begin{longtable}{>{\raggedright\arraybackslash}m{.2\textwidth}>{\raggedright\arraybackslash}m{.2\textwidth}XXXXXl>{\centering\arraybackslash}p{.2\textwidth}}

			\toprule
			\tabhead{Variable} & 
			\tabhead{Ausprägung oder Spanne} &
			\multicolumn{2}{c}{\tabhead{Welle 1}} &
			\multicolumn{2}{c}{\tabhead{Welle 2}} &  
			\multicolumn{2}{c}{\tabhead{Welle 3}} \\
			\cmidrule(lr){3-4}
			\cmidrule(lr){5-6}
			\cmidrule(lr){7-8} 
			& & 
			\tabhead{N} & 
			\tabhead{$\O$ ($SD$)  oder \%} &
			\tabhead{N} & 
			\tabhead{$\O$ ($SD$) oder \%} &
			\tabhead{N} & 
			\tabhead{$\O$ ($SD$) oder \%} \\
			
			\midrule
			 
			\multirow{2}{2cm}{Freundschaft} & (0) nein & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  & (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  
										  \addlinespace
			
			\multirow{3}{2cm}{Freundschafts-stärke}	& (0) keine & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) schwach & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (2) eng & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													
													\addlinespace
			\multirow{2}{2cm}{Geschlecht} 			& (0) Mädchen & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) Junge & 11111	& \%	& 11111	& \% & 11111	& \%	\\	
										  
										  				\addlinespace															

													
			\multirow{5}{2cm}{Migrations-hintergrund}	& (1) uuuuuu& 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (2) uuuuuu& 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (3) uuuuuu& 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (4) uuuuuu& 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (5) $\nicefrac{1}{2}$ uuuuuu& 11111	& \%	& 11111	& \% & 11111	& \%	\\
													
													\addlinespace
													
			\multirow{5}{2cm}{Kulturelles Kapital}		& (1) keins & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (2) wenig & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (3) mittel & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (4) viel & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													& (5) sehr viel & 11111	& \%	& 11111	& \% & 11111	& \%	\\
													
													\addlinespace										
													
			Ökonomisches Kapital	& 0-5 & 00000	& (SD)	& 00000	& (SD) & 00000	& (SD)	\\ 
			
			\addlinespace
			
			Schulbindung	& 0-5 & 00000	& (SD)	& 00000	& (SD) & 00000	& (SD)	\\ 
			
			\addlinespace
			
			\textbf{Dyaden} & & & & & & & \\
			
			\multirow{2}{2cm}{jjjjjjjjjj}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{hhhhhhhhh}		 & (0) nein & 00000 &\%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{nnnnnnnnn}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{ooooooo}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{kjkkl-\\$\nicefrac{1}{2}$ gggggg}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace	
										  																
			\multirow{2}{2cm}{uuuuuuuu}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{ooooooo}		 & (0) nein & 00000 &\%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{lllllllllllll}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{kkkkkkkkkk}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
										  			
			\multirow{2}{2cm}{kkkkk-\\$\nicefrac{1}{2}$ lllll}		 & (0) nein & 00000 & \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) ja & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  																\addlinespace										
												
			
			\multirow{2}{2cm}{Unternehmungs-lust} & (0) $\le3 \times / Woche$ & 00000	& \%	& 00000	& \% & 00000	& \%	\\ 
										  			& (1) $\textgreater3 \times / Woche$ & 11111	& \%	& 11111	& \% & 11111	& \%	\\
										  			
										  		


\addlinespace
		\bottomrule
		\addlinespace[.09cm]
	%\end{tabularx}
\begin{tablenotes}
       \footnoterule
        \footnotesize
        \item Quelle: eigene Berechnungen
\end{tablenotes} 
\end{longtable}

Leider kompiliert es nicht. Hat jemand eine Idee oder ein ähnliches Problem schon gehabt?
Ich bin über alle Vorschläge dankbar!

Grüße!

Besserwisser

Beitrag von Besserwisser »

In der Hauptdatei fehlt das \begin{document} und in der Tabellendatei sollte nur die longtable-Umgebung stehen. Einstellungen mit \newcommand oder \renewcommand gehören dort nicht hin. Die gehören in die Dokumentpräambel. Und tablenotes gehört eigentlich zur Umgebung threeparttable und hat in einer longtable nicht verloren.

Und willst du wirklich die veraltete, deutsche Rechtschreibung? Wenn nicht ist german beim Laden von babel falsch. Dann gehört da ngerman hin.
\documentclass[a4paper,12pt,onesite]{article}

\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[]{xcolor}
\usepackage[german]{babel}
\usepackage{setspace}
\usepackage{fancyhdr}
\usepackage[numbers, round]{natbib}
\usepackage{graphicx}
\usepackage{booktabs} %Für Tabellen im "wissenschaftlichen Stil" mit ausschließlich horizontalen Linien
\usepackage[justification=RaggedRight, singlelinecheck=false]{caption} %Für die Tabellenüberschrift (linkszentriert)
\usepackage{siunitx} %Zur individuellen Anpassung der Abstände zwischen den Spalten
\usepackage{dcolumn} %Zur kommazentrierten Darstellung der Werte mit Dezimalstellen in den Spalten        
\usepackage[flushleft]{threeparttable} %Für Anmerkungen etc. unter der Tabelle
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{icomma}
\usepackage{nicefrac}
\usepackage{ltxtable}
% Seitengröße
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
headsep=10mm, footskip=12mm, textwidth=160mm}
%\tolerance=1500

% Zeilenabstand
\setstretch{1.5}

\newcommand{\tabhead}[1]{\textbf{#1}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}
   
\usepackage{filecontents}

\begin{document}

\begin{filecontents}{table.tex}
  \begin{longtable}{>{\raggedright\arraybackslash}m{.2\textwidth}>{\raggedright\arraybackslash}m{.2\textwidth}XXXXXl>{\centering\arraybackslash}p{.2\textwidth}}
    
    \toprule
    \tabhead{Variable} &
    \tabhead{Ausprägung oder Spanne} &
    \multicolumn{2}{c}{\tabhead{Welle 1}} &
    \multicolumn{2}{c}{\tabhead{Welle 2}} &  
    \multicolumn{2}{c}{\tabhead{Welle 3}} \\
    \cmidrule(lr){3-4}
    \cmidrule(lr){5-6}
    \cmidrule(lr){7-8}
    & &
    \tabhead{N} &
    \tabhead{$\O$ ($SD$)  oder \%} &
    \tabhead{N} &
    \tabhead{$\O$ ($SD$) oder \%} &
    \tabhead{N} &
    \tabhead{$\O$ ($SD$) oder \%} \\
    \midrule
    \endhead
    \addlinespace
    \midrule
    \multicolumn{9}{r}{\footnotesize Wird auf der nächsten Seite fortgesetzt \dots}
    \endfoot
    \bottomrule
    \multicolumn{9}{l}{\footnotesize Quelle: Eigene Berechnungen}
    \endlastfoot
    \multirow{2}{2cm}{Freundschaft} & (0) nein & 00000   & \%   & 00000   & \% & 00000   & \%   \\
                            & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace
    \multirow{3}{2cm}{Freundschafts-stärke}   & (0) keine & 00000   & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) schwach & 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (2) eng & 11111   & \%   & 11111   & \% & 11111   & \%   \\

    \addlinespace
    \multirow{2}{2cm}{Geschlecht}          & (0) Mädchen & 00000   & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) Junge & 11111   & \%   & 11111   & \% & 11111   & \%   \\  
    \addlinespace                                            
    \multirow{5}{2cm}{Migrations-hintergrund}   & (1) uuuuuu& 00000   & \%   & 00000   & \% & 00000   & \%   \\
                                     & (2) uuuuuu& 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (3) uuuuuu& 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (4) uuuuuu& 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (5) $\nicefrac{1}{2}$ uuuuuu& 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace
    \multirow{5}{2cm}{Kulturelles Kapital}      & (1) keins & 00000   & \%   & 00000   & \% & 00000   & \%   \\
                                     & (2) wenig & 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (3) mittel & 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (4) viel & 11111   & \%   & 11111   & \% & 11111   & \%   \\
                                   & (5) sehr viel & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    Ökonomisches Kapital   & 0-5 & 00000   & (SD)   & 00000   & (SD) & 00000   & (SD)   \\
    \addlinespace
    Schulbindung   & 0-5 & 00000   & (SD)   & 00000   & (SD) & 00000   & (SD)   \\
    \addlinespace
    \textbf{Dyaden} & & & & & & & \\*
    \multirow{2}{2cm}{jjjjjjjjjj}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{hhhhhhhhh}       & (0) nein & 00000 &\%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{nnnnnnnnn}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{ooooooo}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{kjkkl-\\$\nicefrac{1}{2}$ gggggg}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace  
    \multirow{2}{2cm}{uuuuuuuu}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{ooooooo}       & (0) nein & 00000 &\%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{lllllllllllll}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{kkkkkkkkkk}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{kkkkk-\\$\nicefrac{1}{2}$ lllll}       & (0) nein & 00000 & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) ja & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace                              
    \multirow{2}{2cm}{Unternehmungs-lust} & (0) $\le3 \times / Woche$ & 00000   & \%   & 00000   & \% & 00000   & \%   \\
                                     & (1) $\textgreater3 \times / Woche$ & 11111   & \%   & 11111   & \% & 11111   & \%   \\
    \addlinespace
\end{longtable}
\end{filecontents}

\LTXtable{\textwidth}{table.tex}

\end{document}
Insgesamt erscheint mir die Tabelle etwas unübersichtlich. Aber du wirst schon wissen, was du tust.

BTW: Es gibt auch noch ltablex.

yellowbird
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 28. Aug 2015, 16:49

Beitrag von yellowbird »

Klasse, vielen Dank, jetzt funktioniert es!

Viele Dank auch für deine Anmerkungen!

--> Du hast natürlich völlig Recht, dass \begin{document} fehlt... vermutlich war es gestern noch schon etwas spät für mich...aber wie es so ist, wenn man probiert ein problem zu lösen.

-->Gerne würd ich noch ein Frage zu deinen Komentaren anschließen:

Einstellungen mit \newcommand oder \renewcommand gehören dort nicht hin. Die gehören in die Dokumentpräambel.
Mein Hauptdokument sieht natürlich etwas anders aus und besteht aus vielen weiteren Tabellen. Und im Hauptdkoment habe ich generelle Einstellungen mit den o.g. Befehlen gesetzt, die füe alle Tabellen im Dokument gelten.
Für diese eine spezielle Tabelle möchte ich jedoch andere Einstellungen setzen. Deshalb habe ich die für diese Tabelle gewünschten Einstellungen mit \renewcommand in die Tabellenumgebung geschrieben, sodass die ursprünglichen generellen Tabelleneigenschaften wieder für alle weiteren Tabellen gelten.
Gibt es da eine andere Möglichkeit?

--> ngerman ist schon geändert, nur noch nicht in meinem Tabellen-Test-Dokument ;)

Danke nochmal! Und falls es eine Lösung für die Tabelleneinstellungen gibt, wäre ich sehr dankbar!

Schönes Wochenende!

Antworten