View on GitHub

Babel

The multilingual framework to localize LaTeX, LuaLaTeX, XeLaTeX

What’s new in babel 26.10

(dev)

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 fo some reason you need to keep left-to-right (LTR) column ordering within RTL text, a new key is available: layout=lrtabular.

Other changes

Appendix. Date with external tools

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). Here is an example with lualatex, which prints ‘30 Ⲉⲡⲓⲡ 1742’:

\documentclass{book}

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

\directlua{
local calendrica = require("calendrica")

local d = calendrica.new_date({year=2026, month=8, day=6}, calendrica.cal_gregorian)
local h = calendrica.as_date(d, calendrica.cal_coptic)

token.set_macro("thesavedyear", h.year)
token.set_macro("thesavedmonth", h.month)
token.set_macro("thesavedday", h.day)
}

\begin{document}

% With lua-calendrical 
\localedate[calendar=coptic]\thesavedyear\thesavedmonth\thesavedday

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

\end{document}

A better interface, closer to the built-in converters, will be provided in the near future.