View on GitHub

Babel

The multilingual framework for localizing LaTeX, LuaLaTeX, XeLaTeX

Hindi

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

\documentclass{article}

\usepackage[hindi, provide=*]{babel}
\babelfont{rm}[Renderer=Harfbuzz]{FreeSerif}

\begin{document}

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

\end{document}

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

Counters

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
\babelfont{rm}[Renderer=Harfbuzz]{FreeSerif}

There is an additional counter:

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

Punctuation

Only luatex. The transform punctuation.space 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:

\babelcharproperty{`।}{locale}{hindi}
\babelcharproperty{`॥}{locale}{hindi}

Transliterations

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