Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Am Dezimalpunkt centriert Ausrichten mit fester Spaltenbreite

144 views
Skip to first unread message

Christoph Bartoschek

unread,
Apr 20, 2008, 5:15:09 AM4/20/08
to
Hallo,

wie muss eine Spalte deklariert werden, so dass der Inhalt am Dezimalpunkt
ausgerichtet wird, und dann das ganze zentriert in einer Spalte mit
vorgegebener Breite gesetzt wird?

Es wäre ungefähr das Ergebnis des folgenden Algorithmus:

1. Nimm alle Einträge der Spalte, die einen Dezimalpunkt haben und richte
sie nach dem Dezimalpunkt aus.
2. Nimm das umschliessende Rechteck der Einträge und zentriere es innerhalb
der Spalte.
3. Zentriere alle anderen Einträge aus der Spalte.

Zusätzlich wäre es gut, das auch für variable Spaltenbreiten zu haben. Damit
meine ich die X Spaltenoption von tabularx.

Grüße
Christoph Bartoschek

Gunter Lindemann

unread,
Apr 20, 2008, 6:01:49 AM4/20/08
to
Christoph Bartoschek wrote:

> wie muss eine Spalte deklariert werden, so dass der Inhalt am Dezimalpunkt
> ausgerichtet wird, und dann das ganze zentriert in einer Spalte mit
> vorgegebener Breite gesetzt wird?

Kennst Du tabsatz.pdf? (Leicht mit Google zu finden)

Da ist eine Lösung für dieses und viele andere
Tabellenprobleme zu finden.

Gruß, Gunter

Christoph Bier

unread,
Apr 20, 2008, 7:03:10 AM4/20/08
to

Schau Dir mal numprint an. Vielleicht kommt auch noch siunitx in
Frage, das aber so neu ist, dass ich es noch nicht kenne.

Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)

Christoph Bartoschek

unread,
Apr 20, 2008, 5:26:29 PM4/20/08
to
Christoph Bier wrote:

> Schau Dir mal numprint an. Vielleicht kommt auch noch siunitx in
> Frage, das aber so neu ist, dass ich es noch nicht kenne.

Beide Pakete lassen mich nicht die Breite der Spalte und die Ausrichtung in
der Spalte angeben. Ausrichtung kriegt man mit newcolumntype wohl noch hin,
aber ich sehe nicht, wie ich die Breite reinbekomme.

Christoph

Christoph Bartoschek

unread,
Apr 20, 2008, 5:27:05 PM4/20/08
to
Gunter Lindemann wrote:

Hallo,

irgendwie finde ich darin die Lösung nicht für das Problem. Könntest du mir
auch noch die Seite angeben?

Danke,
Christoph

Gunter Lindemann

unread,
Apr 21, 2008, 2:28:11 AM4/21/08
to
Christoph Bartoschek wrote:

> irgendwie finde ich darin die Lösung nicht für das Problem. Könntest du
> mir auch noch die Seite angeben?

Auf die Schnelle geschaut: z.B. Tabellen 4, 18 und 22.

Schau in tabsatz.tex, um zu sehen, wie es genau geht.
Man braucht anscheinend dcolumn.sty. Man kann sogar den
Dezimalpunkt ersetzen: im Quelltext verwendet man einen
Punkt, im Dokument erscheint stattdessen ein Komma.

Hab' es auch schon lange nicht mehr benutzt.

Gruß, Gunter

Jürgen Göbel

unread,
Apr 21, 2008, 4:35:27 AM4/21/08
to
Christoph Bartoschek wrote:

> Hallo,

> wie muss eine Spalte deklariert werden, so dass der Inhalt am Dezimalpunkt
> ausgerichtet wird, und dann das ganze zentriert in einer Spalte mit
> vorgegebener Breite gesetzt wird?

Versuch' mal, Dir aus folgendem Codeschnipsel etwas abzuleiten.
Das sollte eigentlich sein, was Du suchst, oder?

Jürgen


\begin{tabularx}{\linewidth}{@{}lCCd{2.2}@{}}
\toprule
$M$ & $\mquer (X)$ & $R$ & \multicolumn{1}{C}{$r$} \\
& bit/Symbol & bit/Symbol & \multicolumn{1}{c}{\%} \\
\cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(l){4-4}
0 & 2,000 & 0,705 & 35.3 \\
1 & 1,400 & 0,105 & 7.50 \\
2 & 1,335 & 0,040 & 3.00 \\
3 & 1,309 & 0,014 & 1.10 \\
\bottomrule
\end{tabularx}

Burkhard Moddemann

unread,
Apr 21, 2008, 4:38:31 AM4/21/08
to
Christoph Bartoschek schrieb:

Wenn Du die auskommentierten tabular*-Zeilen nutzt, wird die Tabelle auf
Seitenbreite gestreckt.

Grüße
Burkhard


\documentclass{scrartcl}
\usepackage{lmodern,siunitx,booktabs,numprint}
\begin{document}
%\begin{tabular*}{1.0\textwidth}{@{\extracolsep\fill}%
\begin{tabular}{%
n{3}{0}% Zahlen ohne Dezimalstelle erhalten sonst ein
% Dezimaltrenner. Deklaration aus numprint.sty.
s[tabalign=centre,tabformat=1.2]%
s[tabalign=right,tabformat=1.2]%
s[tabalign=left,tabformat=1.2,decimalsymbol=comma]%
s%
}%
%
\toprule
%
{$\dot{\mathrm{V}}$}
&{H$_{\mathrm{GHDP{,}1}}$}
&{$\dot{\mathrm{V}}_{\mathrm{GHDP{,2}}}$}
&{H$_{\mathrm{GHDP_{berechnet}}}$}
&{$\mathrm{c_{s}}$}\\
%
\midrule
0 & 0,00 & 0,00 & 0,00 & 0,00 \\

80 & 2,30 & 3,13 & 4,28 & 2,83 \\

100 & 3,30 & 4,50 & 4,97 & 3,54 \\

\bottomrule
\end{tabular}
% \end{tabular*}
\label{tab:A10-1}
\end{document}

Christoph Bartoschek

unread,
Apr 21, 2008, 5:29:56 AM4/21/08
to
Jürgen Göbel wrote:

> \begin{tabularx}{\linewidth}{@{}lCCd{2.2}@{}}
> \toprule
> $M$ & $\mquer (X)$ & $R$ & \multicolumn{1}{C}{$r$} \\
> & bit/Symbol & bit/Symbol & \multicolumn{1}{c}{\%} \\
> \cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(l){4-4}
> 0 & 2,000 & 0,705 & 35.3 \\
> 1 & 1,400 & 0,105 & 7.50 \\
> 2 & 1,335 & 0,040 & 3.00 \\
> 3 & 1,309 & 0,014 & 1.10 \\
> \bottomrule
> \end{tabularx}

Hier erkennt meine installation das C nicht. Welches Paket muss ich
einbinden?

Christoph Bartoschek

unread,
Apr 21, 2008, 5:28:04 AM4/21/08
to
Gunter Lindemann wrote:

> Christoph Bartoschek wrote:
>
>> irgendwie finde ich darin die Lösung nicht für das Problem. Könntest du
>> mir auch noch die Seite angeben?
>
> Auf die Schnelle geschaut: z.B. Tabellen 4, 18 und 22.
>
> Schau in tabsatz.tex, um zu sehen, wie es genau geht.
> Man braucht anscheinend dcolumn.sty. Man kann sogar den
> Dezimalpunkt ersetzen: im Quelltext verwendet man einen
> Punkt, im Dokument erscheint stattdessen ein Komma.

Danke fürs Nachschauen. Leider wird in allen Beispielen die Spalte nur so
breit wie der Inhalt. Ich möchte aber die Breite selbst bestimmen, oder von
tabularx berechnen lassen.

Gruß
Christoph


Christoph Bartoschek

unread,
Apr 21, 2008, 5:29:11 AM4/21/08
to
Burkhard Moddemann wrote:

> Christoph Bartoschek schrieb:
>> Christoph Bier wrote:
>>
>>> Schau Dir mal numprint an. Vielleicht kommt auch noch siunitx in
>>> Frage, das aber so neu ist, dass ich es noch nicht kenne.
>>
>> Beide Pakete lassen mich nicht die Breite der Spalte und die Ausrichtung
>> in der Spalte angeben. Ausrichtung kriegt man mit newcolumntype wohl noch
>> hin, aber ich sehe nicht, wie ich die Breite reinbekomme.
>>
>> Christoph
>>
>
> Wenn Du die auskommentierten tabular*-Zeilen nutzt, wird die Tabelle auf
> Seitenbreite gestreckt.

Danke für das Beispiel, aber ich möchte die Spalten mit den Zahlen von
tabularx strecken lassen. In deinem Beispiel sind die Spalten so breit, wie
der Inhalt.

Gruß
Christoph

Uwe Siart

unread,
Apr 21, 2008, 5:41:17 AM4/21/08
to
Christoph Bartoschek <barto...@gmx.de> writes:

> Danke für das Beispiel, aber ich möchte die Spalten mit den Zahlen von
> tabularx strecken lassen. In deinem Beispiel sind die Spalten so
> breit, wie der Inhalt.

Die X-Spalte kann ja auch die nächste Spalte rechts neben der d-Spalte
sein.

--
Uwe

Jürgen Göbel

unread,
Apr 21, 2008, 6:04:37 AM4/21/08
to
Christoph Bartoschek wrote:

> Hier erkennt meine installation das C nicht. Welches Paket muss ich
> einbinden?

Verzeihung, das stammt aus meinem eigenen columns.sty und sieht so aus:

% Spaltendefinition zentriert für tabularx
% 29. Oktober 2000

\newcolumntype{C}{>{\centering\arraybackslash}X}


Jürgen

Christoph Bartoschek

unread,
Apr 21, 2008, 6:24:29 AM4/21/08
to
Uwe Siart wrote:

Ok, das wäre ein Hack. Die X Spalten als variable Puffer verwenden. Die
leeren Spalten sind aber schon lästig einzutippen.

Christoph

0 new messages