PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gestalung einer Tabelle



demian
10-10-2007, 23:26
Hallo Forum,

ich würde gerne eine Tabelle im Stil der angehängten erstellen. Leider sind meine bescheidenen Latex-Mittel dazu nicht ausreichend: Welches Paket am besten, wie modifiziert, etc.? Noch mal kurz, was ich will:

1. Kleine Überschrift "Tabelle X" zentriert
2. Darunter zentriert Tabellenüberschrift
3. Darunter Text zur Beschreibung
4. Darunter dann die Tabelle

Hat jemand eine Idee, wie man das verwirklichen könnte?

sofa-surfer
11-10-2007, 08:14
Hallo,

das Layout der Tabellenbeschriftung (was ja in dem Fall sicherlich global für das ganze Dokument so gelten soll) gestaltest du am besten mit dem caption-Paket. Wenn du eine Komaklasse nutzt, dann sollte das ganze auch u.U. auch ohne extra Paket möglich sein. Kontaktiere hierzu am besten mal die Paket-Doku (http://www.ctan.org/tex-archive/macros/latex/contrib/caption/caption-deu.pdf) bzw. den entsprechenden Abschnitt im scrguide (http://www.ctan.org/tex-archive/macros/latex/contrib/koma-script/scrguide.pdf) (Abschnitt 3.6.6, Tabellen und Abbildungen).

Den zusätzlichen erklärenden Text kannst du einfach mit in die table-Umgebung schreiben.

Für das im Anhang gezeigte Layout der Tabelle bietet sich sicherlich das booktabs-Paket an (Stichworte \toprule, \midrule, \cmidrule, \bottomrule). Evtl. brauchst du noch das multirow-Paket.

Matthias

demian
11-10-2007, 10:02
Vielen Dank, Matthias, werde ich gleich mal ausprobieren.

demian
13-10-2007, 19:19
Nochmals vielen Dank, Matthias. \Caption und \booktabs waren genau das, was ich gesucht habe. Habe im Übrigen selten so eine verständliche Doku wie bei \caption gehabt. Muss man auch mal loben :)

Jetzt hab ich aber ein anderes Problem. Ich will bei folgender Tabelle, dass sie gut aussieht. Mehr eigentlich nicht ;) Das bedeutet wahrscheinlich, dass alles am Komma ausgerichtet wird (wohl auch die 1). Ich bekomms aber einfach nicht hin. Nicht, weil ich nix im Internet und speziell hier im Forum finden würde, sondern weil ich einfach zu viel finde: dcolumn-Paket (das zickt dann rum mit der Textzeile), Sternchen in neue Spalte (dann ist zuviel Abstand), dann noch ein Thread mit Ninchen und edico http://www.mrunix.de/forums/showthread.php?t=38360&highlight=ninchen+edico (das klappt fast, da verstehe ich dann aber das \phantom nicht und die Abstände zwischen den Spalten sind zu klein), usw.

Kann mir vielleicht hier jemand unter die Arme greifen? Wäre super!

Danke im Voraus

Christoph



% Table generated by Excel2LaTeX from sheet 'Sheet'
\begin{longtable}{lrrrrrr}
%\toprule
\label{Korrelationen}\\
\caption{Korrelationstabelle}\\
& Einkünfte & Alter & Zufriedenheit & Gesundheit & Geschlecht & Risikobereitschaft \\
\midrule
Einkünfte & 1 & & & & & \\

Alter & 0,139** & 1 & & & & \\

Zufriedenheit & 0,119** & -0,060** & 1 & & & \\

Gesundheit & -0,048** & 0,420** & -0,428** & 1 & & \\

Geschlecht & 0,305** & -0,011 & 0,018 & -0,044** & 1 & \\

Risikobereitschaft & 0,134** & -0,269** & 0,123** & -0,196** & 0,198** & 1 \\

\multicolumn{ 7}{r}{**. Die Korrelation ist auf dem Niveau von 0,01 (2-seitig) signifikant.} \\
\bottomrule
\end{longtable}

e. hindman
13-10-2007, 21:11
Nimm doch dcolumn, die Texteinträge kannst du dann mit ner multicolumn rechtsbündig setzen, dann zickt nix rum.



\usepackage{dcolumn}

\begin{tabular}{D{,}{,}{2}}
1,23\\
12,34\\
\multicolumn{1}{r}{asdf}\\
\end{tabular}

demian
14-10-2007, 02:16
Danke für den Tipp. Aber wie gesagt: Das habe ich bereits gemacht und ich kann nicht sagen, dass das Ergebnis eine optische ansprechende Tabelle geliefert hat. Die Abstände zwischen den Spalten sind viel zu klein. Aber hier mal die Version mit \dcolumn. Vielleicht lässt sich das ja schnell lösen.



\newcolumntype{d}{D{,}{,}{3}}

% Table generated by Excel2LaTeX from sheet 'Sheet'
\begin{longtable}{l@{\extracolsep{\fill }}dddddd}
%\toprule
%\label{Korrelationen}\\
\caption{Korretionstabelle}\\

& \multicolumn{1}{r}{\phantom{Rb.} Einkünfte} & \multicolumn{1}{r}{\phantom{Rb.} Alter} & \multicolumn{1}{r}{\phantom{Rb.} Zufriedenheit} & \multicolumn{1}{r}{Gesundheit} & \multicolumn{1}{r}{Geschlecht} & \multicolumn{1}{r}{Risikobereitschaft} \\
\midrule
Einkünfte & 1 & & & & & \\

Alter & 0,134 & 1 & & & & \\

Zufriedenheit & 0,119 (**) & -0,060(**) & 1 & & & \\

Gesundheit & -0,048(**) & 0,420(**) & -0,428(**) & 1 & & \\

Geschlecht & 0,305(**) & -0,011 & 0,018 & -0,044(**) & 1 & \\

Risikobereitschaft & 0,134(**) & -0,269(**) & 0,123(**) & -0,196(**) & 0,198(**) & 1 \\

\multicolumn{ 7}{r}{**. Die Korrelation ist auf dem Niveau von 0,01 (2-seitig) signifikant.} \\
\bottomrule
\end{longtable}


Wo wir gerade dabei sind: Könnte mir vielleicht jemand den genauen Zweck von \phantom erklären. Habe das aus dem Thread, den ich oben verlinkt habe, her. Hat wohl irgendwas mit den Abständen zu tun und daher wohl auch des Rätsels Lösung. Aber wie das genau funktioniert: Keine Ahnung.

Vielen Dank.

e. hindman
14-10-2007, 06:44
\phantom{text} liefert einen horizontalen Zwischenraum, der so lang ist wie "text". Es schreibt also sozusagen etwas unsichtbares hin.

rais
14-10-2007, 09:47
Die Abstände zwischen den Spalten sind viel zu klein.

Du hast die d-Spalte für drei Nachkommastellen deklariert, packst teilweise aber noch (**) dazu -- die dürften in die nächste Spalte gelangen, was Du per \phantom versucht hast zu korrigieren..
Wie wäre es, wenn Du statt `d´ `d@{}l´ deklarierst und Deine Sterne per & vom Wert trennst? (Dazu müsstest Du die oben stehenden \multicolumn entsprechend auf zwei Spalten ausdehnen und den unten stehenden auf zwölf Spalten oder so -- und natürlich die entsprechenden & in allen Zeilen auffüllen.) Dann wären vermutlich nur noch Deine Texte zu breit -- und die \phantom-Einträge überflüssig.;)
MfG,

demian
14-10-2007, 10:52
Vielen Dank für eure Hilfe! Rainer, dein Vorschlag klappt wunderbar. Nur zum besseren Verständnis: Was macht dieses @{} genau? Es scheint eine Funktion zu sein, die was für alle Zeilen einträgt, also in dem Fall, in alle Zeilen nichts. Aber auf welche Spalte bezieht sie sich: auf d, auf l, oder auf den Zwischenraum?

Grüße Christoph

edico
14-10-2007, 13:35
Es gibt sicher unterschiedliche Auffassungen, wie Tabellen gesetzt werden sollten. Ich neige i.d.R. dazu, sie moeglichst schlicht und 'ergreifend' ohne Schnoerkel (Striche (Doppel-), Farbe, etc.) aufzureissen.

Um die Korrelationsmatrix zu generieren, sollten einige Definitionen festgelegt werden, um auch die Tabelle beim Schreiben uebersichtlich zu halten.

Die Anzahl der Spalten ist fuer eine Portrait-gesetzte Seite noch geeignet, wobei die Ueberschriften summa in summarum zu 'lang' sind. Deswegen werden diese 'gedreht' gesetzt. Die Signifikanzniveaus werden (wie rais erwähnt) losgekoppelt von den Daten und (wie auch schon von mir in dem von Dir aufgezeigtn Link gezeigt) in 'eigenen' kleinen Spalten 'angeflantscht'.

Warum Du eine longtable heranziehst, ist mir nicht klar. Ich habe die tabularx-Umgebung gewählt, weil dadurch die Ausrichtuing 'linewidth' 'einfacher' zu berechnen ist.
Letztens -- Tabellennotizen gehoeren nie und nimmer in eine Tabelle.

So kann das Ganze dann aussehen ...

\documentclass[DIV9]{scrartcl}
\usepackage{german}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathptmx,helvet,courier}

\usepackage{tabularx,longtable,dcolumn,array,bookt abs,calc,rotating}
\newcommand{\st}{\makebox[9pt][c]{\scriptsize $\ast\ast$} } % 1%-Niveau

\begin{document}

\newcolumntype{d}{D{,}{,}{3}}
\newcolumntype{N}{>{\bfseries}c}
\newcolumntype{T}[1]{>{\begin{turn}{90}\begin{minipage}{#1}}%
N<{\end{minipage}\end{turn}}}
\newcolumntype{L}{@{}p{1em}}
\def\tith{30mm}

\noindent
\begin{tabularx}{\textwidth}{@{}XdLdLdLdLdLd@{}}
\toprule
& \multicolumn{1}{T{\tith}}{Einknfte} & &
\multicolumn{1}{T{\tith}}{Alter} & &
\multicolumn{1}{T{\tith}}{Zufriedenheit} & &
\multicolumn{1}{T{\tith}}{Gesundheit} & &
\multicolumn{1}{T{\tith}}{Geschlecht} & &
\multicolumn{1}{T{\tith}}{Risikobereitschaft} \\
\midrule
Einknfte & 1 & & & & & & & & & & \\
Alter & 0,134 & & 1 & & & & & & & & \\
Zufriedenheit & 0,119 &\st & -0,060 &\st & 1 & & & & & & \\
Gesundheit & -0,048 &\st & 0,420 &\st & -0,428 &\st & 1 & & & & \\
Geschlecht & 0,305 &\st & -0,011 & & 0,018 & & -0,044 &\st & 1 & & \\
Risikobereitschaft & 0,134 &\st & -0,269 &\st & 0,123 &\st & -0,196 &\st & 0,198 &\st & 1 \\
\bottomrule
\multicolumn{12}{r}{\st. Die Korrelation ist auf dem Niveau von 0,01 (2-seitig) signifikant.}\\
\end{tabularx}

edico

demian
14-10-2007, 14:29
Erstmal vielen, vielen Dank für deine Mühen, edico. Leider funktioniert deine Datei bei mir nicht. Warum, weiß ich leider nicht. Hier ist aber die Vorgeschichte dazu (da hast du mir ja auch schon geholfen!): hier (http://www.mrunix.de/forums/showthread.php?t=54151)

Hat also scheinbar nix mit G-Brief zu tun, sondern mit Latex. Mir ist gerade aufgefallen, dass dann beim kompilieren deiner Datei steht: "DVI file can't be open!". Und dann kommt die im Link schon genannte Fehlermeldung.

Wenn ich allerdings deine Tabelle bei mir in die Arbeit kopiere, ignoriert Latex sie einfach. Er kompiliert zwar das Dokument, aber ohne deine Tabelle.

Ich finde das Ganze schon sehr komisch. Immerhin hätte ich gedacht, dass Latex die Willkür ausschalten sollte. Gibts einen Fehler, geht nichts mehr, hat man ihn dann aber gelöst, dann hat man ihn für immer gelöst. Hier scheint es aber mal zu klappen, mal nicht. Ich habe echt keine Ahnung, woran das liegen könnte.

demian
14-10-2007, 14:34
Habe jetzt gerade noch mal bei meiner Arbeit eine Sicherheitskopie erstellt und probiert, das laufen zu lassen. Klappt aber weder mit noch ohne deiner Tabelle.
Liegt also einfach an meiner Latex-Installation.

rais
15-10-2007, 01:45
Moin moin,


Was macht dieses @{} genau?
es kürzt den Spaltentrenner der umliegenden Spalten auf so ziemlich nix.;)

Mir ist gerade aufgefallen, dass dann beim kompilieren deiner Datei steht: "DVI file can't be open!". Und dann kommt die im Link schon genannte Fehlermeldung.

Hast Du edicos Code unverändert laufen lassen?
Mir ist zwar nicht ganz klar, `wer´ Dir diese Meldung gibt (vermute mal TeXnicCenter), aber mögliche Fehlerquellen wären:
a) fehlendes \end{document} -- sowas kann bei Copy&Paste schon mal passieren;-)
b) Leerzeichen in `bookt abs´ -- einer der, wie soll ich sagen, `features´ hier im board, ab und an bei längeren Textzeilen einfach ein Leerzeichen einzubauen...:eek:

Sollten Dich diese Hinweise nicht zum gewünschten Erfolg führen, dann poste bitte die entstandene .log-Datei.
MfG,

demian
15-10-2007, 10:46
Nein, leider nicht. Der Booktabs-Fehler ist mir auch schon aufgefallen, richtig rüberkopiert habe ich es auch. Nochmal kurz zum Ablauf: Ich lasse Latex ein paar mal durchlaufen, dann will ich im TexnicCenter ein "Aktives Dokument" erstellen. Es steht immer ganz unten in der Kommandoleiste: "Latex-Ergebnis: 0 Fehler, 0 Warnungen, 0 zu volle/leere Boxen, 0 Seiten." und direkt darüber eben: \Programme\MikTex2.6\miktex\bin\dvips.exe: ! DVI file can't be openend. Dann öffnet sich der Adobe, sagt "Beim Öffnen dieses Dokuments ist ein Fehler aufgetreten..." Man klickt auf OK und dann kommt die Fehlermeldung im TexnicCenter: "[DocOpen("%bm.pdf")]"[FileOpen("%bm.pdf")]. Der Befehl konnte nicht ausgeführt werden. Eine log-Datei wird dabei gar nicht erstellt.

Das "Lustige" dabei ist, dass derzeit mal wieder überhaupt nix geht. Ich hab ja schon geschrieben, dass in meiner Arbeit die reinkopierte Tabelle von edico nicht berücksichtigt wird. Jetzt ist mir aufgefallen, dass keine Änderung mehr berücksichtigt wird. Er zeigt mir zwar immer ein PDF an, bringt auch keine Fehlermeldung, aber das ist immer das alte. Und ich habe an dem Tag wirklich nichts im TexnicCenter verändert! Schon komisch.

Danke noch mal, dass ihr mir helfen wollt. Wenn ihr noch mehr Infos braucht, einfach schreiben.

edico
15-10-2007, 11:10
Kannst Du nicht mal an der Eingabeaufforderung mit pdflatex den Compiling-Prozess laufen lassen. Vorab lösche bitte alle Hilfsfiles im working directory.

edico

demian
15-10-2007, 13:59
Es kommt dann folgende Fehlermeldung: "Windows API Error 21: Das Gerät ist nicht bereit." Mir ist dann aufgefallen, dass ich das rotating-Paket nicht habe. Wollte es dann mit dem Paketmanager von MikTex installieren und dann kam dieselbe Fehlermeldung.

demian
17-10-2007, 14:33
Rainer
There's nothing a good whack with a hammer won't fix!

Frei nach dem Motto habe ich das Problem gelöst. Ich weiß zwar nicht wie, warum und überhaupt, aber mich interessiert gerade nur, dass mein Latex wieder geht. :D

Falls jemand mal dasselbe Problem hat: Mir ist, wie oben bereits geschrieben, aufgefallen, dass auch der MikTex Package Manager nicht mehr funktioniert (die selbe Fehlermeldung wie oben: API error 21). Und heute ist mir eingefallen, dass ich ja noch die MikTex DVD habe. Die hab ich eingelegt, das Paket rotating installiert und jetzt geht es. Ich melde mich noch einmal, wenn ich mehr weiß. Vielleicht fällt mir ja ein Muster auf, wann es nicht geht und wann doch.

Jetzt aber erstmal weiterschreiben. Und edico: Vielen Dank für deine Tabelle, sieht super aus!!!

Grüße Christoph

demian
22-12-2007, 00:41
Hallo liebes Forum,

ich mal wieder. Sitze derzeit an einer neuen Arbeit, in der ich auch eine Korrelationstabelle machen muss, und wollte folglich die Vorlage nehmen, die mir hier gezeigt wurde (Stichwort dcolumn mit f@{}). Leider klappt es nicht, der Abstand zwischen Zahl und Sternchen ist viel zu groß. Weiß jemand Rat?

Vielen Dank für Eure Hilfe.

Gruß Christoph

edico
22-12-2007, 09:38
Nun, Du hast die Vorlage nicht benutzt. Deswegen sieht Deine Tabelle natürlich anders aus.
Entweder bindest Du die dortigen Aspekte ein oder veränderst Deine Tabelle ggf. so:

...
\newcommand{\sv}{\hspace{-1em}\textsuperscript{*}}% 5%-Niveau
\newcommand{\si}{\hspace{-1em}\textsuperscript{**}}% 1%-Niveau
...
\begin{landscape}
\begin{longtable}{l*7{f@{}p{1pt}}}
\caption{Correlation Table}\\
\label{CorrTab}\\ % besser: label nach caption und ohne Leerräume
\toprule
&
\multicolumn{1}{c}{MV} & &
\multicolumn{1}{c}{PTBV} & &
\multicolumn{1}{c}{VOLUME} & &
\multicolumn{1}{c}{DELAY} & &
\multicolumn{1}{c}{TRADESZ} & &
\multicolumn{1}{c}{abcdefg} & &
\multicolumn{1}{c}{POSITION} &\\
\midrule \endhead
{\bf France} & & & & & & & & & & & & & & \\

\quad MV & 1.000 & & & & & & & & & & & & & \\

\quad PTBV & -0.042 &\sv & 1.000 & & & & & & & & & & &\\

\quad VOLUME & 0.454 &\si & -0.078 & \si & 1.000 & & & & & & & & & \\

\quad DELAY & -0.024 & & -0.024 & & 0.002 & & 1.000 & & & & & & &\\

\quad TRADESZ & 0.035 & & -0.077 & \si & 0.018 & & 0.001 & & 1.000 & & & & &\\

\quad abcdefg & 0.017 & & -0.030 & & -0.187 & \si & 0.065 & \si & 0.015 & & 1.000 & & &\\

\quad POSITION & 0.026 & & 0.077 & \si & 0.017 & & 0.047 & \sv & -0.018 & & 0.001 & & 1.000 &\\
\bottomrule
\end{longtable}
\end{landscape}
...

edico

demian
22-12-2007, 10:15
Hallo edico,

erstmal vielen Dank für deine Hilfe. Leider klappt dein Beispiel bei mir nicht so richtig. Folgende Fehlermeldung (zu der ich leider nicht viel im Internet finde): Package array error: Illegal pream-token (f): ´c´used.

Bekomme dann folgendes PDF. Hoffe, es ist nur ein Tippfehler in deiner Tabelle, auch wenn ich keinen sehe.

Grüße

Christoph

rais
22-12-2007, 11:01
Moin Christoph,

Folgende Fehlermeldung (zu der ich leider nicht viel im Internet finde): Package array error: Illegal pream-token (f): ´c´used.

den Fehler kann ich nicht nachvollziehen -- kann es sein, daß Du hier


\newcolumntype{f}{D{,}{,}{3}} %Ausrichtung am Komma, drei Nachkommastellen
nicht mehr mit drin hast?
Apropos: Wenn Du diesem D mitteilst, wie Deine Kommata in der .tex aussehen, also


\newcolumntype{f}{D{.}{,}{3}} %Ausrichtung am Komma, drei Nachkommastellen
, dann sollte der jeweilige \hspace in \si, \sv überflüssig geworden sein.;)
MfG,

demian
22-12-2007, 11:40
:D

Rais, super, genau das war das Problem. Ich muss einfach in meinen Code \newcolumntype{f}{D{.}{.}{3}} schreiben, und schon klappt es. Habe einfach die frühere Vorlage von einer deutschen Arbeit in eine englischsprachige rüberkopiert und dabei verplant, dass sich Komma und Punkt ja ändern. Jetzt kann ich Weihnachten feiern :cool:

@edico: Dein Beispiel klappt jetzt auch, danke noch einmal.

Grüße Christoph