TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.)


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

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
This goes for Danish as well (which I was looking for). – Thomas Arildsen Dec 15 '14 at 13:21
up vote 31 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
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


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

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

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

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

Here's a LuaLaTeX-based solution. It wraps all commas that are immediately preceded and followed by numeric digits in pairs of curly braces. The method works in both text mode and math mode.

enter image description here

function wrap_comma ( buff )
  buff = string.gsub ( buff , "(%d),(%d)", "%1{,}%2" )
  return buff
luatexbase.add_to_callback ("process_input_buffer", wrap_comma, "wrap_comma")
Der Preis beträgt $12.345,67$ Euro. Das Intervall $[0, 1]$. 
share|improve this answer

Your Answer


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.