tabularx auf Seitenbreite mit zentrierten Spalten/Zellen

Tabellen und Grafiken erstellen und anordnen


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

tabularx auf Seitenbreite mit zentrierten Spalten/Zellen

Beitrag von yellowbird »

Hallo,

ich sitze an einer Tabelle und komme seit geraumer Zeit und mehreren Lösungsversuchen nicht zum gewünschten Ergebnis. Ich erstelle eine Tabelle mit tabularx und multicolums, die über die gesamte Textbereite geht. Soweit so gut. In meinem ersten Beispiel sieht es schon ganz gut aus, allerdings ist jede 2. Spalte plötzlich linksbündig. Ich kann mir nicht erklären woran das liegt. In meinem zweiten Beipspiel tritt dieses Problem nicht auf, dafür werden die Spalten nocht optimal auf die Tabellenlänge bemessen.

Beispiel 1
%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}


% Seitengröße 
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
headsep=10mm, footskip=12mm, textwidth=160mm}
%\tolerance=1500

% Zeilenabstand 
\setstretch{1.5}

\begin{document}


\begin{table}
	\small
	\caption{Ausschöpfungsquoten der Erhebungsebenen und Wellen}


		\begin{tabularx}{\textwidth}{cXcXcXcXcXcXcXcXcX}
		%{cp{0.1\textwidth} {0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.\textwidth}}
			\toprule
			\multicolumn{1}{c}{\textbf{Welle}} & 
			\multicolumn{1}{c}{\textbf{Jahr}} & 
			\multicolumn{1}{c}{\textbf{Klassenstufe}} & 
			\multicolumn{3}{c}{\textbf{Ausschöpfungsquote}} & 
			\multicolumn{1}{p{0.2\textwidth}}{\textbf{Schüler aus vorheriger Welle}} \\
		
			\multicolumn{1}{c}{} & 
			\multicolumn{1}{c}{} & 
			\multicolumn{1}{c}{} & 
			\multicolumn{1}{c}{Schulen} & 
			\multicolumn{1}{c}{Klassen} & 
			\multicolumn{1}{c}{Schüler} & 
			\multicolumn{1}{c}{} \\


				\midrule
				$0$ & $2009$ & $4$ & $69,89\%$ & $42,51\%$ & $73,89\%$ & ??,??\%  \\
				$1$ & $2010$ & $5$ & $69,89\%$ & $41,59\%$ & $75,39\%$ & ??,??\% \\
				$2$ & $2011$ & $6$ & $42,37\%$ & $23,58\%$ & $80,40\%$ & ??,??\% \\
				$3$ & $2012$ & $7$ & $42,11\%$ & $25,90\%$ & $80,40\%$ & ??,??\% \\

\addlinespace
		\bottomrule
		\addlinespace[.09cm]
	\end{tabularx}
\begin{tablenotes}
       \footnoterule
        \footnotesize
        \item Quelle: Feldberichte
\end{tablenotes} 
\end{table}

\end{document}

	
Beispiel 2:
%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}


% Seitengröße 
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
headsep=10mm, footskip=12mm, textwidth=160mm}
%\tolerance=1500

% Zeilenabstand 
\setstretch{1.5}

\begin{document}


\begin{table}
	\small
	\caption{Ausschöpfungsquoten der Erhebungsebenen und Wellen}


		\begin{tabularx}{\textwidth}{ccccccc}
			\toprule
			\multicolumn{1}{c}{\textbf{Welle}} & 
			\multicolumn{1}{c}{\textbf{Jahr}} & 
			\multicolumn{1}{c}{\textbf{Klassenstufe}} & 
			\multicolumn{3}{c}{\textbf{Ausschöpfungsquote}} & 
			\multicolumn{1}{p{0.2\textwidth}}{\textbf{Schüler aus vorheriger Welle}} \\

			\multicolumn{1}{c}{} & 
			\multicolumn{1}{c}{} & 
			\multicolumn{1}{c}{} & 
			\multicolumn{1}{c}{Schulen} & 
			\multicolumn{1}{c}{Klassen} & 
			\multicolumn{1}{c}{Schüler} & 
			\multicolumn{1}{c}{} \\

		

				\midrule
				$0$ & $2009$ & $4$ & $69,89\%$ & $42,51\%$ & $73,89\%$ & ??,??\%  \\
				$1$ & $2010$ & $5$ & $69,89\%$ & $41,59\%$ & $75,39\%$ & ??,??\% \\
				$2$ & $2011$ & $6$ & $42,37\%$ & $23,58\%$ & $80,40\%$ & ??,??\% \\
				$3$ & $2012$ & $7$ & $42,11\%$ & $25,90\%$ & $80,40\%$ & ??,??\% \\
				
\addlinespace
		\bottomrule
		\addlinespace[.09cm]
	\end{tabularx}
\begin{tablenotes}
       \footnoterule
        \footnotesize
        \item Quelle: Feldberichte
\end{tablenotes} 
\end{table}

\end{document}
	
Hat jemand eine Idee wie ich das Problem lösen kann?
Vielen Dank![/code]

saputello
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 98
Registriert: Do 15. Jan 2015, 08:49

Beitrag von saputello »

X-Spalten sind Blocksatz-Spalten. Also erscheint einzeiliger Inhalt darin linksbündig. Man kann das mit \centering für die Spalten ändern. Siehe dazu auch Abschnitt 4.2 der [d]tabularx[/d]-Anleitung.

Statt tabularx könnte man auch tabular* verwenden, um bei c-Spalten zu bleiben, wenn die Zellen alle einzeilig sind und man lediglich die Tabelle auf eine bestimmte Breite aufblasen will. Siehe dazu Wie bekomme ich eine Tabelle in Textbreite?

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Hier mal ein Vorschlag:
\documentclass[a4paper,12pt,
%onesite
	oneside%?
]{article}

\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}%JB: Willst du wirklich die Trennregeln nach alter Rechtschreibung vor 96?
\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
%JB: Naja, nicht wirklich. Wirf mal nen Blick in die Doku, dann sehen deine Zahlen alle viel toller aus
\usepackage{dcolumn} %Zur kommazentrierten Darstellung der Werte mit Dezimalstellen in den Spalten        
%JB: Das kann siunitx auch, man muss es aber auch benutzen.
\usepackage[flushleft]{threeparttable} %Für Anmerkungen etc. unter der Tabelle
\usepackage{tabularx}
\usepackage{icomma}%JB: Vergleiche mit und ohne


% Seitengröße
\geometry{showframe, a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
	headsep=10mm, footskip=12mm, %textwidth=160mm
}%


\newcommand{\tabhead}[1]{\textbf{#1}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}

\begin{table}
	\small
	\caption{Ausschöpfungsquoten der Erhebungsebenen und Wellen}
	\begin{tabularx}{\textwidth}{cccXXXX}
				  %{cp{0.1\textwidth} {0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.\textwidth}}
		\toprule
		\tabhead{Welle} &
		\tabhead{Jahr} &
		\tabhead{Klassenstufe} &
		\multicolumn{3}{c}{\tabhead{Ausschöpfungsquote}} &
		\multicolumn{1}{m{0.2\textwidth}}{\tabhead{Schüler aus vorheriger Welle}} \\
		\cmidrule(lr){4-6}
		& & & {Schulen} & {Klassen} & {Schüler} &  \\

		\midrule
		$0$ & $2009$ & $4$ & $69,89\,\%$ & $42,51\,\%$ & $73,89\,\%$ & ??,??\,\%  \\
		$1$ & $2010$ & $5$ & $69,89\,\%$ & $41,59\,\%$ & $75,39\,\%$ & ??,??\,\% \\
		$2$ & $2011$ & $6$ & $42,37\,\%$ & $23,58\,\%$ & $80,40\,\%$ & ??,??\,\% \\
		$3$ & $2012$ & $7$ & $42,11\,\%$ & $25,90\,\%$ & $80,40\,\%$ & ??,??\,\% \\

		\bottomrule
		\addlinespace[.09cm]
	\end{tabularx}
	\begin{tablenotes}
		\footnoterule
		\footnotesize
	\item Quelle: Feldberichte
	\end{tablenotes}
\end{table}
\end{document}
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

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

Beitrag von yellowbird »

Danke euch beiden!
Ich habe natürlich die tabularx Anleitung gelesen, konnte aber keine sinnvollen Änderungen in meiner Tabelle machen.
Auch den thread habe ich bereits gesehen, und versucht es auf meinen Fall zu übertragen - leider erfolglos.

Vielen Dank, Johannes_B, für deinen Vorschlag. Das hat sehr gut geklappt und danke auch für die sinnvollen Anmerkungen im Code.

Vielleicht bin ich nun ein wenig kleinlich, aber wenn du den Code durchlaufen lässt, siehst du in der letzten Spalte, da wo aktuell noch ? stehen, dass diese nicht zentriert sind.

Gibt es eine einfache Möglichkeit auch diese zu zentrieren?

Vielen Dank nochmal!

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Die p-Spalte im Kopf beißt sich mit der restlichen X-spalte. Besser die komplette Spalte einheitlich definieren.
\documentclass{article}

\usepackage{geometry}
\usepackage{booktabs}
\usepackage[flushleft]{threeparttable}
\usepackage{tabularx}
\usepackage{icomma}

\geometry{showframe, a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm,
	headsep=10mm, footskip=12mm, %textwidth=160mm
}%


\newcommand{\tabhead}[1]{\textbf{#1}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}

\begin{table}
	\small
	\begin{tabularx}{\textwidth}{cccXXX>{\centering\arraybackslash}p{.2\textwidth}}
				  %{cp{0.1\textwidth} {0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.1\textwidth} cp{0.\textwidth}}
		\toprule
		\tabhead{Welle} &
		\tabhead{Jahr} &
		\tabhead{Klassenstufe} &
		\multicolumn{3}{c}{\tabhead{Ausschöpfungsquote}} &
		\raggedright\arraybackslash\tabhead{Sch\"uler aus vorheriger Welle} \\
		\cmidrule(lr){4-6}
		& & & {Schulen} & {Klassen} & {Sch\"uler} &  \\

		\midrule
		$0$ & $2009$ & $4$ & $69,89\,\%$ & $42,51\,\%$ & $73,89\,\%$ & ??,??\,\%  \\
		$1$ & $2010$ & $5$ & $69,89\,\%$ & $41,59\,\%$ & $75,39\,\%$ & ??,??\,\% \\
		$2$ & $2011$ & $6$ & $42,37\,\%$ & $23,58\,\%$ & $80,40\,\%$ & ??,??\,\% \\
		$3$ & $2012$ & $7$ & $42,11\,\%$ & $25,90\,\%$ & $80,40\,\%$ & ??,??\,\% \\

		\bottomrule
		\addlinespace[.09cm]
	\end{tabularx}
	\medbreak
		\footnoterule
		\footnotesize
	 Quelle: Feldberichte
\end{table}
\end{document}
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

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

Beitrag von yellowbird »

Großartig! :D
Ich arbeite noch nicht so lang mit Latex, deshalb ist manches für mich noch ziemlich undurchsichtig, insbesondere sich beißende Kommandos!

Vielen Dank für die schnelle Hilfe!

Antworten