PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle mit verschieden formatierten Zeilen



Tomatito80
03-12-2008, 13:09
Hallo zusammen,

Ich will gerade für meine Diplomarbeit eine Tabelle in Latex erstellen, und habe dabei folgende Zielsetzungen:

1) Die Gesamtbreite der Tabelle soll der gesamten Seitenbreite entsprechen
2) Die Zeilenüberschriften sollen zentriert sein
3) Die Daten der Tabelle sollen zum teil zentriert sein, zum teil so ausgerichtet, dass die Dezimalpunkte untereinander stehen.

Alles zusammen hab ich bisher noch nicht hinbekommen...

Punkt 3) ist nicht so wichtig, es ist im Prinzip auch ok, wenn die Daten rechtsbündig sind, weil dann die Dezimalpunkte auch untereinander stehen...

Ich habe die Tabelle mal folgendermassen versucht (wie gesagt, mit rechtsbündigen Datenfeldern):

oben habe ich folgenden Spaltentyp definiert:
\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}

dann die Tabelle folgendermassen:

\begin{tabularx}{\textwidth}{|c|Y|Y|Y|Y|Y|Y|}

\cline{3-6}
\multicolumn{2}{c}{} & \multicolumn{4}{|c|}{Values per km$^2$} & \multicolumn{1}{c}{}\\
\hline
Ring area $Z_x$ & Surface area (km$^2$) & Number of trees (m) & Tree lengths (m) & Street lengths without trees (m) & Total street lengths (m) & Tree lengths / Total street lengths \\
\hline
1 & 0,12 & 51,46 & 2472 & 32906 & 35378 \\
\hline
2 & 0,35 & 40,03 & 1613 & 22779 & 24392 \\
\hline
3 & 0,58 & 30,88 & 3482 & 11599 & 15082 \\
\hline
4 & 0,82 & 15,93 & 1944 & 14460 & 16405 \\
\hline

\end{tabularx}

Das sieht soweit nicht schlecht aus, ABER:
Die Spaltenüberschriften sind ebenfalls rechtsbündig, das ist super hässlich. Wenn ich jetzt anfangen, jede Zelle meiner Spaltenüberschriften it \multicolumn{1}{c}{inhalt} formatiere, dann wird der Text in der Zelle nicht mehr umgebrochen und die Tabelle wird zu breit! Ich konnte in diesem Falle nicht mal mehr mit \newline manuell die Zelle umbrechen... ideal wäre übrigens ein automatischer Zeilenumbruch in der Spaltenüberschrift...

Und, wie gesagt, wenn das mit der Dezimalpunktausrichtung der Spalten noch klappen würde, das wäre perfekt!!!

Meint ihr, ihr könnt mir irgendwie helfen?

LG,
Thomas

mechanicus
03-12-2008, 13:39
1) Die Gesamtbreite der Tabelle soll der gesamten Seitenbreite entsprechen

Warum?


2) Die Zeilenüberschriften sollen zentriert sein

Das wird wohl nicht anders gehen als jedes Mal multicolumn zu nutzen. Du kannst dir ja z. B. einen Befehl definieren, der das ganze kürzt:

\def\MC#1{\multicolumn{1}{@{}>{\Centering}X@{}}{#1}}
...
\MC{Surface area (km$^2$)}


3) Die Daten der Tabelle sollen zum teil zentriert sein, zum teil so ausgerichtet, dass die Dezimalpunkte untereinander stehen.

Hierzu gibt es dcolumn. Aber wie du richtig erkannt hast, sind deine Daten alle gleich lang, alse reicht es aus, wenn sie rechtbündig sind.


Du solltest dir auch überlegen, nicht soviele Linien zu nutzen. Schadet nur der Übersichtlichkeit.

Du kannst deinen Code auch in ein Code-Fenster packen. Hierzu gehört auch, dass dein Beispiel lauffähig ist. (Minimalbeispiel)

Gruß
Marco

Tomatito80
03-12-2008, 13:56
Hallo Marcus,

zuerst mal herzlichen Dank für deine schnelle Antwort. Ok, das mit multicolumn ist ganz gut, aber wie ich schon sagte, ich schaffe es nicht, dass dann innerhalb der multicolumn ein automatischer Zeilenumbruch geschieht. Hast du da eine Idee?

Selbst der manuelle Zeilenumbruch funktioniert bei mir nicht... (zumindest nicht mit \newline)

Grüsse,
Thomas

Minimalbeispiel:



%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[12pt,oneside,a4paper]{scrbook}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,includeheadf oot]{geometry}

%Silbentrennung ausschalten
\usepackage[none]{hyphenat}

%Kopf- und Fußzeile
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{array}

%Absatz nicht einruecken
\setlength\parindent{0pt}

%Fuer mathematische Definitionen
\newtheorem{definition}{Definition}

\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}

\begin{document}

{\footnotesize
\begin{tabularx}{\textwidth}{|c|Y|Y|Y|Y|Y|Y|}

\cline{3-6}
\multicolumn{2}{c}{} & \multicolumn{4}{|c|}{Values per km$^2$} & \multicolumn{1}{c}{}\\
\hline
\multicolumn{1}{|c}{Ring area $Z_x$} & \multicolumn{1}{|c}{Surface area (km$^2$)} & \multicolumn{1}{|c}{Number of trees (m)} & \multicolumn{1}{|c}{Tree lengths (m)} & \multicolumn{1}{|c}{Street lengths without trees (m)} & \multicolumn{1}{|c}{Total street lengths (m)} & \multicolumn{1}{|c|}{Tree lengths / Total street lengths} \\
\hline
1 & 0,12 & 51,46 & 2472 & 32906 & 35378 & 7,00\% \\
\hline
2 & 0,35 & 40,03 & 1613 & 22779 & 24392 & 6,60\% \\
\hline
3 & 0,58 & 30,88 & 3482 & 11599 & 15082 & 23,10\% \\
\hline
4 & 0,82 & 15,93 & 1944 & 14460 & 16405 & 11,90\% \\
\hline
5 & 1,05 & 4,77 & 2119 & 10512 & 12631 & 16,80\% \\
\hline
6 & 1,28 & 11,70 & 1664 & 7516 & 9181 & 18,10\% \\
\hline

\end{tabularx}
}


\end{document}

mechanicus
03-12-2008, 14:11
ich schaffe es nicht, dass dann innerhalb der multicolumn ein automatischer Zeilenumbruch geschieht. Hast du da eine Idee?

Hallo,

das liegt daren, dass du die Spaltendefinition c verwendest. Da ist kein Zeileumbruch möglich!
%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[12pt,oneside,a4paper]{scrbook}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,includeheadf oot]{geometry}

%Silbentrennung ausschalten
\usepackage[none]{hyphenat}

%Kopf- und Fußzeile
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{array}
\usepackage{calc}

%Absatz nicht einruecken
\setlength\parindent{0pt}

%Fuer mathematische Definitionen
\newtheorem{definition}{Definition}

\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}

\begin{document}

{\footnotesize
\begin{tabularx}{\textwidth}{|c|Y|Y|Y|Y|Y|Y|}

\cline{3-6}
\multicolumn{2}{c}{} & \multicolumn{4}{|c|}{Values per km$^2$} & \multicolumn{1}{c}{}\\
\hline
\multicolumn{1}{|X|}{Ring area $Z_x$} & \multicolumn{1}{X|}{Surface area (km$^2$)} & \multicolumn{1}{X|}{Number of trees (m)} & \multicolumn{1}{X|}{Tree lengths (m)} & \multicolumn{1}{X|}{Street lengths without trees (m)} & \multicolumn{1}{X|}{Total street lengths (m)} & \multicolumn{1}{X|}{Tree lengths / Total street lengths} \\
\hline
1 & 0,12 & 51,46 & 2472 & 32906 & 35378 & 7,00\% \\
\hline
2 & 0,35 & 40,03 & 1613 & 22779 & 24392 & 6,60\% \\
\hline
3 & 0,58 & 30,88 & 3482 & 11599 & 15082 & 23,10\% \\
\hline
4 & 0,82 & 15,93 & 1944 & 14460 & 16405 & 11,90\% \\
\hline
5 & 1,05 & 4,77 & 2119 & 10512 & 12631 & 16,80\% \\
\hline
6 & 1,28 & 11,70 & 1664 & 7516 & 9181 & 18,10\% \\
\hline

\end{tabularx}
}


\end{document}

Du hast auch nicht den Ratschlag mit booktabs berücksichtigt.
http://userpage.fu-berlin.de/~latex/Materialien/tabsatz.pdf

Gruß
Marco:D

Tomatito80
03-12-2008, 14:44
Hallo Marco ;)

Zuerst mal entschuldigung für die Misshandlung deines Namens...!

Also, das mit den booktabs hat ja eher mit der übesichtlichkeit zu tun, aber ich möchte meine Tabelle vom Prinzip her schon so lassen, nur will ich eben gerne noch einen Zeilenumbruch!
Zumindest kann ich da den Zusammenhang mit booktabs grad nicht erkennen (sorry, falls es doch einen geben sollte, ich bin ziemlicher Anfänger in Latex!!).

Grüsse,
Tomatito

mechanicus
03-12-2008, 15:50
Also, das mit den booktabs hat ja eher mit der übesichtlichkeit zu tun
Du hast recht, es ist für die Übersichtlichkeit, hast du das Beispiel von mir schon laufen lassen?

Gruß
Marco

Tomatito80
03-12-2008, 17:46
Hallo Marco,

ja, danke, dein Beispiel ist in der Tat sehr gut! Ich habe derweil selbst nochmals nachgeforscht und folgendes gebastelt:




%Schriftgroesse, Layout, Papierformat, Art des Dokumentes
\documentclass[12pt,oneside,a4paper]{scrbook}

%Einstellungen der Seitenraender
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,includeheadf oot]{geometry}

%Silbentrennung ausschalten
\usepackage[none]{hyphenat}

%Kopf- und Fußzeile
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{array}

%Groesserer Zeilenabstand
\linespread{1.25}

\usepackage{amsmath}
\usepackage{amssymb}

%neue Tabellenspalte definieren
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}


{\footnotesize
\begin{tabular}
{|>{\Centering}p{0.09\textwidth}|>{\RaggedLeft}p{0.12\textwidth}|>{\RaggedLeft}p{0.1\textwidth}|>{\RaggedLeft}p{0.12\textwidth}|>{\RaggedLeft}p{0.13\textwidth}|>{\RaggedLeft}p{0.11\textwidth}|>{\RaggedLeft}p{0.14\textwidth}|}
\cline{3-6}
\multicolumn{2}{c|}{} & \multicolumn{4}{c|}{Values per km$^2$} & \multicolumn{1}{c}{}\\
\hline
\multicolumn{1}{|C{0.09\textwidth}|}{Ring area $Z_x$} & \multicolumn{1}{C{0.12\textwidth}|}{Surface area (km$^2$)} & \multicolumn{1}{C{0.1\textwidth}|}{Number of \newline trees (m)} & \multicolumn{1}{C{0.12\textwidth}|}{Tree lengths (m)} & \multicolumn{1}{C{0.13\textwidth}|}{Street lengths without trees (m)} & \multicolumn{1}{C{0.11\textwidth}|}{Total street lengths (m)} & \multicolumn{1}{C{0.14\textwidth}|}{(Tree lengths) / (Total street lengths)}\\
\hline
1 & 0,12 & 51,46 & 2472 & 32906 & 35378 & 7,00\% \\
\hline
2 & 0,35 & 40,03 & 1613 & 22779 & 24392 & 6,60\% \\
\hline
3 & 0,58 & 30,88 & 3482 & 11599 & 15082 & 23,10\% \\
\hline
4 & 0,82 & 15,93 & 1944 & 14460 & 16405 & 11,90\% \\
\hline
\end{tabular}
}
\end{document}


Gruesse,
Thomas