Tabelleninhalt mir individueller Spaltenbreite zentrieren

Tabellen und Grafiken erstellen und anordnen


Andreas R.

Tabelleninhalt mir individueller Spaltenbreite zentrieren

Beitrag von Andreas R. »

Hallo zusammen,

ich arbeite seit etwa 2 Wochen mit LaTeX an einer Arbeit für die Uni und bin im Moment ein wenig am verzweifeln.

Ich habe mir eine Tabelle erstellt, bei der ich aber die Spaltenbreite individuell einstellen musste. Ich wollte dann eigentlich den Inhalt der Spalten zentrieren, aber irgendwie nimmt LaTeX das nicht so ganz hin über den "c"-Befehl oben.

Ein zweites Problem habe ich damit, dass dieser \caption-Befehl bei mir nicht funktioniert. Egal was ich oben reinschreiben (hab nun wirklich schon viel dazu ausprobiert), immer bekomme ich unten unter der Tabelle einen Error, wie z.B.: "Package caption Error: \caption outside float. \caption (followed by:{usw.}"

Gibt es eigentlich eine Einstellung, wo ich LaTeX sagen kann wo die Tabellen positioniert werden sollen? Ich hätte sie gerne mittig zentriert auf der Seite und meine mich erinnern zu können, dass LaTeX das auch von Hause aus so machen würde. Aber irgendwie setzt er mir die Tabellen alle linksbündig auf die Seite. Woran könnte das liegen?

OK, für euch wird das bestimmt ein banaler Anfänger-Fehler sein, aber ehrlich gesagt weiß ich im Moment nicht wo der Fehler liegt und wäre für jede Hilfe dankbar.

Den Code zu der o.g. Tabelle häng ich hier mal an!
\documentclass[a4paper, 10pt, oneside]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{tabularx,calc}
\usepackage[left=2.5cm, right=2.5cm,top=2.5cm, bottom=2cm]{geometry}
\renewcommand{\baselinestretch}{1.25}
\setkomafont{sectioning}{\bfseries}
\usepackage{caption}
\begin{document}

\begin{tabular}{|c||m{2,7cm}|m{2.7cm}||m{2.7cm}|m{2.7cm}|}
\hline
\textsc{} &\multicolumn{2}{|c||}{Neuere Schätzung} &
\multicolumn{2}{|c|}{Ältere Schätzung}\\
\textsc{} &\multicolumn{2}{|c||}{(CRAFTS/HARLEY)} &
\multicolumn{2}{|c|}{(DEANE/COLE)}\\
\hline 
\textsc{Zeit} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt}\\
\textsc{} & \textsc{} & \textsc{pro Kopf} &
\textsc{} & \textsc{pro Kopf}\\
\hline \hline

1700-1760 & 0,69 & 0,31 & 0,66 & 0,45\\
1760-1780 & 0,70 & 0,01 & 0,65 & -0,04\\
1780-1801 & 1,31 & 0,35 & 2,06 & 1,08\\
1801-1831 & 1,97 & 0,52 & 3,06 & 1,61\\\hline

\end{tabular}
\caption{Wachstum in Großbritannien (in \% p.a.)}
Danke für eure Zeit und Hilfe!

Gruss Andreas

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

Beitrag von Xenara »

caption funktioniert nur in Gleitumgebungen wie figure oder table. Wenn du es gleiten lassen möchtest, sieht der Code so aus:
\begin{table}[htbp]
\centering
\caption{Caption, steht bei Tabellen für gewöhnlich oben.}
\label{tab:label}
\begin{tabular}{ccc}
1 & 2 & 3 
\end{tabular}
\end{table}
Ohne Gleiten jedoch so:
\usepackage{capt-of} oder \usepackage{caption}
...

\begin{minipage}{\textwidth}
\centering
\captionof{table}{Caption, steht bei Tabellen für gewöhnlich oben.}
\label{tab:label}
\begin{tabular}{ccc}
1 & 2 & 3 
\end{tabular}
\end{minipage}
Und zentrierte Spalten mit fixer Breite kann man mit Hilfe des Pakets array machen:
\documentclass[a4paper]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{array}
\usepackage{blindtext}

\begin{document}

\begin{table}[htbp]%
\begin{tabular}{>{\centering\arraybackslash}p{5cm}c>{\centering\arraybackslash}p{5cm}}
Text & Text & Text\\
Hier steht viel Text, der zentriert wird. & 1 & 2
\end{tabular}
\caption{}
\label{}
\end{table}

\end{document}
Man kann auch eigene Spalten definieren, siehe dazu die Doku von array.

Ich hab mal bei der Gelegenheit deine Tabelle hier etwas überarbeitet. Beim Satz von Tabellen gilt "vertikale Linien sind böse". Man sieht es auch eigentlich in keinem guten Buch.
Sieh dir mal die beiden Versionen an, was dir besser gefällt. Erklärungen sind in Form von Kommentaren direkt im Code.
\documentclass[a4paper, 10pt, oneside]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{calc}% Lieber jedes Paket extra laden
\usepackage[left=2.5cm, right=2.5cm,top=2.5cm, bottom=2cm]{geometry}
\renewcommand{\baselinestretch}{1.25}
\setkomafont{sectioning}{\bfseries}
\usepackage{caption}

\usepackage{array}
\usepackage{booktabs}


\begin{document}

\section{Korrigierte, bisherige Version}

\begin{table}[htbp]
\centering
\caption{Wachstum in Großbritannien (in \% p.a.)}
\begin{tabular}{|c||m{2,7cm}|m{2.7cm}||m{2.7cm}|m{2.7cm}|}
\hline
\textsc{} &\multicolumn{2}{|c||}{Neuere Schätzung} &
\multicolumn{2}{|c|}{Ältere Schätzung}\\
\textsc{} &\multicolumn{2}{|c||}{(CRAFTS/HARLEY)} &
\multicolumn{2}{|c|}{(DEANE/COLE)}\\
\hline
\textsc{Zeit} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt}\\
\textsc{} & \textsc{} & \textsc{pro Kopf} &
\textsc{} & \textsc{pro Kopf}\\
\hline \hline

1700-1760 & 0,69 & 0,31 & 0,66 & 0,45\\
1760-1780 & 0,70 & 0,01 & 0,65 & -0,04\\
1780-1801 & 1,31 & 0,35 & 2,06 & 1,08\\
1801-1831 & 1,97 & 0,52 & 3,06 & 1,61\\\hline
\end{tabular}
\end{table}


\section{Überarbeitete, neue Version}


\begin{table}[htbp]
% Zentriert den gesamten Inhalt dieser Umgebung auf der Seite
\centering
% Die Caption einer Tabelle steht für gewöhnlich oben
\caption{Wachstum in Großbritannien (in \% p.\,a.)}% Zwischen p. und a. einen kleinen Abstand eingefügt, wie bei z.\,B.
% Ggf. ein Label definieren:
\label{tab:label}
% Um die Länge von "-" in einer Variablen zu speichern:
\newlength{\mylength}
\settowidth{\mylength}{\widthof{-}}
% Neue Tabellenspalte definieren. Das \arraybackslash ist nötig, damit Zeilenumbrüche richtig erkannt werden.
\newcolumntype{M}[1]{>{\centering\arraybackslash}b{#1}}% Hier mit m,p,b spielen.
% Hier geht die eigentliche Tabelle los
\begin{tabular}{cM{2.7cm}M{2.7cm}M{2.7cm}M{2.7cm}}
\toprule
&\multicolumn{2}{c}{Neuere Schätzung} & \multicolumn{2}{c}{Ältere Schätzung}\\
&\multicolumn{2}{c}{(CRAFTS/HARLEY)} & \multicolumn{2}{c}{(DEANE/COLE)}\\
\cmidrule(lr){2-3}
\cmidrule(lr){4-5}
\textsc{Zeit} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt \newline pro Kopf} & \textsc{Sozialprodukt} & \textsc{Sozialprodukt \newline pro Kopf}\\
\cmidrule(lr){2-3}
\cmidrule(lr){4-5}
1700-1760 & 0,69 & 0,31 & 0,66 & 0,45\\
1760-1780 & 0,70 & 0,01 & 0,65 & \hspace*{-\mylength}-0,04\\
1780-1801 & 1,31 & 0,35 & 2,06 & 1,08\\
1801-1831 & 1,97 & 0,52 & 3,06 & 1,61\\
\bottomrule
\end{tabular}
\end{table}

\end{document}

Benutzeravatar
Sepp99
Forum-Meister
Forum-Meister
Beiträge: 1569
Registriert: So 29. Aug 2010, 17:26
Wohnort: Offenhausen/OÖ

Beitrag von Sepp99 »

Anmerkung: bei KOMAscript-Klassen bietet sich anstatt
\caption

der Befehl
\captionabove
an, dann hängt die Überschrift nicht so an der Tabelle.

Andreas R.

Beitrag von Andreas R. »

WOW,

da sag ich mal: VIELEN DANK, Xenara!!!

Du hast mir echt geholfen.

Die Tabelle sieht echt klasse aus, ich kannte halt bisher nur Word und da ging das mit dem Tabellenformatieren doch etwas (für meine LaTeX-Anfänger-Begriffe leichter).

Werd mich jetzt mal dran machen auch meine anderen Tabellen so zu gestalten, hoffentlich schaffe ich das auch ;-)


Gruß
Andreas

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

Beitrag von Xenara »

Gerne geschehen :)

Das mit den Tabellen bekommst du sicherlich hin, sooo schwierig ist es nicht, nur etwas anders.
In der Booktabs-Doku steht einiges dazu drin, oder auch hier findet man einige Ideen.

Viel Spass dabei!

Antworten