# German language: use of comma in numbers

In German the comma rather than the period is used as a decimal separator and the dot is used as a thousands separator: 12.345,67. The comma creates some unwanted space when used as in $12.345,67$. Is there a light-weight package or some macro to support this? (I'm not looking for automatic formatting like insertion of a thousands separator.)

\documentclass{minimal}
\usepackage[utf8]{inputenc}

\begin{document}
Der Preis beträgt $12.345,67$ Euro.
\end{document}


An easy fix is typing $12.345,{}67$ but I think this is too cumbersome.

-
This goes for Danish as well (which I was looking for). –  Thomas Arildsen Dec 15 '14 at 13:21

Use the icomma package.

The effect can also be achieved with the siunitx package and its output-decimal-marker setting, although you'll have to pass numbers to the \num macro.

-
The implementation of icomma is really small and worth a look. –  Christian Lindig May 20 '11 at 12:12
with siunitx you can even omit the thousand-seperator and use the group-separator option to get it automatically. –  Tobi May 20 '11 at 13:40
Just for future reference, icomma doesn't seem to work with xelatex. –  sfranky Nov 9 '14 at 11:22

There are various situations one can find in.

(1) There are just a few decimal numbers in the document: use $123{,}45$

(2) There are several numbers and a few formulas involving the comma: use Herbert's trick and define also

\DeclareMathSymbol{\comma}{\mathpunct}{letters}{"3B}


using \comma when it must be a punctuation symbol in formulas

(3) Several numbers and several formulas: use icomma; one must remember to put a space when needed in cases such as the interval~$[0, 1]$. Actually icomma works as outlined in case (2), but using the , as a "math active" character that acts depending on the next token.

(4) Many numbers: use siunitx and \num, which ensures uniform treatment of the numbers. For example, one can change the format from 123.456,78 to a "more correct" $123\,456{,}78$ by changing one line in the document, i.e., in the argument of \sisetup.

-
\documentclass{minimal}
\usepackage[utf8]{inputenc}
\DeclareMathSymbol{,}{\mathord}{letters}{"3B}

\begin{document}
Der Preis beträgt $12.345,67$ Euro.
\end{document}


you can also redefine the dot to a \mathpunct, if you like

-
this is good assuming that the OP doesn't need the comma in math formulas such as $(0,1)$. –  egreg May 20 '11 at 11:32