PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auf der Suche nach der perfekten Tabelle



Folke Tolk
13-04-2010, 13:32
Seit gestern versuche ich, in Latex und mit Hilfe des Texniccenters die perfekte Tabelle zu erstellen. Noch bin ich nicht ganz zufrieden, deshalb suche ich jetzt eure Profi-Hilfe. Das soll meine Tabelle "können":

- Querformat
- vier Spalten in lesbarem Abstand
- Zellen mit viel Text
- die Spalten enthalten Aufzählungen

Das ist bisher mein Minimalbeispiel:

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{rotating}
\begin{document}
Hier sehr viel Text.
\setlength{\tabcolsep}{10pt}
\begin{sidewaystable}[htbp]
\caption{Übersicht}\label{tab:Übersicht}
\begin{tabularx}{\textwidth}{X@{}| X@{} X@{} X@{}}\toprule
& \textit{Überschrift Spalte 2} & \textit{Überschrift Spalte 3} & \textit{Überschrift Spalte 2}\\\midrule
relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text\\
relativ viel Text relativ viel Text& relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text\\
relativ viel Text & relativ viel Text & relativ viel Text & relativ viel Text\\
\end{tabularx}
\end{sidewaystable}
Test the next paragraph the next paragraph the next paragraph the next paragraph the next paragraph the next paragraph the next paragraph.
\end{document}

Die Probleme im Überblick:
- Es entsteht zwar ein "guter" Abstand zwischen Spalte 1 und 2, nicht aber zwischen den anderen Spalten. Warum?
- Wie erreiche ich, dass die Tabelle so in den restlichen Text eingebunden wird, dass vorher und hinterher keine "Lücken" entstehen?

Für Hilfe bin ich sehr dankbar!
Im Anhang findet sich das (unperfekte) Ergebnis zur Ansicht.

u_fischer
13-04-2010, 13:38
Es entsteht zwar ein "guter" Abstand zwischen Spalte 1 und 2, nicht aber zwischen den anderen Spalten. Warum?

Weil du dir mit @{} viel Mühe gibst, den "guten" Abstand zu unterdrücken.


Wie erreiche ich, dass die Tabelle so in den restlichen Text eingebunden wird, dass vorher und hinterher keine "Lücken" entstehen?

Wenn genügend Text da ist, wird sie von alleine so gleiten, dass das klappt.

Folke Tolk
13-04-2010, 14:36
Genial, vielen Dank! Tatsächlich ist es so, dass die Abstände zwischen allen Spalten stimmen, wenn man die @{} entfernt. Auch in den restlichen Text ist die Tabelle jetzt sehr gut eingebunden.
Wie kann ich im Fließtext jetzt einen Querverweis zur Tabelle einfügen? Der sollte etwa so aussehen:

Tabelle [Tabellennummer] auf S. [S.] zeigt ...

Danke!

lockstep
13-04-2010, 15:22
\documentclass{article}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}% ngerman ev. als Klassenoption

\usepackage[ngerman]{varioref}% ngerman ev. als Klassenoption

\begin{document}

\begin{table}
\centering
\begin{tabular}{cc}
Rosen & 1 \\
Tulpen & 2 \\
Nelken & 3
\end{tabular}
\caption{Blumen}
\label{tab:blumen}
\end{table}

\clearpage

Ein bisschen Text.

\clearpage

Wie Tabelle~\vref{tab:blumen} zeigt \dots

\end{document}


lockstep

Folke Tolk
13-04-2010, 15:46
Vielen Dank, lockstep, das klappt. Kann ich statt "auf der nächsten Seite" auch die Seitenzahl ausgeben lassen? Also so:

Wie Tabelle [Tabellenüberschrift] auf S. [Seitenzahl] zeigt

Das wäre oberklasse!

lockstep
13-04-2010, 15:53
Lass deine Phantasie spielen: Lade ich irgendwelche Pakete, die du nicht lädst? Sieht der Name eines dieser Pakete so ähnlich aus wie der Name des Befehls in deiner Fehlermeldung?

lockstep

EDIT: Zu deinem geänderten Beitrag: Verzichte auf das Paket varioref und schreibe



Wie Tabelle~\ref{tab:blumen} auf S.~\pageref{tab:blumen} zeigt \dots

Folke Tolk
13-04-2010, 16:13
Vielen Dank für die Hilfe! Alles klappt wie gewünscht!

Folke Tolk
14-04-2010, 09:36
Die Tabelle sieht jetzt ziemlich sehr gut aus. Mittlerweile haben sich aber noch zwei Fragen ergeben:

1) Alle Spalten sind jetzt gleich breit. Es hat sich als sinnvoller herausgestellt, die erste Spalte schmaler zu machen und die anderen drei dafür breiter. Dafür habe ich nur noch keine Lösung gefunden...

2) Kann es sein, dass die Spalten nicht auf gleicher Höhe beginnen? Wenn ich z.B. die zweite Spalte mit einer Aufzählung beginne, die dritte Spalte aber mit Text, so stehen der Text und die Aufzählung nicht auf der gleichen Höhe, obwohl sie das eigentlich sollten/ müssten. Was kann man da tun?

Minimalbeispiel zu 2):

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{rotating}
\begin{document}
Hier sehr viel Text.
\setlength{\tabcolsep}{10pt}
\begin{sidewaystable}[htbp]
\caption{Übersicht}\label{tab:Übersicht}
\begin{tabularx}{\textwidth}{X| X X X}\toprule
& \textit{Überschrift Spalte 2} & \textit{Überschrift Spalte 3} & \textit{Überschrift Spalte 2}\\\midrule
relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text\\
relativ viel Text relativ viel Text&
\begin{enumerate}
\item relativ viel Text
\item relativ viel Text
\end{enumerate}
relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text\\
relativ viel Text & relativ viel Text & relativ viel Text & relativ viel Text\\
\end{tabularx}
\end{sidewaystable}
Test the next paragraph the next paragraph the next paragraph the next paragraph the next paragraph the next paragraph the next paragraph.
\end{document}

Danke!

stan_keiler
14-04-2010, 10:22
zu 1.) funktioniert es wenn du eine spaltenbreite angibst? also:

\begin{tabularx}{1\textwidth}{p{3cm}| X X X}\toprule oder je nachdem wie breit du es brauchst...

lockstep
14-04-2010, 10:34
Nachfolgend eine Lösung zu 1. Zu beachten ist, dass die beim neuen Spaltentyp Z angegebenen Parameter in Summe der Zahl der Spalten entsprechen sollten (0,7 + 1,1 + 1,1 + 1,1 = 4).



\documentclass{article}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{tabularx}
\newcolumntype{Z}[1]{>{\hsize=#1\hsize}X}

\begin{document}

\begin{tabularx}{\textwidth}{Z{0.7}Z{1.1}Z{1.1}Z{1 .1}}
Spalte A & Spalte B & Spalte C & Spalte D \\
eher weniger Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text \\
eher weniger Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text \\
eher weniger Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text & relativ viel Text relativ viel Text
\end{tabularx}

\end{document}


lockstep

Folke Tolk
14-04-2010, 10:49
Sowohl die Lösung von stan_keiler, als auch die von lockstep werfen genau das aus, was ich mir vorgestellt habe. Ich habe mich für die von stan_keiler vorgeschlagene Lösung entschieden, da sie mir - wenn ich es richtig verstanden habe - erlaubt, die nächste Tabelle (irgendwann in dem langen Text wird sicher noch einmal eine kommen) wieder individuell zu gestalten, was sehr wahrscheinlich nötig sein wird.
Zu 2): Ist die beschriebene Verschiebung zu sehen oder habe ich einen Knick in der Pupille :confused:?

u_fischer
14-04-2010, 10:59
zu 2. übertrage diese Lösung:


\documentclass{scrartcl}
\makeatletter
\newcommand\novspace{\@minipagetrue}
\makeatother
\begin{document}

\begin{tabular}{lp{5cm}}
a &\novspace
\begin{itemize}
\item B
\end{itemize}
\end{tabular}

\end{document}

Folke Tolk
14-04-2010, 11:18
Das klappt, wenn ich einfach

& \novspace
\begin{enumerate}
\item

setze. Perfekt, vielen Dank! Gibt es einen Mrunix-paypal-Spendenbutton oder ist diese Frage verpönt?