View on GitHub


The multilingual framework to localize LaTeX, LuaLaTeX, XeLaTeX

What’s new in babel 3.90



The option casing introduced experimentally in version 3.88 should now work. Here is again the explanation.

There is a new option in \babelprovide to set the default casing rules in a few languages. They are (from interface3.pdf):

For example:


New in 3.90 is a couple of macros devised as a high level interface for declaring case mappings, based on the locale name as declared by or with babel. They are the equivalent of \DeclareUppercaseMapping and \DeclareLowercaseMapping (see usrguide.pdf):

(A variant for titlecasing will follow soon.)

The purpose is twofold:

For example:


There are still some rough edges when declaring a mapping with the x extension, or when two babel languages share the same BCP 47 tag. These issues will be sorted out in future releases.

Improvements in Arabic justification

Kashida are built by adding the Unicode ARABIC TATWEEL character. Now a limit can be set with a parameter as illustrated:

\directlua{  Babel.arabic.kashida_limit = 3 }

0 means ‘add nothing’ and -1 means ‘no limit’.

The width of the glyph can vary greatly with the font, and so does the exact value of this parameter (which is currently global).

Locale names