View on GitHub


The multilingual framework for localizing LaTeX, LuaLaTeX, XeLaTeX

What’s new in babel 3.45


Note. There is a typo in the note on p. 19 of the manual. It should read: “… as a rule of thumb prefer the default renderer, and resort to Harfbuzz only if the former does not work for you.”


The command \localedate admits an optional argument with two keys: calendar and variant. With them you have access to non-Gregorian date formats defined in ini files. The three arguments are those in the corresponding lunisolar calendar. They are not the Gregorian data to be converted (which means 13 is a valid month number with calendar=hebrew).

Note currently babel doesn’t convert dates between calendars, because a general tool for this purpose could be as large as babel itself, and very likely it’s best done by a separate package (or even an external program, see below). [Update. Currently can convert several calendars, although only a few decades. See the manual.]

ini files with strings defined for some non-Gregorian calendar are: ar, ar-*, he, fa, hi. [Update. Currently there a few more.]

Even with a certain calendar there may be variants. In Kurmanji the default variant prints something like ‘‘30. Çileya Pêşîn 2019’’, but with variant=izafa it prints ‘‘31’ê Çileya Pêşînê 2019’’.


The commands \localenumeral and \localecounter admit the type digits for the native digits (ie, as defined with numbers/digits.native).

Changes in ini files


Thanks to Sina Ahmadi, from Kurdish XeLaTeX Users Group project.


New version contributed by Niranja Tambe.

Fixes in Hindi, Macedonian and Ancient Greek

A couple of wrong settings have been fixed: prehyphenchar in Hindi was set to 0 (now the hyphen is not removed), and the OpenType script tag in Ancient Greek is PGR instead of ELL. There are also a few changes in Macedonian (by Stojan Trajanovski).


Appendix. Using an external program for dates

[Update. Note hijri is now supported.]

An example with Windows and Powershell. Create a file named hijridate.ps1:

$today = [datetime]::Now

$calendar = New-Object System.Globalization.HijriCalendar

echo "\def\HijriDay{$($calendar.GetDayOfMonth($today))}"
echo "\def\HijriMonth{$($calendar.GetMonth($today))}"
echo "\def\HijriYear{$($calendar.GetYear($today))}"


PowerShell.exe -WindowStyle hidden ./hijridate.ps1 >today.tex 

and a file is generated with something like:


Please, fell free to contribute a Unix version (as an issue or, better, as a pull request), or even to create your own package 🙂.