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