PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dcolumn: Ausrichtung nicht zentriert



c_verres
02-04-2008, 16:48
Benutze dcolumn, um Ausrichtung am Dezimalpunkt zu gewährleisten.

Aber die 3. und 4. Spalte sehen blöd aus, da die Zahlen nicht zentriert sind. Wie kriege ich das hin?


\documentclass[tablecaptionabove]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{dcolumn}

\begin{document}
\begin{table}[htbp]
\begin{center}
\caption{XXX.}
\label{tab:XXX}
\begin{tabular}{lD{.}{.}{2}D{.}{.}{2}D{.}{.}{2}D{. }{.}{2}D{.}{.}{2}}
\hline\hline
\multicolumn{1}{c}{Bloe} & \multicolumn{1}{c}{XY2} & \multicolumn{1}{c}{XY2-Z12} & \multicolumn{1}{c}{XYZQQQ} & \multicolumn{1}{c}{bla} & \multicolumn{1}{c}{blabla} \\
\hline
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & 1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
\hline\hline
\end{tabular}
\end{center}
\end{table}
\end{document}

Stefan_K
02-04-2008, 16:57
Hallo,

Zentrierung erreichst Du durch einen negativen Wert der Maximalzahl an Dezimalstellen, z.B.: D{.}{.}{-1}

Viele Grüße,

Stefan

c_verres
03-04-2008, 13:03
Zentrierung erreichst Du durch einen negativen Wert der Maximalzahl an Dezimalstellen, z.B.: D{.}{.}{-1}


Und warum klappt das mit negativen Zahlen? Was bedeuten die überhaupt?

Stefan_K
03-04-2008, 13:58
Hallo,

das steht in der Dokumentation (http://www.ctan.org/tex-archive/macros/latex/required/tools/dcolumn.pdf), schon auf der 1. Seite. Eine negative Anzahl von Dezimalstellen ist ja nicht sehr sinnvoll, vermutlich daher hat der Autor das negative Vorzeichen als Markierung für Zentrierung benutzt.

Wenn ich mir die Doku anschaue, müsste aber auch folgender workaround funktionieren:
\makeatletter
\let\DC@right\DC@centre
\let\DC@endright\DC@cendentre
\makeatother
...
\begin{tabular}{lD{.}{.}{2}D{.}{.}{2}D{.}{.}{2}D{. }{.}{2}D{.}{.}{2}}
...

Danach wird immer zentriert, auch wenn Du positive Zahlen angibst wie am Anfang.

Viele Grüße,

Stefan

voss
03-04-2008, 14:33
Benutze dcolumn, um Ausrichtung am Dezimalpunkt zu gewährleisten.

Aber die 3. und 4. Spalte sehen blöd aus, da die Zahlen nicht zentriert sind. Wie kriege ich das hin?


nimm rccol anstelle von dcolumn

\documentclass{scrreprt}

\usepackage{rccol}

\begin{document}

\begin{tabular}{l *{3}{R-[.][.]{1}{2}} R[.][.]{4}{2} R[.][.]{2}{2}}
\hline\hline
\multicolumn{1}{c}{Bloe} & \multicolumn{1}{c}{XY2} & \multicolumn{1}{c}{XY2-Z12} & \multicolumn{1}{c}{XYZQQQ} & \multicolumn{1}{c}{bla} & \multicolumn{1}{c}{blabla} \\
\hline
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & 1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
\hline\hline
\end{tabular}

\end{document}

Herbert

c_verres
07-04-2008, 11:57
Wenn ich mir die Doku anschaue, müsste aber auch folgender workaround funktionieren:
\makeatletter
\let\DC@right\DC@centre
\let\DC@endright\DC@cendentre
\makeatother
...
\begin{tabular}{lD{.}{.}{2}D{.}{.}{2}D{.}{.}{2}D{. }{.}{2}D{.}{.}{2}}
...

Danach wird immer zentriert, auch wenn Du positive Zahlen angibst wie am Anfang.


Aber die vierte Spalte ist nun viel zu breit:


\documentclass[tablecaptionabove]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{dcolumn}
\makeatletter
\let\DC@right\DC@centre
\let\DC@endright\DC@cendentre
\makeatother

\begin{document}
\begin{table}[htbp]
\begin{center}
\caption{XXX.}
\label{tab:XXX}
\begin{tabular}{lD{.}{.}{2}D{.}{.}{2}D{.}{.}{2}D{. }{.}{2}D{.}{.}{2}}
\hline\hline
\multicolumn{1}{c}{Bloe} & \multicolumn{1}{c}{XY2} & \multicolumn{1}{c}{XY2-Z12} & \multicolumn{1}{c}{XYZQQQ} & \multicolumn{1}{c}{bla} & \multicolumn{1}{c}{blabla} \\
\hline
XXXXX & -1.23 & -1.23 & -1.23\ (1.34) & 1234.56 & 1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
XXXXX & -1.23 & -1.23 & -1.23 & 1234.56 & -1.23 \\
\hline\hline
\end{tabular}
\end{center}
\end{table}
\end{document}

Stefan_K
07-04-2008, 15:02
Hallo,

sie wird so breit, weil am 1. Punkt zentriert wird und Du einen weiteren Wert rechts daneben in derselben Zelle stehen hast.
Du könntest die Punkt-Ausrichtung für diese Zelle vermeiden sowie Zentrierung erhalten durch
\multicolumn{1}{c}{-1.23\ (1.34)}

Stefan

c_verres
09-04-2008, 16:49
sie wird so breit, weil am 1. Punkt zentriert wird und Du einen weiteren Wert rechts daneben in derselben Zelle stehen hast.
Du könntest die Punkt-Ausrichtung für diese Zelle vermeiden sowie Zentrierung erhalten durch
\multicolumn{1}{c}{-1.23\ (1.34)}


OK, danke.

Nächstes Problem:


\documentclass[tablecaptionabove]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{dcolumn}
\makeatletter
\let\DC@right\DC@centre
\let\DC@endright\DC@cendentre
\makeatother

\begin{document}

\begin{table}[htbp]
\centering
\caption{XXX.}
\label{tab:XXX}
\begin{tabular}{D{.}{.}{2}D{.}{.}{2}D{.}{.}{2}D{.} {.}{2}D{.}{.}{2}}
\hline\hline
\multicolumn{1}{c}{$x/\mathrm{yz}$} & \multicolumn{1}{c}{$X_{y}$} & \multicolumn{1}{c}{$Y_{x}$} & \multicolumn{1}{c}{$X_{y}/Y_{x}$} & \multicolumn{1}{c}{$X / \mathrm{Y}$} \\
\hline
1 & 12.345 & 12.345 & 1.234 & 123 \\
2 & 1.234 & 1.234 & 1.234 & 12 \\
3 & 1.234 & 1.234 & 1.234 & 12 \\
4 & 1.234 & 1.234 & 1.234 & 12 \\
\hline \hline
\end{tabular}
\end{table}

\end{document}

Die letzten beiden Spalten sehen blöd aus.

Stefan_K
09-04-2008, 17:18
Dann mach eben c oder r Spalten aus den letzten beiden, statt D, insbesondere ist ja in der letzten Spalte kein Dezimalpunkt, an dem zentriert ausgerichtet werden kann/soll.

Oben passierte mir übrigens ein Tippfehler, eine Zeile sollte leicht korrigiert heißen:
\let\DC@endright\DC@endcentre

Stefan