tabularx auf Seitenbreite mit zentrierten Spalten/Zellen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: tabularx auf Seitenbreite mit zentrierten Spalten/Zellen

von yellowbird » Fr 28. Aug 2015, 19:08

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!

von Johannes_B » Fr 28. Aug 2015, 18:16

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}

von yellowbird » Fr 28. Aug 2015, 18:01

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!

von Johannes_B » Fr 28. Aug 2015, 17:31

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}

von saputello » Fr 28. Aug 2015, 17:09

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?

tabularx auf Seitenbreite mit zentrierten Spalten/Zellen

von yellowbird » Fr 28. Aug 2015, 17:02

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]

Nach oben