PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellengestaltung



LateX-Jüngling
29-12-2010, 13:28
Liebe TeXperten,

ich habe ein kleines Problem und hoffe, dass mir dieses großartige Forum hier weiterhelfen kann. Es geht um die Gestaltung von Tabellen.

Meine Tabellen erscheinen mir recht groß und passen oftmals nicht auf die Seite, weshalb ich die Schrift mit \tiny entsprechend angepasst habe. Frage 1: geht dies auch irgendwie eleganter?

Frage 2: der \capture{}-Befehl lässt sich ja entweder über oder unter der Tabelle anbringen. Ich möchte aber gerne, dass oberhalb der Tabelle z.B. "Tabelle 1" erscheint und eine etwaige Erläuterung unterhalb der Tabelle. Nun habe ich in den gängigen pdf-how-to-Anleitungen und Wikibooks etc. nichts dazu gefunden, woraus ich schließe, dass es nicht zum Standardreportoie gehört. Kann mir jemand sagen, wie ich das machen könnte? Gibt es Pakete dafür?

Frage 3: Beim Gebrauch von \tiny und \capture wird der von \capture automatisch erzeugte Eintrag "Tabelle 1" nicht entsprechend verkleinert, was natürlich ungünstig aussieht. Gibt es dafür eine Lösung?

Über jegliche Hinweise bin ich zutiefst zu Dank verpflichtet!

Beste Grüße
Der Jüngling.

Anbei meine Präambel:

\documentclass[11pt]{article}
\usepackage{amsfonts,a4,latexsym}
\usepackage{amsmath}
\usepackage{amsthm,amscd,amssymb}
\usepackage[T1]{fontenc}
\usepackage{setspace}
\usepackage{multirow}
\pagestyle{myheadings}
\onehalfspacing
\renewcommand{\jot}{8pt}
\parindent=0pt
\parskip=8pt

Xenara
29-12-2010, 14:02
Mach mal ein vollständiges Minimalbeispiel von so einer Tabelle, mit der Präambel kann man in dem Fall nichts anfangen.
Wir wissen ja nichtmal, was du damit meinst, dass die Tabellen zu gross sind: Horizontal? Vertikal? Spalten zu breit? Kein Umbruch?
Und arbeitest du mit der table-Umgebung?

Also zeig mal so eine deiner Tabellen, ich liebe Tabellengestaltung und kann dir da sicher den einen oder anderen Vorschlag machen.

LateX-Jüngling
29-12-2010, 14:16
Also zeig mal so eine deiner Tabellen, ich liebe Tabellengestaltung und kann dir da sicher den einen oder anderen Vorschlag machen.

Ein vereinfachtes Beispiel ist angefügt. Ich habe in meinen "echten" Tabellen gegenwärtig 7 Spalten und etliche Zeilen (ungefähr 40), die schlicht und ergreifend nicht auf die Seite passen, d.h. die rechten Spalten und unteren Zeilen sind abgeschnitten. Ich würde sie aber gerne auf einer Seite haben, was auch angesichts der mir bekannten Tabellen in veröffentlichten Papern nicht unmöglich zu sein scheint.

Bei dem Beispiel verwende ich \tiny, so dass die Tabelle auf eine Seite passt. (Diese hier würde es sowieso, aber wenn ich alle 7 Spalten nehme und meine 40 Zeilen (wobei ich [1em] jeweils mitzähle), ist halt kein Platz mehr da.

Was ich gerne hätte ist, dass ich unterhalb der Tabelle noch ein wenig was schreiben kann, sozusagen ein zweites \caption. Versuche ich dies mit multicolumn, dann verzerrt dies nur meine Tabelle, was dann noch schlechter aussieht...



\begin{table}\tiny
\caption{Marginal Effects}
\begin{tabular}{l*{4}{c}}
\hline\hline
& aa & bb & cc \\
\hline
a & 0.075* & -0.00063 & -0.013 \\
& (0.040) & (0.0087) & (0.030) \\
[1em]
b & 0.068* & -0.0045 & -0.036 \\
& (0.041) & (0.0079) & (0.028) \\
\hline\hline
\end{tabular}
\label{mfxmlogitfull}
\end{table}

Xenara
29-12-2010, 14:32
Naja, mit dem Code lässt sich dein Problem natürlich nicht wirklich nachvollziehen...

Ein paar Anregungen:
- Das label muss direkt bei der Caption stehen, da es die Sprungmarke fürs Verlinken ist.
- Unter die Tabelle kannst du ganz einfach Text schreiben:


\end{tabular}\\[1ex]
Dein beliebiger Text...
\end{table}

- statt doppelter hlines gibt es das Paket booktabs mit den Befehlen \toprule, \midrule und \bottomrule, ausserdem werden die Abstände schöner
- Wieso verwendest du als Dokumentklasse article? scrartcl wäre besser (oder, je nach Länge des Dokuments, scrreprt oder scrbook). Die Koma-Klassen (das mit scr...) sind auf deutsche Typographie eingestellt und anpassbarer.
- Wenn du in deiner Tabelle die Dezimalpunkte untereinander ausgerichtet haben willst, bietet sich das Paket dcolumn an.
- Du solltest dir überlegen, ob die Tabelle nur gerade so nicht mehr auf die Seite passt, dann kann man mit tiny oder auch scalebox arbeiten. Allerdings macht eine Tabelle in Schriftgrösse 2pt auch keinen Sinn mehr. Da wäre dann longtable zu empfehlen, mit dem man Tabellen über mehrere Seiten mit passender Kopfzeile machen kann.
- Das a4-Usepackage ist überholt und soll vermieden werden.
- Wieso lädst du mit einem \usepackage-Aufruf mehrere Pakete? Einfacher, sinnvoller und strukturierter ist es, jedes einzeln zu laden, das macht auch das Debugging einfacher.

Xenara
29-12-2010, 14:49
Hier mal ein komplettes Beispiel:


\documentclass[11pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}% Deutsch!

\usepackage{amsfonts}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amscd}
\usepackage{amssymb}
\usepackage{setspace}
\usepackage{multirow}
\pagestyle{myheadings}
\onehalfspacing
%\renewcommand{\jot}{8pt}
%\parindent=0pt
%\parskip=8pt

\usepackage{booktabs}
\usepackage{dcolumn}
%\usepackage[showframe]{geometry}% showframe-Funktion zeigt Ränder

\begin{document}

\begin{table}

%%Gegebenenfalls
%\small
%%oder
%\tiny
%%oder
\footnotesize

\centering
\caption{Marginal Effects}
\label{mfxmlogitfull}
\begin{tabular}{c*{7}{D{.}{.}{5,5}}}
\toprule
& \multicolumn{1}{c}{aa} & \multicolumn{1}{c}{bb} & \multicolumn{1}{c}{cc} & \multicolumn{1}{c}{dd} & \multicolumn{1}{c}{ee} & \multicolumn{1}{c}{ff} \\
\midrule
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44\\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
b & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
a & 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\
& 0.075* & -0.00063 & -0.013 & 0.002 & 0.333 & 1.11 \\[1ex]
Ende & 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
& 0.068* & -0.0045 & -0.036 & -0.99 & 1.111 & 33.44 \\
\bottomrule
\end{tabular}\\[1ex]
Beliebig viel Text unter der Tabelle.
\end{table}

\end{document}


Brauchst du die ganzen ams...-Pakete wirklich?
Mir ist aufgefallen, dass inputenc und babel noch gefehlt hat. inputenc und fontenc sorgen dafür, dass man Umlaute verwenden kann und dass auch Wörter mit Umlauten getrennt werden. babel gibt man die Sprache mit, damit die Trennungen stimmen. Die drei sind bei mir _die_ Standardpakete, die immer als allererstes nach der documentclass geladen werden.

LateX-Jüngling
29-12-2010, 14:50
Ok, danke erstmal für die Hinweise.

Wieso article? Wieso mehrere Packete auf einmal? Das ist der Copy&Paste Effekt. :)

Ich verwende ausschließlich Englisch in meinen Texten. Ist das Koma-Skript dafür immer noch geeigneter? Was sollte anstelle a4 geladen werden (ich muss zugeben, dass ich auch eigentlich gar nicht weiß, was a4 macht und wofür es da ist...).

Könntest Du mir ein kleines Beispiel geben, z.B. anhand meiner obigen Tabelle, wie ich dcolumn verwende, (außer es mit \usepackage{dcolumn} zu laden)?

Trotzdem erstmal vielen Dank für Deine Hilfe. Ich weiß das sehr zu schätzen!

LateX-Jüngling
29-12-2010, 14:53
Ah, ich sehe grade, ein komplettes Beispiel... vielen Dank, ich schau mir das gleich mal an!

Xenara
29-12-2010, 14:56
Ein Grossteil deiner Fragen hat sich mit meinem obigen Post überschnitten.

- Englisch: babel statt mit ngerman mit english laden.
- copy&paste ist bei LaTeX immer ganz schlecht, vor allem, wenn man sich noch nicht damit auskennt.
- a4 war afaik mal ein Paket für den Satz auf A4-Papier, da LaTeX standardmässig auf letter basiert ist. Das ist aber vor allem mit den Komaklassen überholt, da ist A4 schon Standard.
- Koma hat nicht unbedingt mit der Sprache zu tun, sondern mit dem Schriftsatz und orientiert sich am europäischen A4 und bietet noch x weitere einfachere Einstellmöglichkeiten. Egal in welcher Sprache - und ich würde auch sagen Papierformat- mit Komaklassen machst du nichts falsch.

Du kannst übrigens alle Dokus ganz einfach aufrufen (Windows):
Start -> Programme -> Zubehör -> Eingabeaufforderung
Dort "texdoc Paketname" eintippen, es öffnet sich das PDF.
(Linux und Mac halt die Shell, das sollte auch klappen.)
Die Doku zum Komascript heisst übrigens "scrguide", also "texdoc scrguide" eintippen.

LateX-Jüngling
29-12-2010, 15:05
Ok, ich glaube, damit wären meine dringlichsten Fragen erstmal geklärt. Xenara, vielen Dank für Deine Hilfe! Wirklich großartig...

Xenara
29-12-2010, 15:07
Gern geschehen :)

LateX-Jüngling
29-12-2010, 15:10
Warte, eine Frage noch, da wir grade hier sind... ich lasse von einer automatischen Routine in Stata eine LaTeX-Tabelle erstellen. Die tabular-Tabelle schiebt vor der tabular-Umgebung den folgenden Befehl:
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}

Ist Dir zufällig ersichtlich, was dieser Befehl tut bzw. wofür man ihn benötigt?

Xenara
29-12-2010, 15:26
Oh je, das geht arg tief in die Geheimnisse von LaTeX und ist eher was für die Profis.

Was ich interpretiere, auch mit Hilfe von bobmalarias Beitrag hier (http://www.mrunix.de/forums/showthread.php?t=60421):
\def ist ähnlich wie \newcommand, es definiert ein neues Kommando, hier mit einem Argument (#1).
Die \if...\else-Konstruktion ist die Wenn-Dann-Variante von LaTeX, das \fi schliesst es ab.
mmode steht wohl für Mathematischen Modus, das ^ bedeutet Hochstellen. Also "Wenn Mathemodus, dann hochstellen, und sonst auch"...
Mehr kann ich dir aber leider nicht helfen, lass den Befehl mal weg und schau was passiert.

Spontan würde ich wohl den Befehl in etwas augefälligeres ändern, z.B.
!!!! Ungetestet !!!


\def\sym#1{\ifmmode^{\textcolor{red}{#1}}\else\(^{ \textcolor{green}{#1}}\)\fi}

(setzt Paket color oder xcolor voraus)

Xenara
29-12-2010, 15:51
Habs doch noch rausbekommen ;)
Die Zeile definiert einen neuen Befehl \sym{x}, der das in den geschweiften Klammern hochstellt. Der Witz dabei ist, dass der Befehl sowohl im Mathemodus als auch im normalen Fliesstext verwendet werden kann.
Erläuterung des Befehls im Code:


\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{xcolor}
\begin{document}

% Die Befehlskette
% \def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
% bedeutet auseinandergenommen:
%
\def% Definiere neuen Befehl ...
\sym% ... namens \sym ...
#1% ... mit einem zwingenden Argument: \sym{...}
{% Hier fängt die Definition an: Schreibe ...
\ifmmode% ... wenn im mathematischen Modus ...
^{#1}% ... einfach die Zeichenkette "^{#1}" (wobei #1 das Argument ist) ...
\else% ... ansonsten (also, wenn nicht im mathematischen Modus) ...
\(% ... eröffne eine mathematische Umgebung mit "\(", das ist das Gleiche wie "$" oder "\begin{math}"
^{#1}% ... schreiben wieder Zeichenkette "^{#1}" ...
\)% ... und beende die mathematische Umgebung, wobei "\)" das Gleiche wie "$" oder "\end{math}" ist.
\fi% Ende der If-Abfrage.
}% Ende der Definition des Befehls \sym{...}.
%
% Das Gleiche kann man auch mit \newcommand machen:
%\newcommand{\sym}[1]{\ifmmode^{#1}\else\(^{#1}\)\fi}

Das sym-Kommando kann in der $Mathe-Umgebung\sym{1}$ genauso verwendet werden, wie ausserhalb\sym{2}.

\end{document}


Der Code vom letzten Post mit dem Einfärben hätte übrigens funktioniert.

LateX-Jüngling
29-12-2010, 16:17
Wow, Xenara, Du bist echt klasse, dass Du Dir soviel Mühe machst mir hierbei zu helfen! :D Vielen vielen Dank!