View on GitHub

Babel

The multilingual framework to localize LaTeX, LuaLaTeX, XeLaTeX

What’s new in babel 26.10

2026-08-08

After a hiatus over the past couple of months, development on babel has resumed.

tabular

Potentially breaking change.

For reasons discussed here, the tabular environment posed significant challenges when writing right-to-left (RTL) text, requiring custom patches that did not always yield satisfactory results. Following the principle of minimal intervention, full RTL tabular support, where column ordering flows from right to left, was previously opt-in via layout=tabular.

Thanks to recent updates in the LaTeX kernel designed to improve bidirectional (bidi) text handling, tabular now functions natively as expected. Consequently, the behavior previously enabled by layout=tabular is now the default setting (though minor fine-tuning may still be required).

If for some reason you need to keep left-to-right (LTR) column ordering within RTL text, a new key is available: layout=lrtabular.

Other changes

Support for lua-calendrica

Note this feature may require loading the date format and strings with the full ini file.

Since 2020 (v3.45), babel has provided \localedate as a tool for date formatting based on data generated by external utilities (see What’s new in babel 3.45). However, because these utilities were system-dependent, their usefulness was somewhat limited.

Now, the new lua-calendrica package by Udi Fogiel offers a system-independent method to retrieve calendar data for a wide range of systems (even if most are primarily of academic interest), and babel has added options in \localedate and \babelcalendar to use it with at least lunisolar calendars (year/month/day). Here is an example, which prints ‘30 Ⲉⲡⲓⲡ 1742’:

\documentclass{book}

\usepackage[coptic]{babel}
\babelfont{rm}{NewCM10-Regular}

% Let’s fix the date for this example
\year=2016 \month=8 \day=6

\begin{document}

% With lua-calendrica (only lualatex)
\localedate[calendar=coptic, convert=calendrica:coptic]\year\month\day

% With the babel built-in converter (lualatex and xelatex)
\localedate[calendar=coptic, convert]\year\month\day

\end{document}

As you can see, convert now accepts a value, consisting on the string calendrica: followed by the calendar name. Other names are hebrew, persian, chinese, hindu-solar, etc., i.e., the name (without cal_) with a hyphen instead of an underscore (the latter is also allowed). See the lua-calendrica documentation for further details.

With \babelcalendar, use the same pattern in the calendar name; e.g.:

\babelcalendar[2004-11-15]{calendrica:chinese}\myyear\mymonth\myday

Support for \today and (\babel)provide will be added shortly.

Strings for more calendars will be added in the future. Feel free to contribute new ones (and to ask for help). Here is a minimal setup for a ini taken from the Hindi locale (babel-hi.ini):

[date.indian]
date.long = [d] [MMMM] [y]
months.wide.1  = चैत्र
months.wide.2  = वैशाख
months.wide.3  = ज्येष्ठ
months.wide.4  = आषाढ़
months.wide.5  = श्रावण
months.wide.6  = भाद्रपद
months.wide.7  = अश्विन
months.wide.8  = कार्तिक
months.wide.9  = अग्रहायण
months.wide.10 = पौष
months.wide.11 = माघ
months.wide.12 = फाल्गुन