Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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}

Der Preis beträgt $12.345,67$ Euro.

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

share|improve this question
add comment

3 Answers 3

up vote 19 down vote accepted

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.

share|improve this answer
1  
The implementation of icomma is really small and worth a look. –  Christian Lindig May 20 '11 at 12:12
3  
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
add comment

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.

share|improve this answer
add comment
\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

share|improve this answer
5  
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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.