PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dcolumn und komplexe Zahlen?



fünfhaus
17-08-2013, 22:03
Hallo,

folgende Frage: Die Real- und Imaginärteile der komplexen Zahlen sollen jeweils am Komma ausgerichtet werden. Ein Versuch:


\usepackage{dcolumn}

\begin{table}[ht!]
\centering
\begin{tabular}{lD{,}{,}{9}cD{,}{,}{9}}
\hline
$z_1$ & 2,3 & + & i \cdot 3,123456789 \\
$z_2$ & 5,67 & + & i \cdot 3,12345 \\
$z_3$ & 8,901 & + & i \cdot 3,1234567 \\
$z_4$ & 1,123456789 & + & i \cdot 3,123 \\
\hline
\end{tabular}
\end{table}

Der Abstand zwischen Real- und Imaginärteil ist mir zu groß. Gern hätte ich den gleichen Abstand wie in einer Matheumgebung $1,123456789 + i \cdot 3,123$. Geht das irgendwie !?

Gruß, fünfhaus

hakaze
18-08-2013, 13:45
Dia Spaltenabstände können über @{Abstand} eingestellt werden (@{} = kein Abstand):

\documentclass{article}

\usepackage{dcolumn}

\begin{document}

\centering
\begin{tabular}{lD{,}{,}{9}@{$\;$}c@{$\;$}D{,}{,}{ 9}}
\hline
$z_1$ & 2,3 & + & i \cdot 3,123456789 \\
$z_2$ & 5,67 & + & i \cdot 3,12345 \\
$z_3$ & 8,901 & + & i \cdot 3,1234567 \\
$z_4$ & 1,123456789 & + & i \cdot 3,123 \\
\hline
\end{tabular}

\end{document}\; ist der breite horizontale Abstand im Mathemodus (siehe auch "Horizontal spacing" in mathmode.pdf (http://texdoc.net/pkg/mathmode)).

PS: wenn du viele Zahlen (normale, komplexe, mit und ohne Exponenten) und u.U. auch Zahlen mit (SI-)Einheiten setzen willst, kann ich nur siunitx (http://texdoc.net/pkg/siunitx) empfehlen!

fünfhaus
20-08-2013, 19:19
Danke für Deine Antwort!

Frage 1: Ist @{$\;$} der Standardabstand? Also der gleiche wie bei


x + iy

Frage 2: Kann man siunitx und dcolumn kombinieren? Die Ausrichtung des Imaginiärteil stimmt hier leider nicht:


\begin{table}[ht!]
\centering
\begin{tabular}{D{,}{,}{9}@{$\;$}c@{$\;$}D{,}{,}{9 }}
\hline
2,3 & + & $\num{3,123456789i}$ \\
5,67 & + & $\num{3,12345i}$ \\
8,901 & + & $\num{3,1234567i}$ \\
1,123456789 & + & $\num{3,123i}$ \\
\hline
\end{tabular}
\end{table}

Gruß, fünfhaus

hakaze
20-08-2013, 22:06
Frage 1: Ist @{$\;$} der Standardabstand? Also der gleiche wie bei x + iyJa, miss es aus oder lies es in mathmode.pdf (http://texdoc.net/pkg/mathmode) nach ;)


Frage 2: Kann man siunitx und dcolumn kombinieren? Die Ausrichtung des Imaginiärteil stimmt hier leider nicht:
In dem Fall ist der Rückgabewert von \num ja keine Zahl mehr, sondern ein String aus Zahlen und Buchstaben.

Die Formatierung von komplexen Zahlen kann man auch bei siunitx (http://texdoc.net/pkg/siunitx) nach Belieben anpassen (siehe die verlinkte Paket-Doku (http://texdoc.net/pkg/siunitx)).

Ansonsten ist es IHMO fraglich, ob bei deinem Anwendungsfall (stark unterschiedliche Anzahl von Nachkommastellen) so eine Art der tabellarischen Ausrichtung überhaupt sinnvoll ist. Auf tex.sx gibt es eine ähnliche Frage (http://tex.stackexchange.com/q/83598/17198)...

Ich habe mal hier die Antworten in einem Beispiel zusammengefasst (ein vollständig lauffähiges Minimalbeispiel, by the way, nicht solche Code-Fetzen wie in deinem Post ;)):

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs,siunitx}
% Formatierung von Zahlen (komplexen im Besonderen)
\sisetup{locale=DE, output-complex-root = \text{\ensuremath{i\;\cdot\;}}, complex-root-position = before-number}

% extra Pakete für die Ausrichtung am Pluszeichen
\usepackage{xstring,collcell}
% Neudefinition einer N-Spalte, die komplexe Zahlen einliest und ausrichtet
\newlength{\WidestRealNum}
\settowidth{\WidestRealNum}{$9999999999$}
\newcommand*{\ApplyNumFormatting}[1]{%
\StrBefore{#1}{+}[\RealPart]%
\StrBehind{#1}{i}[\ImagPart]%
$\makebox[\WidestRealNum][r]{$\RealPart$} + i\cdot\ImagPart$%
}%
\newcolumntype{N}{>{\collectcell\ApplyNumFormatting}l<{\endcollectcell}}

\begin{document}
\centering
\begin{tabular}{S[table-format=1.9]S[table-format=1.9]SN}
\toprule % rules aus booktabs-Paket
\multicolumn{2}{c}{jeweils einzeln} & {siunitx-Format} & \multicolumn{1}{c}{Ausrichtung} \\
{Realteil} & {Imaginärteil} & {ohne Ausrichtung} &\multicolumn{1}{c}{via collcell} \\
\midrule
2,3 & 3,123456789 & \num{2,3+i3,123456789} & 2,3+i3,123456789 \\
5,67 & 3,12345 & \num{5,67+i3,12345} & 5,67+i3,12345 \\
8,901 & 3,1234567 & \num{8,901+i3,1234567} & 8,901+i3,1234567 \\
1,123456789 & 3,123 & \num{1,123456789+i3,123} & 1,123456789+i3,123 \\
\bottomrule
\end{tabular}
\end{document}

fünfhaus
20-08-2013, 23:08
Danke für Deine ausführliche Antwort und das Minimalbsp (schau ich mir morgen genauer an). Ja, in Zukunft gibts auch von mir lauffähige Schnipsel :rolleyes:

Hab mir folgendes überlegt: Ich werde z=x+iy in der Tabelle in Re (x) und Im(x) aufteilen und die imaginäre Einheit "i" einfach weglassen. Sieht auch irgendwie nicht schön aus, wenn soviele "i's" untereinanderstehen. Mal sehen...

Und noch eine Frage: Hab das mit dem Abstand im mathmode.pdf gesucht, aber nicht gefunden. Auf welcher Seite steht denn das? Also das der Abstand zwischen "3 +" genau ein $\;$ ist...!?

Gruß, fünfhaus

rais
21-08-2013, 00:45
Hab das mit dem Abstand im mathmode.pdf gesucht, aber nicht gefunden. Auf welcher Seite steht denn das? Also das der Abstand zwischen "3 +" genau ein $\;$ ist...!?

nirgends;-)
In Tabelle 6 (the meaning of the math spaces) siehst Du, daß der Abstand zwischen `3' und `+' der mittleren Länge (\medmuskip) entspricht.
Aus Tabelle 7 (Spaces in math mode) kannst Du ablesen, daß `\;' dem breiten horizontalen Abstand (\thickmuskip) entspricht, worauf hakaze in seiner ersten Antwort auch schon hingewiesen hat.
Was Du suchst, ist `\:'


\documentclass{article}
\begin{document}
\[
a\;b+c \neq a\:b+c
\]

{\medmuskip0mu
\[
a\;b+c \neq a\:b+c
\]
}
{\thickmuskip0mu
\[
a\;b+c \neq a\:b+c
\]
}

\end{document}

MfG

fünfhaus
21-08-2013, 22:15
Ok, dann erlaube ich mir mal in hakaze Minibsp den Abstand anzupassen (von "\;" auf "\:"):



% Formatierung von Zahlen (komplexen im Besonderen)
\sisetup{locale=DE, output-complex-root = \text{\ensuremath{i\:\cdot\:}}, complex-root-position = before-number}


Ist mir gerade aufgefallen: \num{...} wird im Minimalbsp von hakaze gar nicht angenommen....!?

Gruß, fünfhaus

hakaze
22-08-2013, 06:42
Ist mir gerade aufgefallen: \num{...} wird im Minimalbsp von hakaze gar nicht angenommen....!?
Was meinst du damit?

Der num-Befehl dient nur zur Formatierung der Zahlen und hat mit der Ausrichtung nichts zu tun. Da die S-Spalte nur Fließkommazahlen (mit Exponent) ausrichten kann und bei komplexen Zahlen leicht durcheinander kommt, nutze ich \num{ ... } zur richtigen Formatierung und Berechnung des Weißraums (du kannst ja mal die num-Befehle und Klammern rausnehmen und schauen, was passiert). Als Konsequenz verhält sich die S-Spalte wie eine einfache c-Spalte. Siehe auch die von mir oben verlinkte Diskussion (http://tex.stackexchange.com/q/83598/17198)!

fünfhaus
23-08-2013, 13:30
Also ich meine folgendes:



\documentclass[]{scrartcl}
\usepackage{amsmath,amssymb,amsthm}
\usepackage[decimalsymbol=comma]{siunitx}

\begin{document}
\begin{align*}
\num{3,456 + 0,345i}\\
3,456 + i \cdot 0,345
\end{align*}
\end{document}


Ich hätte gerne die Darstellung wie in der ersten Zeile mit \num{}...!?

Gruß, fünfhaus

hakaze
23-08-2013, 17:53
Schau dir mal die Einstellung im sisetup in meinem Post oben an! Siehe auch die Paket-Doku von siunitx (http://texdoc.net/pkg/siunitx)!