Tabularx und "Komma" bei dcolumn

Tabellen und Grafiken erstellen und anordnen


dk

Tabularx und "Komma" bei dcolumn

Beitrag von dk »

Schönen guten Abend allerseits.
Ich habe einiges zum Thema tabularx und dcolumn gefunden, allerdings nichts was mein Problm lösen könnte.

Ich möchte eine Tabelle mit dem tabularx-package ersetllen. Das funktioniert soweit gut.
Die Zahlenwerte sollen am Dezimlzeichen ausgerichtet werden. Das funktioniert mit dem dcolumn-package auch gut.
Das Dezimalzeichen (Ausgabezeichen) soll ein Komma (,) sein. Das funktioniert nicht, bzw. nicht in jeder Spalte.
Leider habe ich keine Ahnung wo das Problem liegt, geschweige denn wie ich es lösen kann.
Wenn jemand von Euch eine Idee hat, wäre das toll.

Hier ein Beispiel:
\documentclass[a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{booktabs, tabularx}
\usepackage{dcolumn}

\begin{document}
\begin{table}[htbp]
\caption{Komma oder Punkt}
\begin{tabularx}{\textwidth}{l *4 {D{.}{,}{2.2}X}}
\addlinespace
&\multicolumn{2}{c}{Spalte 1 und 2}&\multicolumn{2}{c}{Spalte 4 und 5}\\
\toprule
Var 1 & 0.25 & (0.03) & 0.13 & (0.03)\\
Var 2 & 1.64 & (0.16) & 1.60 & (0.16)\\
Var 3 & 3.21 & (0.20) & 0.00 & (0.00)\\
\bottomrule
\multicolumn{5}{l}{\footnotesize \emph{Annmerkungen:} Eiegntlich sollten in jeder Spalte Kommas stehen}
\end{tabularx}
\end{table}
\end{document}
Vielen Dank für Eure Antworten.

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Hallo ich denke dass dcolum recht alt ist, mach das doch mit siunitx.
Weitere Infos siehe siunitx Dokumentation.
Die Klammern sollten auch mit >{{(}S einfügbar sein.
\documentclass{scrartcl} 
\usepackage{tabularx, booktabs}
\usepackage[locale=DE]{siunitx}

\begin{document} 




\begin{tabularx}{\textwidth}{lSSSS} 
&\multicolumn{2}{c}{Spalte 1 und 2}&\multicolumn{2}{c}{Spalte 4 und 5}\\ \toprule 
Var 1 & {(0.25)} & 0.03 & 0.13 & 0.03\\ 
Var 2 & {(1.64)} & 0.16 & 1.60 & 0.16\\ 
Var 3 & {(3.21)} & 0.20 & 0.00 & 0.00\\ \bottomrule 
\multicolumn{5}{l}{\footnotesize \emph{Annmerkungen:} Eiegntlich sollten in jeder Spalte Kommas stehen} 
\end{tabularx} 

\end{document}
Achso: das mit den Anmerkungen in der Tabelle, willst du das wirklich in die Tabelle schreiben? Vll nicht lieber unter die Tabelle? Oder mit threeparttable oder so?
[1] Nützliche Webdokumente für Anfänger und Fortgeschrittene
[2]Minimalbeispiel | [3]FAQ
[4]Regelwerk | [5] Knigge
Wenn nicht anderst angegeben ist mein System: texlive 2012, pdflatex, x86-64, Snow Leopard utd.
Angehöriger der Liga zur Verwendung von texdoc
texdoc mathmode koma l2picfaq l2tabu lshort-en
Achtung: Aufforderungen ein Minimalbeispiel oder mehr Erklärungen zu einer Frage zu liefern sind keine persönlichen Angriffe. Sie dienen viel mehr dazu die Kommunikation zwischen Fragendem und potentiellen Helfern zu erleichtern und zu präzisieren.


dk

Beitrag von dk »

Das Problem ist nicht das dcolumn-package (zumindest soweit ich das beurteilen kann), sondern das tabularx.
Leider kann ich mit tabular oder tabular* nicht das gewünschte Ergebnis erzielen, bin also auf das tabularx-package angewiesen.

Dein Vorschlag löst dieses Problem leider nicht (siehe folgendes Beispiel)
\documentclass{scrartcl}
\usepackage{tabularx, booktabs}
\usepackage[locale=DE]{siunitx}

\begin{document}

\begin{tabularx}{\textwidth}{lSSXSS}
&\multicolumn{2}{c}{Spalte 1 und 2}&\multicolumn{2}{c}{Spalte 4 und 5}\\ \toprule
Var 1 & 0.25 & 0.03 & 0.13 & 0.03\\
Var 2 & 1.64 & 0.16 & 1,60 & 0.16\\
Var 3 & 3.21 & 0.20 & 0.00 & 0.00\\ \bottomrule
\multicolumn{5}{l}{\footnotesize \emph{Annmerkungen:} Eiegntlich sollten in jeder Spalte Kommas stehen}
\end{tabularx}

\end{document}
[\code] 

Nachwievor steht in der X-Spalte (hier in der dritten) ein Punkt anstelle des Kommas.
Wenn ich die Werte direkt mit Komma eingebe (Zeile 2, Spalte 2), dann gibt LaTeX auch ein Komma aus.
Ich werde versuchen es über diesen "Umweg" zu lösen. Das ändert alledings nichts an der Tatsache, dass mir dieser Fehler unerklärlich ist.

Achja, ich denke die Anmerkungen sollen schon in die Tabelle, da werd ich aber mal die anderen Möglichkeiten noch probieren.

Trotzdem besten Dank für den Hinweis auf siunitx und threeparttable, die kannte ich noch nicht.

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

dk hat geschrieben: Das ändert alledings nichts an der Tatsache, dass mir dieser Fehler unerklärlich ist.
.
Wieso unerklärlich? Die S Spalten werden on siunitx prozessiert, die X Spalten nicht Punkt. Ich versethe sowieso nicht, warum du die Zeilen künstlich erlängern willst, wenn nur so wenig Zahlen drinn stehen, das sieht doch echt bescheiden aus. Wenn du unbedingt ne X Collum haben willst, dann lege doch eine leere an. (zB zwischen den Spalten 1 u 2 und 3 u 4) Ich würde aber wirklich dazu raten eine Wertetabelle möglichst nicht auseinander zu ziehen, das lässt die Lesbarkeit sinken.

Wenn du mehr Hinweise zu deinen Gewünschten Aussehen gibts, kann man sich noch besser helfen....
Schau dir mal das an:
\begin{tabularx}{\textwidth}{XSSXSS}
&\multicolumn{2}{c}{Spalte 1 und 2}&&\multicolumn{2}{c}{Spalte 4 und 5}\\ \toprule
Var 1 & {(0.25)} & 0.03 && 0.13 & 0.03\\
Var 2 & {(1.64)} & 0.16 && 1.60 & 0.16\\
Var 3 & {(3.21)} & 0.20 && 0.00 & 0.00\\ \bottomrule
\multicolumn{5}{l}{\footnotesize \emph{Annmerkungen:} Eiegntlich sollten in jeder Spalte Kommas stehen}
\end{tabularx}
[1] Nützliche Webdokumente für Anfänger und Fortgeschrittene
[2]Minimalbeispiel | [3]FAQ
[4]Regelwerk | [5] Knigge
Wenn nicht anderst angegeben ist mein System: texlive 2012, pdflatex, x86-64, Snow Leopard utd.
Angehöriger der Liga zur Verwendung von texdoc
texdoc mathmode koma l2picfaq l2tabu lshort-en
Achtung: Aufforderungen ein Minimalbeispiel oder mehr Erklärungen zu einer Frage zu liefern sind keine persönlichen Angriffe. Sie dienen viel mehr dazu die Kommunikation zwischen Fragendem und potentiellen Helfern zu erleichtern und zu präzisieren.


dk

Beitrag von dk »

Ich glaube das mit der Beispieltabelle ist etwas falsch angekommen.
Also die Beispieltabelle sieht natürlich besch... aus, ist mir klar. Ich denke das Problem hat nicht wirklich was mit der tatsächlichen Tabelle zu tun, so dass ein (sehr viel kürzeres) Beispeil genügt.
Hier ist die gewünschte (noch immer leicht gekürzte) original Tabelle:
\documentclass[a4paper,12pt,numbers=noenddot]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{mathcomp}
\usepackage{amsmath}

\usepackage{booktabs, tabularx}
\usepackage{dcolumn}
\usepackage{rotating}
\usepackage[font=sf, format=hang, labelsep=quad, labelfont=bf, singlelinecheck=false]{caption}

\newcommand{\ccap}[1]{\textsf{\textbf{#1}}} %spaltenüberschriften
\newcommand{\dsp}{\hspace*{1em}}%einrücken in tabelle
\newcommand{\up}[1]{\textsuperscript{#1}}%hochgestellen im tabellentext

\begin{document}

\begin{sidewaystable}
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\caption{Vorhersage Bildung/Status des Partners. Ergebnisse ordinaler logistischer Regressionen für Frauen}
\begin{tabularx}{\textwidth}{l *9 {D{.}{,}{2.2}X} D{.}{,}{2.2}X}
\addlinespace
&\multicolumn{2}{c}{\ccap{Modell F1}}&\multicolumn{2}{c}{\ccap{Modell F2}}&
\multicolumn{2}{c}{\ccap{Modell F3}}&\multicolumn{2}{c}{\ccap{Modell F4}}&\multicolumn{2}{c}{\ccap{Modell F5}}\\
\toprule
\dsp Attraktivität & 0.25 & (0.03)\sym{***} & 0.13 & (0.03)\sym{***} & 0.12 & (0.03)\sym{***} &  0.10 & (0.03)\sym{**} & 0.08 & (0.03)\sym{*}  \\
&&&&&&&&&&\\
\dsp Realschule & & & 1.64 & (0.16)\sym{***} & 1.60 & (0.16)\sym{***} & 1.56 & (0.16)\sym{***} & 1.55 & (0.16)\sym{***}\\
\dsp (Fach)Hochschule& & & 3.21 & (0.20)\sym{***} & 3.17 & (0.21)\sym{***} & 3.04 & (0.21)\sym{***} & 3.02 & (0.21)\sym{***}\\
\dsp Alter & & & & &-0.00 & (0.00) & & & & \\
&&&&&&&&&&\\
\dsp Homogam & & & & &-0.12 & (0.28) & & & & \\
\dsp Mann älter & & & & &-0.25 & (0.29) & & & & \\
Pseudo R\up{2} & 0.028 & & 0.187 & & 0.188 & & 0.195 & & 0.199 & \\
N & 1164 & & 1164 & & 1164 & & 1164 & & 1164 & \\
\bottomrule
\multicolumn{11}{l}{\footnotesize \emph{Anmerkungen:} Robuste Standardfehler in Klammern; Nicht berichtet: Konstante, BMI-fehlt.\emph{Referenzkategorien:} \up{a}Hauptschule; \up{b}Altershomogamie;}\\
\multicolumn{11}{l}{\footnotesize \emph{Signifikanzniveaus:} \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***}\(p<0.001\)}\\
\multicolumn{11}{l}{\footnotesize \emph{Quelle:} ALLBUS 2008; gewichtete Daten; eigene Berechnungen.}\\
\end{tabularx}
\end{sidewaystable} 
Das einzige Problem sind die Punkte in jeder zweiten Zeile. Sonst sieht das ganze schon in etwa so aus wie ich mir das vorstelle.
Die X-Spalten in tabularx ignorieren quasi die Definition in D{}{}{.}.

Mit siunitx werden übrigens die in "(" gesetzten Werte mit "." geschrieben. Das müsste ich dann auch wieder ändern.
Da ich die Werte aus dem Statistikprogramm STATA direkt exportieren kann, scheint es eher mühsam jede Klammer zu ändern.
Es sollte aber im Grunde kein Problem sein STATA zu sagen, dass die Were bitte mit "," exportiet werden sollen. Das scheint mir die einfachste Lösung, muss nur noch rausbekommen wie das geht.

Antworten