PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelleneinträge ausrichten; dcolunm :(



J0Sch
04-06-2009, 21:32
Hallo

Ich bin noch eher ein Latex Anfänger und schaffe es einfach nicht die Zahlen in meiner Tabelle richtig auszurichten :( .
Mit dem column package sollte ich Zahlen ja z.B. am Komma problemlos ausrichten könne. Ich verstehe leider die
column documentation nicht... Probleme machen mir so Zeilen wie:

"\newcolumntype{d}[1]{D{.}{\cdot}{#1}}" oder
"\newcolumntype{d}[1]{>{\DC@{.}{.}{#1}}c<{\DC@end}}"

mir ist schon klar, dass ich damit einen neuen Spaltentyp d definiere, allerdings hört es dann auch schon auf.

Ich würde gern die erste Spalte meiner Tabelle an der "einer Dezimalen" und die anderen Spalten am Komma ausrichten.



\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[small, hang, nooneline]{caption}
\usepackage{colortbl}
\usepackage{array}
\usepackage{multirow}
\usepackage{units}
\usepackage{dcolumn}

\begin{document}

\newcolumntype{d}[1]{D{.}{\cdot}{#1}}

\begin{table}[h]
\caption{Messtabelle 705er Modul mit Schweißkraft \unit[50]{N}}
\label{tab: TLM 50N}
\extrarowheight10pt
\begin{tabular}{p{0.24\textwidth}p{0.15\textwidth} p{0.15\textwidth}p{0.15\textwidth}p{0.15\textwidth }} \hline
\multirow{2}{*}{\textbf{Abstand}}&\multicolumn{4}{c}{\textbf{Spannungspotential [mV]}}\\ \cline{2-5}
&\textcolor{red}{o}ben&\textcolor{red}{u}nten&\textcolor{red}{o}ben&\textcolor{red}{u}nten\\ \hline
\unit[3]{mm}&3,98&3,96&3,38&3,39\\ \hline
\unit[8]{mm}&6,36&6,34&6,33&6,35\\ \hline
\unit[13]{mm}&10,97&10,87&9,19&9,21\\ \hline
\unit[18]{mm}&13,77&13,68&12,76&12,81\\ \hline
\unit[23]{mm}&14,74&14,75&15,41&15,42\\ \hline
\end{tabular}
\end{table}

\end{document}


wäre super wenn mir da jemand helfen könnte.

Danke JoSch

bobmalaria
04-06-2009, 21:47
hi,

schau dir mal das siunitx packet an. es beinhaltet einen neuen spaltentyp 'S' der praktisch dinge macht die auch dcolumn macht.
für meinen geschmackt geht es aber mit siunitx viel einfacher. die dcolumn doku fand ich auch immer etwas kryptisch :)

gruss

J0Sch
05-06-2009, 08:41
moin,

Danke für den Tipp mit siunitx. Also jetzt bekomme ich die Einträge gut ausgerichtet,
aber ich kann meine Spaltenbreite nicht mehr beeinflussen. Gibt es eine Möglichkeit für
die S Spalte eine Breite festzulegen? Kann ich die S spalte irgendwie in eine tabularx Tabelle einbauen?

meine aktueller code:



\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[small, hang, nooneline]{caption}
\usepackage{colortbl}
\usepackage{array}
\usepackage{multirow}
\usepackage[emulate=units]{siunitx}
\usepackage{tabularx}
\usepackage{booktabs}


\begin{document}

\begin{table}[h]
\caption{Messtabelle 705er Modul mit Schweißkraft \unit[50]{N}}
\label{tab: TLM 50N}
\extrarowheight10pt
\begin{tabular}{
S[tabnumalign=centre,tabformat=2.0]
S[tabnumalign=right,tabformat=2.2,decimalsymbol=comm a]
S[tabnumalign=right,tabformat=2.2,decimalsymbol=comm a]
S[tabnumalign=right,tabformat=2.2,decimalsymbol=comm a]
S[tabnumalign=right,tabformat=2.2,decimalsymbol=comm a]}
\toprule
\textbf{Abstand}&\multicolumn{4}{c}{\textbf{Spannungspotential [mV]}}\\
\unit[]{mm}&\textcolor{red}{o}ben&\textcolor{red}{u}nten&\textcolor{red}{o}ben&\textcolor{red}{u}nten\\
\midrule
3&3,98&3,96&3,38&3,39\\
8&6,36&6,34&6,33&6,35\\
13&10,97&10,87&9,19&9,21\\
18&13,77&13,68&12,76&12,81\\
23&14,74&14,75&15,41&15,42\\
\bottomrule
\end{tabular}
\end{table}

\end{document}


Viele Grüße,
Josch

bobmalaria
05-06-2009, 10:36
hi,

ich würde sagen die spalten werden eben so breit wie die nummer es benötigt. aber du kannst tabularx und den X-spaltentyp ja z.b. in der multicolumn die du für die erste zeile verwendest einbauen. aber z.b. in deinem beispiel würde das kein sinn machen da die tabelle recht klein und kompakt ist. in dieser multicolumn umgebung könntest du natürlich auch eine p{}-spalte verwenden. das hat auch mal der autor von siunitx vorgeschlagen.

gruss

J0Sch
06-06-2009, 20:19
n abend,

leider beist sich das siunitx package mit dem unit package... und da ich in meinem kompletten Dokument
Einheiten mit dem unit package gemacht habe ist mir das jetzt etwas zu aufwändig alles zu änder :(

kann mir vielleicht jemand eine Lösung mit dcolunm anbieten? Oder gibt es ein gutes Beispiel für eine
dcolumn Tabelle (am besten mit Erklärung)

Danke Josch

bobmalaria
06-06-2009, 22:24
hi,

vielleicht ist das das was du suchst?


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[small, hang, nooneline]{caption}
\usepackage{colortbl}
\usepackage{array}
\usepackage{multirow}
\usepackage{units}
\usepackage{dcolumn}

\begin{document}
\newcolumntype{Z}{D{,}{,}{2}}
\newcolumntype{Y}{D{,}{,}{-1}}


\begin{table}[h]
\caption{Messtabelle 705er Modul mit Schweißkraft \unit[50]{N}}
\label{tab: TLM 50N}
\extrarowheight10pt
\begin{tabular}{Y Z Z Z Z} \hline
\multirow{2}{*}{\textbf{Abstand}}&\multicolumn{4}{c}{\textbf{Spannungspotential [mV]}}\\ \cline{2-5}
&\multicolumn{1}{c}{\textcolor{red}{o}ben}&\multicolumn{1}{c}{\textcolor{red}{u}nten}&\multicolumn{1}{c}{\textcolor{red}{o}ben}&\multicolumn{1}{c}{\textcolor{red}{u}nten}\\ \hline
\unit[3]{mm}&3,98&3,96&3,38&3,39\\ \hline
\unit[8]{mm}&6,36&6,34&6,33&6,35\\ \hline
\unit[13]{mm}&10,97&10,87&9,19&9,21\\ \hline
\unit[18]{mm}&13,77&13,68&12,76&12,81\\ \hline
\unit[23]{mm}&14,74&14,75&15,41&15,42\\ \hline
\end{tabular}
\end{table}

\end{document}

kleine erklärung


\newcolumntype{Z}{D{,}{,}{2}}

Z= name des neuen spaltentyps
D ist der von dcolumn bereitgestellte spaltentyp
, nr 1: gibt an was für ein dezimaltrenner in der tex datei verwendet wird
, nr 2: gibt an als was für ein zeichen der dezimaltrenner dargestellt wird
2: gibt die anzahl der dezimalstellen an

rais
08-06-2009, 00:37
leider beist sich das siunitx package mit dem unit package...
selbstverständlich `beißen' sich diese Pakete, wollen sich beide doch um `ihre' Einheiten kümmern ...
BTW: warum läßt Du nicht einfach das units-Paket weg? In Deinem hiesigen Beitrag (#3) läßt Du bereits das siunitx-Paket `units' emulieren ...

MfG

J0Sch
08-06-2009, 10:24
moin,

danke bobmalaria genau so eine Erklärung hab ich gebraucht!
@rais ich habe halt in meiner ganzen Arbeit das unit package genutzt, und wenn ich das jetzt weglasse muss ich alle Einheiten ändern :( oder kann das siunitx auch mit \unit[50]{${kg}over{m^3}$} was anfangen? Das würde doch eher was in die Richtung \SI{50}{\kilogram\per\quibicmeter} benötigen...

Jetzt habe ich nur noch ein kleines Problem mit der Spaltenbreite... ich versteh nicht wirklich wie ich mit \multicolum etwas an der Spaltenart ädern kann.
Also mit \multicolum{2}{c}{text} sage ich ja nur, dass 2 Spalten zu einer gemacht werden, dass diese Zentriert sein soll und den Inhalt "text" besitzt. Ich ändere doch nichts an der Art meiner Spalten wenn es vorher zwei d Spalten waren, sind sie es immer noch!? Oder habe ich das was nicht verstanden?


Grüße Josch

bobmalaria
08-06-2009, 11:02
hi,

also das was du hier angibst ist dein spaltentyp


\begin{tabular}{lcr}

z.b. erste spalte l, zweite c, dritte r

möchte ich jetzt aber in meiner ersten zeile alles zentriert haben müsste ich schreiben.


\begin{tabular}{lcr}
\multicolumn{1}{c}{Inhalt} & Ich bin schon c & \multicolumn{1}{c}{Inhalt}

damit wird in EINER zeile die globale spaltendefinition überschrieben, gilt aber weiter in allen folgenden zeilen

J0Sch
09-06-2009, 10:51
moin,

natürlich c steht ja nicht für zentriert sonder ist ein Spaltentyp...
dann könnte ich theoretisch über \multicolumn{1}{p{3cm}}{Inhalt} meine d Spalte in der breite varieren. Leider ist die p-Spalte nicht zentriert und mein "oben" hängt dann am linken Rand während die Zahlen zentriert am Komma ausgerichtet sind :(
Gibt es einen Spaltentyp der zentriert ist und bei dem ich die breite variabel wählen kann?

Idel wäre, wenn ich die Spalten in eine tabularx tabelle einbauen könnte. Ich habe ein bisschen im Forum gesucht und ein Beispiel gefunden:
http://www.mrunix.de/forums/showthread.php?t=56642&highlight=dcolumn

Leider verstehe ich die Spaltendefinition nicht :(

\newcolumntype{d}[1]{>{\DC@{.}{.}{#1}}c<{\DC@end}}

Grüße und vielen Dank für die bisherige Hilfe
Josch