View on GitHub


The multilingual framework for localizing LaTeX, LuaLaTeX, XeLaTeX


For the Hindi language —with the Devanagari script— the Harfbuzz renderer in luatex is recommended. Here is a minimal example:


\usepackage[hindi, provide=*]{babel}


हिन्दी शब्द का सम्बन्ध संस्कृत शब्द 'सिन्धु' से माना जाता है।


It works with xetex, too, with a similar output, but with this engine there is no need the set the renderer (it’s always Harfbuzz).


Although Hindi numerals are best entered directly in its original form, you may still need some conversion because LaTeX uses internally the Arabic ones. With luatex there are two ways to map Arabic to Hindi numerals, passed as option to \babelprovide:

To perform this conversión, use the following preamble:

\usepackage[hindi, provide=*]{babel}
\babelprovide[mapdigits]{hindi}  % or alternatively maparabic

There is an additional counter:

See the explanation in the babel manual about \localecounter and localenumeral.


Only luatex. The transform inserts a space before the following four characters: !?:;.

The transform danda.nobreak prevents a line break before a danda or double danda if there is a space.

In Unicode, danda and double danda are shared by several scripts, and babel doesn’t assign them by default to any of them. If you are using onchar to select the font you may want to assign them with:



Only luatex. There is a transform ( for the Harvard-Kyoto system.