View on GitHub

Babel

The multilingual framework to localize LaTeX, LuaLaTeX, XeLaTeX

What’s new in babel 3.84

2022-12-26

There are some issues with the new \MakeUppercase and \MakeLowercase. For further details, see:

Localization of \MakeUppercase and \MakeLowercase broken

Encodings with pdftex and \babelprovide

With pdftex, when a language is loaded with \babelprovide, selectors now set the font encoding based on the list provided when loading fontenc. This mechanism has been devised primarily for words or short texts in other languages loaded on the fly (although with RTL scripts you still need bidi=default), and it’s, in some sense, the equivalent in this engine of the automatic setting of language and script in xetex and luatex.

Not all scripts have an associated encoding, so this feature works only with Latin, Cyrillic, Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian, provided a suitable font is found.

The rules for the assigned encoding are the following:

You can customize its behaviour in several ways:

A simple example is the following:

\documentclass{article}

\usepackage[T2A, LGR, T5, T1]{fontenc}
\usepackage[english]{babel}

\begin{document}

English \foreignlanguage{greek}{Ελληνικά} English.

\selectlanguage{bulgarian}

Български \foreignlanguage{vietnamese}{Tiếng Việt} български.

\end{document}

Encodings

New option layout=counters*

The option layout=counters redefines some counters for they to be printed in the correct order in RTL text. Sadly, the added macros are written to the idx files, which break makeindex. The value counters* (with a star) attempts to remove the conflicting macros in the following way:

Fixes