Tabellenspalten an der Dezimalstelle ausrichten

Tabellen und Grafiken erstellen und anordnen


AnneMu
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 9. Mai 2012, 21:18

Tabellenspalten an der Dezimalstelle ausrichten

Beitrag 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]

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag 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ß
Dateianhänge
tabelle_siunitx.png
tabelle_siunitx.png (21.8 KiB) 5528 mal betrachtet
Clemens
Paketauthor

Benutzeravatar
localghost
Forum-Meister
Forum-Meister
Beiträge: 826
Registriert: Di 8. Jul 2008, 15:40
Wohnort: Braunschweig

Alternatives Paket

Beitrag 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)
TeX und LaTeX, Fragen und Antworten – TeXwelt

¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
² System: TeX Live 2024, TeXworks

AnneMu
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 9. Mai 2012, 21:18

Beitrag von AnneMu »

Super! Danke euch für die schnelle und hilfreiche Antwort!
Grüße,
Anne

Antworten