PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zahlen mit Exponentialanhang in tabularx kombiniert mit dcolumn



fet
07-09-2009, 13:41
Hi Leute,

Ich hätte gerne eine Tabelle mit Textbreite bei der die Werte nach Kommas zentriert sind, jedoch auch einen Exponentialanhang (zb. 1.85$\cdot 10^{-6}$) besitzen.
Ohne die Exponentialanhänge in Zeile 4 funktioniert mein Minibeispiel, nur mit eben nicht.
Hab auch schon probiert den Wert für die Nachkommastellen bei \begin{tabularx}{\textwidth}{l d{2.3} d{2.3} d{2.3} d{3.3}} zu erhöhen oder negativ zu setzen; beide Versuche waren jedoch erfolglos.

Wäre echt nett, wenn mir jemand bei diesem Problem weiterhelfen kann.

\documentclass{scrartcl}
\usepackage{array,tabularx,booktabs}
\usepackage{dcolumn,setspace}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath,graphicx,float}
% Gemeinsame Verwendung von X-Spalten und dcolumn in tabularx
\makeatletter
\newcolumntype{d}[1]{>{\DC@{.}{,}{#1}}c<{\DC@end}}
\makeatother
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}[H]
\onehalfspacing
\begin{center}
\parbox{14.5cm}{\caption{Ergebnisse zur Bestimmung der Viskosität von Wasser-Glycerin-Gemischen verschiedener Zusammensetzung}}
\begin{tabularx}{\textwidth}{l d{2.3} d{2.3} d{2.3} d{3.3}}
\toprule
\multicolumn{1}{C}{Gemisch} & \multicolumn{1}{C}{H$_2$O} & \multicolumn{1}{C}{20\% Vol. Gly.} & \multicolumn{1}{C}{33\% Vol. Gly.} & \multicolumn{1}{C}{50\% Vol. Gly} \\
\midrule
$t$ [s] & 22.77 & 42.14 & 69.58 & 144.91 \\
$\rho$ (exp.) [g$\cdot$m$^{-3}$] & 0.998 & 1.058 & 1.094 & 1.138 \\
$\nu$ [m$^2\cdot$s$^{-1}$] & 1.00$\cdot 10^{-6}$ & 1.85$\cdot 10^{-6}$ & 3.06$\cdot 10^{-6}$ & 6.36$\cdot 10^{-6}$ \\
$\eta$ [mPa $\cdot$ s] & 1.00 & 1.85 & 3.06 & 6.36 \\ \addlinespace[0.2cm]
\bottomrule
\end{tabularx}
\end{center}
\end{table}

\end{document}

bobmalaria
07-09-2009, 13:47
hi,

ich empfehle dir das paket siunitx (http://www.ctan.org/tex-archive/help/Catalogue/entries/siunitx.html). dort kannst du zahlen in der form 1.4e-6 angeben und sie werden durch den breitgestellten spaltentyp S richtig ausgerichtet und ausgegeben.

in der doku steht alles sehr schön mit beispielen beschrieben. für mein empfinden eine sehr viel schönere variante als dcolumn.

verwende ausserdem innerhalb einer table-umgebung nur den gefehl \centering und nicht \begin{center}...\end{center}. das fügt zusätzlichen vertikalen abstand ein

gruss

fet
07-09-2009, 13:50
Vielen Dank für die schnelle Antwort! Werd's gleich mal ausprobieren.

fet
07-09-2009, 14:19
Noch mal ne Frage zum Einbinden des siunitx packages. Hab's mir gerade bei ctan runtergeladen und entpackt. Jetzt hab ich da einen haufen .cfg dateien und jeweils eine .sty, .log, .bib batei. reicht es, wenn ich diese einfach in den Ordner mit meine .tex file ablege oder muss ich sie irgendwo im tex-baum ablegen und mit texhash einbinden (und wenn ja, in welchen ordner im baum)?

Es steht leider nichts zur Installation im Readme file.

fet
07-09-2009, 14:25
noch zur info: ich verwende die distribution texlive unter ubuntu 9.04

fet
07-09-2009, 14:50
hat sich erledigt, habs installiert.

fet
07-09-2009, 15:15
Ok, das paket an sich scheint gut zu funktionieren, aber wie schaffe ich es jetzt eine variable spaltenbreite einzustellen, so dass sich auch der spalteninhalt über die ganze textbreite erstreckt und nicht nur die \toprule \midrule und\bottomrule?

bei dcolum geht da ja mit :
% Gemeinsame Verwendung von X und dcolumn in tabularx
\makeatletter
\newcolumntype{d}[1]{>{\DC@{.}{,}{#1}}c<{\DC@end}}
\makeatother
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}

aber wie funktioniert das mit siunitx???

hast du da auch vielleicht ne ahnung (oder vielleicht jem. anders)

Legion
07-09-2009, 18:27
hm ... ich kann dein beispiel nicht mal kompilieren. Und wie hast du das mit tabularx und den S-Spalten gemacht? Das beißt sich bei mir ganz heftig. Mal davon abgesehen dass die Punkte von Vol. Gly. als Dezimaltrenner angesehen weden und das produziert auch wieder Fehler ... Das geht erst ohne Punkte und duech ersetzten von
H$_2$O durch
H\textsubscript{2}O Da ich leider keine Ahnung von der "Endoptik" habe ... was sollen denn die multicolumns bewirken?

Ich empfehle dir, da es sich um eine wissenschaftliche Arbeit zu handeln scheint noch \usepackage[version=3]{mhchem}. Dann könntest du \ce{H2O} eingeben und würdest das gleich richtig formatiert bekommen ...

fet
07-09-2009, 20:57
das obige Beispiel kann auch nur ohne die Exponentialanhänge (zb. $\cdot 10^{-6}$) in zeile 4 kompiliert werden. das ist ja gerade das problem, dass ich eine tabelle in textbreite mit kommazentrierten werten, welchen einen Exponentialanhang besitzen, benötige.

die tabelle mit textbreite und kommazentrierung bekommt man mittels dcolumn und:
% Gemeinsame Verwendung von X-Spalten und dcolumn in tabularx
\makeatletter
\newcolumntype{d}[1]{>{\DC@{.}{,}{#1}}c<{\DC@end}}
\makeatother
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}

hin. aber das geht für werte ohne exponentialanhang (-> obiges bsp. lässt sich eben nur ohen die anhänge in zeile 4 kompilieren)

die tabelle mit kommazentrierung und exponentialanhängen bekommt man mit "siunitx" hin. da kriegt man aber keine tabelle mit textbreite (in der die spalten gleichmäßig über die seitenbreite verteilt sind) hin.

meine frage ist also, ob sich das irgendwie kombinieren lässt, sodass textbreite, kommazentriert und exponenten gleichzeitig funktionieren ???

fet
07-09-2009, 21:29
noch zu den multicolumns: die braucht man um die spalte so umzudefinieren, dass man zB. "20\% Vol Gly" reinschreiben kann, da die spalten zuvor nur für zahlenwerte mit bestimmten vor- und nachkommastellen via d{2.3} usw. definiert wurden.

Legion
08-09-2009, 07:16
OK, man lernt ja nie aus :) Guck mal ob du dich mit dieser Variante anfreunden könntest, denn siunitx hätte das auch so formatiert:
$\nu$ [m$^2\cdot$s$^{-1}$] & 1.00\times10^{-6} & 1.85\times10^{-6} & 3.06\times10^{-6} & 6.36\times10^{-6} \\

dazu bräuchtest du dann auch kein siunitx, das funktioniert auch mit dem code den du am anfang gepostet hast ...

gruß

fet
08-09-2009, 14:49
huhu, das war die lösung. vielen dank!!!