Tabellenspalten an Dezimalstelle ausrichten mit \underset

Tabellen und Grafiken erstellen und anordnen


_Marc

Tabellenspalten an Dezimalstelle ausrichten mit \underset

Beitrag von _Marc »

Hallo zusammen,

ich würde gerne meine Tabellenspalten an der Dezimalstelle ausrichten. Ansonsten benutze ich dafür das siunitx Packet. Hier aber habe ich zusätzlich den \underset Befehl verwendet, der sich nicht dem siunitx Packet verträgt. Das Dokumnet läuft durch, aber die Spalten sind nicht so ausgerichet wie ich es gerne hätte.

Meine Beispieltabelle:
\documentclass[a4paper,12pt,titlepage]{scrbook} 
\usepackage[automark]{scrpage2} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage{multirow}
\usepackage{booktabs} 
\usepackage[font={small,sf},labelfont=bf,labelsep=space,justification=raggedright]{caption} 
\usepackage{siunitx} 
\usepackage{amsmath}

\begin{document} 

\begin{table}[ht] 
 \centering 
 \caption{Ergebnisse} 
 \begin{tabular}{lS} 
  \addlinespace 
  \toprule 
 
  \midrule 
  \textbf{Variablen}                            & {\textbf{Koeffizient1}} \\
   \textit{Variable 1}                          & $\underset{987}{2.3456}$***         \\
     \textit{Variable 2}                          & $\underset{987}{-12.345}$*                \\ 
  \bottomrule
 \end{tabular} 
 \label{abcdef} 
\end{table} 
\end{document}

Vielen Dank für eure Vorschläge!

Liebe Grüße

Marc

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Crosspost auf mrunix

sudo
Forum-Guru
Forum-Guru
Beiträge: 459
Registriert: Mi 3. Okt 2012, 11:32

Beitrag von sudo »

Ich verstehe überhaupt nicht, was du mit den Zahlen unter den anderen sagen möchtest. Du solltest daher mal lesen, wie man richtige Fragen stellt.
Um zu verstehen, warum dein Versuch nicht das gewünschte bringt, muss man wissen, wie die S-Spalten funktionieren. Sie detektieren den Dezimaltrenner, tun das davor in eine l-Spalte, das dahinter in eine r-Spalte und packen einen Dezimaltrenner dazwischen. Wenn du also einen Befehl darum packst, kann das nicht funktionieren. In Abschnitt 4.6 der SIunitx-Anleitung wird allerdings auch der Befehl \tablenum erklärt. Damit kannst du vermutlich dein Ziel erreichen:
\documentclass[a4paper,12pt,titlepage]{scrbook}
\usepackage[automark]{scrpage2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage[font={small,sf},labelfont=bf,labelsep=space,justification=raggedright]{caption}
\usepackage{siunitx}
\usepackage{amsmath}

\begin{document}

\begin{table}[ht]
 \centering
 \caption{Ergebnisse}
 \begin{tabular}{lc}
  \addlinespace
  \toprule
 
  \midrule
  \textbf{Variablen}                            & {\textbf{Koeffizient1}} \\
   \textit{Variable 1}                          & $\underset{987}{\tablenum{2.3456}}$         \\
     \textit{Variable 2}                          & $\underset{987}{\tablenum{-12.345}}$                \\
  \bottomrule
 \end{tabular}
 \label{abcdef}
\end{table}
\end{document} 
Ein vollständiges Minimalbeispiel (VM) zu erzeugen, ist gar nicht schwer und hilft ganz oft, Fehler selber zu finden. Ohne bekommt man selten gute Antworten. Anleitungen findest du z.B. im golatex Wiki auf TeXWelt oder minimalbeipiel.de
Außerdem hilft das Lesen dieser Seite, Fragen richtig zu stellen.

_Marc

Beitrag von _Marc »

Hey Sudo!

Sorry, wenn ich mich nicht ausreichend erklärt habe... Also ich will eine Tabelle erstellen, in der die Ergebnisse von verschiedenen statistischen Modellen präsentiert werden. Neben den eigentlichen Koeffizienten, sollen auch darunter mittig etwas kleiner die Standardabweichungen in Klammern und hinten dran wie signifikant die Ergebnisse sind: kein, ein * zwei ** bis hinzu drei *** Sternen, manche Variablen sind sehr signifikant, manche gar nicht. Darum ist die Anzahl der Sterne auch nicht konstant. Ich möchte mit dem \underset Befehl arbeiten, da dies die Tabelle wesentlich übersichtlicher machen würde (sie ist schon ziemlich breit und lang, und die Standarabweichungen sind nicht so wichtig, wie die eigentlichen parameter selber, daher erschien der Befehl so praktisch).


Zentriert werden soll an den Parametern selber....




In Latex sieht das dann so aus
Minimalbeispiel:

\documentclass[a4paper,12pt,titlepage]{scrbook} 
\usepackage[automark]{scrpage2} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage{multirow} 
\usepackage{booktabs} 
\usepackage[font={small,sf},labelfont=bf,labelsep=space,justification=raggedright]{caption} 
\usepackage{siunitx} 
\usepackage{amsmath} 

\begin{document} 

\begin{table}[ht] 
 \centering 
 \caption{Ergebnisse} 
 \begin{tabular}{lss} 
  \addlinespace 
  \toprule 
  
  \midrule 
  \textbf{Variablen}                            & {\textbf{Model 1}}   & {\textbf{Model 2}} \\ 
   \textit{Variable 1}                          & $\underset{(0.876)}{\tablenum{2.345}}$\textsuperscript{**}    & $\underset{(0.654)}{\tablenum{9.876}}$\textsuperscript{*}      \\ 
     \textit{Variable 2}                          & $\underset{(2.567)}{\tablenum{12.345}}$         & $\underset{(0.012)}{\tablenum{-0.234}}$\textsuperscript{***}    \\ 
  \bottomrule 
 \end{tabular} 
\end{table} 
\end{document}




Ungefähr so sollte des mal aussehen
Bild
Bei mir das ganze anderherum, da ich die Sternchen oben habe.


Danke an diejenigen, die sich Zeit nehmen darüber zu schauen!

Cheers!

Marc

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hier ist mal noch ein Vorschlag:
\documentclass[12pt]{scrbook} 
\usepackage[automark]{scrpage2} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage{multirow} 
\usepackage{booktabs} 
\usepackage[font={small,sf},labelfont=bf,labelsep=space,justif ication=raggedright]{caption} 
\usepackage{siunitx} 
\usepackage{amsmath} 

\newcommand\uphantom[3]{%
  \llap{$\underset{(#1)}{\phantom{#2}}$}\,#3}
% das erste Argument enthält den Wert, der in Klammern darunter stehen soll
% das zweite Argument dient nur dem horizontalen Ausrichten des ersten Argumentes, es wird selbst nicht ausgegeben und kann/darf sich von dem Wert vor \uphantom unterscheiden!
% Sterne oder ähnliches, die noch dahinter ausgegeben werden

\begin{document} 

\begin{table}[ht] 
  \centering 
  \caption{Ergebnisse} 
  \begin{tabular}{lSS} 
    \toprule 
    \textbf{Variablen} & \multicolumn{1}{r}{\textbf{Modell 1}} & \multicolumn{1}{r}{\textbf{Modell 2}}\\
    \midrule 
    \textit{Variable 1} & 2.3456\uphantom{0.876}{2.3456}{**}&9.876\uphantom{0.654}{9.876}{*} \\ 
    \textit{Variable 2} & -12.345\uphantom{2.567}{-12.345}{*}&-0.234\uphantom{0.012}{-0.234}{***}  \\ 
    \bottomrule 
  \end{tabular} 
  \label{abcdef} 
\end{table} 
\end{document}
Gruß
Elke

sudo
Forum-Guru
Forum-Guru
Beiträge: 459
Registriert: Mi 3. Okt 2012, 11:32

Beitrag von sudo »

@Elke Irgendwo scheint ein Abstand vor dem Stern von Modell 1, Variable 2 herzukommen. Hast du eine Idee, was das verursacht. Die Syntax ist ja identisch mit den anderen Beispielen.
Ein vollständiges Minimalbeispiel (VM) zu erzeugen, ist gar nicht schwer und hilft ganz oft, Fehler selber zu finden. Ohne bekommt man selten gute Antworten. Anleitungen findest du z.B. im golatex Wiki auf TeXWelt oder minimalbeipiel.de
Außerdem hilft das Lesen dieser Seite, Fragen richtig zu stellen.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

@sudo: Keine Ahnung wo dieser Abstand her kommt, muss irgendetwas mit der Ausrichtung von Text nach den Zahlen zu tun haben. Die Option table-align-text-post=false löst das Problem jedenfalls:
\documentclass[12pt]{scrbook} 
\usepackage[automark]{scrpage2} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage{booktabs} 
\usepackage{siunitx} 
\usepackage{amsmath} 

\newcommand*\uphantom[2]{\llap{$\underset{(#1)}{\phantom{#2}}$}} 
% das erste Argument enthält den Wert, der in Klammern darunter stehen soll 
% das zweite Argument dient nur dem horizontalen Ausrichten des ersten Argumentes, es wird selbst nicht ausgegeben und kann/darf sich von dem Wert vor \uphantom unterscheiden! 

\begin{document} 

\begin{table}[ht] 
   \centering 
   \caption{Ergebnisse} 
    \sisetup{table-align-text-post=false,table-text-alignment=right}
   \begin{tabular}{lSS} 
     \toprule 
     \textbf{Variablen} & {\textbf{Modell 1}}&{\textbf{Modell 2}}\\ 
     \midrule 
     \textit{Variable 1}&2.3456\uphantom{0.876}{2.3456}**&9.876\uphantom{0.654}{9.876}*\\ 
     \textit{Variable 2}&-12.345\uphantom{2.567}{-12.345}*&-0.234\uphantom{0.012}{-0.234}*** \\ 
     \bottomrule 
   \end{tabular} 
   \label{abcdef} 
\end{table} 
\end{document}
Gruß
Elke

Antworten