Seite 1 von 1

Tabellenspalten an der Dezimalstelle ausrichten

Verfasst: Mi 9. Mai 2012, 21:37
von AnneMu
Hallo,
ich habe Probleme bei der Formatierung meiner Tabelle. Ich würde die Zahlen gerne an der Kommastelle (bzw. dem Punkt) ausrichten. Das klappt, aber leider wird die Tabelle unnötig breit, mit viel leerem Platz dazwischen. Kann ich es latex sagen, dass es den Ueberschriftentext einfach unabhängig der Zahlen zentriert? Im Moment sieht es so aus, als wäre der Text auch am Komma ausgerichtet, was natürlich unnötig ist.

Meine Tabelle:
\documentclass[a4paper,12pt,titlepage]{scrbook}
\usepackage[automark]{scrpage2}
 
\usepackage[T1]{fontenc} %ueblich
\usepackage[]{graphicx,float,subfigure} %Alles rund um Grafiken
\usepackage{multirow} %in Tabellen mehrere Zeilen miteinander verbinden
\usepackage{amssymb} % Mathe Symbole
\usepackage{amsmath} % Mathe
\usepackage{booktabs}
\usepackage[font={small,sf},labelfont=bf,labelsep=space,justification=raggedright]{caption}
\usepackage{csquotes}
\usepackage{numprint}
\usepackage{dcolumn}
\begin{document}

\begin{table}[htbp]
  \centering 
  \caption{langer Text}
\begin{tabular}{lcD{.}{.}{-1}D{.}{.}{-1}}
\addlinespace
    \toprule
\multirow{2}{*}{\textbf{Text Text}} &\multirow{2}{*}{\textbf{}} & \textbf{Text} & \textbf{etwas laengerer Text} \\
&  & (will hier kein kursiv) & (hier auch kein kursiv) \\
\midrule
\textbf{langer langer Text} &       & \textbf{p-value} & \textbf{p-value} \\
\textit{langer langer Text} & \multicolumn{1}{c}{D} & <0.001*** & <0.001*** \\
\textit{langer langer Text} & \multicolumn{1}{c}{D} & 0.2 & 0.01** \\
\end{tabular}%
  \label{zigzag}
\end{table}%
\end{document}
Danke für eure Hilfe,
Grüße,
Anne[/code]

Verfasst: Mi 9. Mai 2012, 22:10
von cgnieder
Ich würde wohl siunitx verwenden, dass für das ausrichten an Dezimalpunkten Spalten definiert und mit solchen Tabellen wirklich gut umgehen kann:
\documentclass[a4paper,12pt,titlepage]{scrbook}
\usepackage[automark]{scrpage2}
\usepackage[T1]{fontenc} % ueblich
\usepackage[utf8]{inputenc}
\usepackage{multirow} % in Tabellen mehrere Zeilen miteinander verbinden
\usepackage{booktabs}
\usepackage[font={small,sf},labelfont=bf,labelsep=space,justification=raggedright]{caption}
\usepackage{siunitx}
\begin{document} 

\begin{table}[ht]
 \centering 
 \caption{langer Text} 
 \begin{tabular}{lcSS} 
  \addlinespace 
  \toprule
  \multirow{2}{*}{\textbf{Text Text}} & \multirow{2}{*}{\textbf{}} & \textbf{Text} & \textbf{etwas laengerer Text} \\
   &                          & {(will hier kein kursiv)} & {(hier auch kein kursiv)} \\
  \midrule 
  \textbf{langer langer Text} &                           & {\textbf{p-value}} & {\textbf{p-value}} \\
  \textit{langer langer Text} & D                         & <0.001***          & <0.001*** \\
  \textit{langer langer Text} & D                         & 0.2                & 0.01** \\
 \end{tabular}
 \label{zigzag}
\end{table}
\end{document}
Bild

Gruß

Alternatives Paket

Verfasst: Mi 9. Mai 2012, 22:19
von localghost
Das Paket siunitx geht die Sache etwas intelligenter an.
% !TeX program = pdflatex
\documentclass[
  captions=tableabove,        % Formatierung für Tabellenüberschriften
  ngerman
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{selinput}         % Halbautomatische Festlegung der Eingabekodierung
\SelectInputMappings{         % mit Hilfe von ausgewählten Glyphen
  adieresis={ä},              % siehe: http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
  germandbls={ß},
  Euro={€}
}
\usepackage{babel}
\usepackage{booktabs,multirow}
\usepackage{siunitx}

\sisetup{
  locale=DE
}

\begin{document}
  \begin{table}[!htb]
    \caption{langer Text}
    \label{tab:zigzag}
    \centering
    \begin{tabular}{
      l
      c
      S[table-format=1.3,table-comparator=true,table-space-text-post={***}]
      S[table-format=1.3,table-comparator=true,table-space-text-post={***}]
    }\toprule
      \multirow{2}{*}{\textbf{Text Text}} & \multirow{2}{*}{\textbf{}} & {\textbf{Text}} & {\textbf{etwas längerer Text}} \\
      &  & \multicolumn{1}{c}{(will hier kein kursiv)} & \multicolumn{1}{c}{(hier auch kein kursiv)} \\ \midrule
      \textbf{langer langer Text} &       & {\textbf{p-value}} & {\textbf{p-value}} \\
      \textit{langer langer Text} & D & <0.001*** & <0.001*** \\
      \textit{langer langer Text} & D & 0.2 & 0.01** \\
    \end{tabular}%
  \end{table}% 
\end{document}
Was das Paket sonst noch so kann, entnimmst du seiner Anleitung.


Thorsten
(etwas zu langsam für Clemens)

Verfasst: Mi 9. Mai 2012, 22:33
von AnneMu
Super! Danke euch für die schnelle und hilfreiche Antwort!
Grüße,
Anne