PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spalte S aus siunitx und der Euro



Dirk2718
20-06-2012, 16:50
Hallo Zusammen,

ich bin ein Fan vom siunitx Paket und dem darin deklarierten Spaltentyp S. Bei Spalten mit einem Euro-Zeichen kommt das Paket aber ins schleudern:

\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{ booktabs
, eurosym}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€},
}
\usepackage[normalem]{ulem}
\usepackage[ separate-uncertainty = true
%, table-number-alignment = center
, table-figures-integer = 3
, table-figures-decimal = 2
, locale = DE
]{siunitx}

\begin{document}

\begin{center}
\begin{tabular}{S}
\toprule
\footnotesize Liste\\
\midrule
\EUR{7,00}\\
\EUR{127,12}\\
\bottomrule
\end{tabular}
\end{center}

\begin{center}
\sisetup{table-number-alignment = center}
\begin{tabular}{S}
\toprule
\footnotesize Liste\\
\midrule
\EUR{7,00}\\
\EUR{127,12}\\
\bottomrule
\end{tabular}
\end{center}

\end{document}


Wie man sieht ragt das Euro Zeichen rechts raus. Wie kann man das Problem lösen?

Vielen Dank und Grüße
Dirk

hakaze
20-06-2012, 17:38
Die S-Spalte ist eigentlich gemacht um Zahlen auszurichten, da die SI-Konventionen (und die Übersichtlichkeit) vorsehen, dass die Einheit im Tabellenkopf steht (siehe Liste 2 im Beispiel).

Liste 1 enthält einen umdefinierten \EUR-Befehl, der wie \SI funktioniert. Der ist eigentlich nur notwendig, wenn du bei \EUR bleiben willst, damit auch die String-Länge richtig berechnet wird.

In Liste 3 wird einfach an die ausgerichteten Zahlen ein "Leerraum|Euro" angehängt. Hierbei müssen auch nur die Zahlen im Tabellenkörper eingegeben werden.

\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{ booktabs, eurosym}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€},
}
\usepackage[normalem]{ulem}
\usepackage[ separate-uncertainty = true
, table-number-alignment = center
, table-figures-integer = 3
, table-figures-decimal = 2
, locale = DE
]{siunitx}

% nur für Variante 1 notwendig
\DeclareSIUnit\EURO{\euro}
\renewcommand{\EUR}[1]{\SI{#1}{\EURO}}

\begin{document}

\begin{center}
\begin{tabular}{S[table-alignment = right]}
\toprule
\multicolumn{1}{c}{\footnotesize Liste 1}\\
\midrule
\EUR{7,00}\\
\EUR{127,12}\\
\EUR{7,01}\\
\EUR{27,12}\\
\EUR{107,00}\\
\EUR{2127,12}\\
\bottomrule
\end{tabular}
\hspace{\floatsep}
\begin{tabular}{S}
\toprule
\multicolumn{1}{c}{\footnotesize Liste 2 / \euro}\\
\midrule
7,00\\
127,12\\
7,01\\
27,12\\
107,00\\
2127,12\\
\bottomrule
\end{tabular}
\hspace{\floatsep}
\begin{tabular}{S<{\,\euro}}
\toprule
\multicolumn{1}{c}{\footnotesize Liste 3}\\
\midrule
7,00\\
127,12\\
7,01\\
27,12\\
107,00\\
2127,12\\
\bottomrule
\end{tabular}
\end{center}
\end{document}

cgnieder
20-06-2012, 22:46
Wie wär's, die Option table-space-text-post auszunutzen:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{booktabs,eurosym}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{siunitx}
\DeclareSIUnit\euro{\officialeuro}
\sisetup{
separate-uncertainty = true,
table-number-alignment = center,
table-figures-integer = 3,
table-figures-decimal = 2,
table-space-text-post = \,\si\euro,
locale = DE
}

\begin{document}

\begin{center}
\begin{tabular}{S}
\toprule
\footnotesize Liste \\
\midrule
\EUR{7,00} \\
\EUR{127,12} \\
\bottomrule
\end{tabular}
\end{center}

\end{document}

Grüße

Dirk2718
21-06-2012, 13:28
Danke für die Antworten! Ich probiere mal welche Lösung in meinem Umfeld am besten passt.

@hakaze
Eine Frage zur Liste 1. Warum funktioniert das nicht mit table-text-alignment = center? Der S Spaltentyp soll doch gerade die SI-Zahlen am Komma ausrichten, tut es aber hier nicht mehr.

Viele Grüße
Dirk

hakaze
21-06-2012, 14:44
@hakaze
Eine Frage zur Liste 1. Warum funktioniert das nicht mit table-text-alignment = center? Der S Spaltentyp soll doch gerade die SI-Zahlen am Komma ausrichten, tut es aber hier nicht mehr.Richtig, die Ausrichtung ist für Zahlen bestimmt. Wenn du Zahlen und Text (in einer Spalte) ausrichten willst, solltest entweder auf Variante 3 aus meinem Post oder die Lösung von cgnieder zurückgreifen.

Dirk2718
21-06-2012, 14:48
Ahso, für siunitx ist das dann ein Gemisch und keine eigentliche Zahl mehr. Ok.
Da in der Spalte auch ganz unten Text kommen kann, und die Zahlen nach dem Komma eh alle zwei Stellen haben, ist es kein Problem das Ganze rechtsbündig auszurichten.

Besten Dank!
Dirk