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
- New locale
persian-latin(thanks to @RamtinMoslemi). - Removed the patch for
\textsuperscriptwithlayout=counters, too, no longer necessary (it recently became no-op, anyway). - Fix: Variant was ignored with BCP 47 tags (the current code is somewhat tentative).
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 = फाल्गुन