summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-04-01 21:10:44 +0000
committerKarl Berry <karl@freefriends.org>2019-04-01 21:10:44 +0000
commitde9dc4bb86a87f4d72b59034b56593313b2e8c8a (patch)
treeafcde74e28915439fef0d65c8a1eefeb9dc9df7a /Master/texmf-dist/tex/generic/babel
parent98766f71d95e3aa7dcf598359ffb0f9902c73797 (diff)
babel (1apr19)
git-svn-id: svn://tug.org/texlive/trunk@50699 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel')
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua6
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua25
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def81
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty2
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg5
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini30
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini30
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini30
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini30
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini30
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini33
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def29
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel/switch.def54
-rw-r--r--Master/texmf-dist/tex/generic/babel/xebabel.def25
16 files changed, 356 insertions, 88 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
index 6961dd84221..008d27e0658 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
@@ -74,6 +74,7 @@ function Babel.bidi(head, ispar)
local new_dir = false
local first_dir = false
+ local inmath = false
local last_lr
@@ -104,6 +105,7 @@ function Babel.bidi(head, ispar)
end
end
dir = dir or 'l'
+ if inmath then dir = ('TRT' == tex.mathdir) and 'r' or 'l' end
if new_dir then
attr_dir = 0
for at in node.traverse(item.attr) do
@@ -131,9 +133,11 @@ function Babel.bidi(head, ispar)
if dir == 'et' or dir == 'es' then dir = 'on' end -- W6
strong_lr = 'r' -- W3
end
- elseif item.id == node.id'dir' then
+ elseif item.id == node.id'dir' and not inmath then
new_dir = true
dir = nil
+ elseif item.id == node.id'math' then
+ inmath = (item.subtype == 0)
else
dir = nil -- Not a char
end
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
index 8fe47ecb80f..be342c12fe5 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
@@ -91,8 +91,11 @@ local function insert_numeric(head, state)
return head, new_state
end
--- \hbox with an explicit dir can lead to wrong results
--- <R \hbox dir TLT{<R>}> and <L \hbox dir TRT{<L>}>
+-- TODO - \hbox with an explicit dir can lead to wrong results
+-- <R \hbox dir TLT{<R>}> and <L \hbox dir TRT{<L>}>. A small attempt
+-- was s made to improve the situation, but the problem is the 3-dir
+-- model in babel/Unicode and the 2-dir model in LuaTeX don't fit
+-- well.
function Babel.bidi(head, ispar, hdir)
local d -- d is used mainly for computations in a loop
@@ -101,6 +104,7 @@ function Babel.bidi(head, ispar, hdir)
local nodes = {}
local outer_first = nil
+ local inmath = false
local glue_d = nil
local glue_i = nil
@@ -119,9 +123,14 @@ function Babel.bidi(head, ispar, hdir)
(temp == 2 and 'al')
elseif ispar then -- Or error? Shouldn't happen
save_outer = ('TRT' == tex.pardir) and 'r' or 'l'
- else
+ else -- Or error? Shouldn't happen
save_outer = ('TRT' == hdir) and 'r' or 'l'
end
+ -- when the callback is called, we are just _after_ the box,
+ -- and the textdir is that of the surrounding text
+ -- if not ispar and hdir ~= tex.textdir then
+ -- save_outer = ('TRT' == hdir) and 'r' or 'l'
+ -- end
local outer = save_outer
local last = outer
-- 'al' is only taken into account in the first, current loop
@@ -160,6 +169,7 @@ function Babel.bidi(head, ispar, hdir)
end
end
d = d or 'l'
+ if inmath then d = ('TRT' == tex.mathdir) and 'r' or 'l' end
d_font = d_font or d
d_font = (d_font == 'l' and 0) or
@@ -208,6 +218,9 @@ function Babel.bidi(head, ispar, hdir)
glue_i = item
d = nil
+ elseif item.id == node.id'math' then
+ inmath = (item.subtype == 0)
+
else
d = nil
end
@@ -371,7 +384,11 @@ function Babel.bidi(head, ispar, hdir)
end
else
if d == 'an' or d == 'l' then
- state.sim = state.sim or item
+ if nodes[q][3] then -- nil except after an explicit dir
+ state.sim = item -- so we move sim 'inside' the group
+ else
+ state.sim = state.sim or item
+ end
state.eim = item
elseif d == 'r' and state.sim then
head, state = insert_implicit(head, state, outer)
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index 5d2db7261f2..accbb739ae7 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -41,7 +41,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2018/11/13 3.27 Babel common definitions]
+\ProvidesFile{babel.def}[2019/04/01 3.28 Babel common definitions]
\ifx\AtBeginDocument\@undefined
\input plain.def\relax
\fi
@@ -1334,9 +1334,8 @@
{\bbl@ifblank{#1}%
{\bbl@error
{If you want to modify `#2' you must tell how in\\%
- the optional argument. Currently there are three\\%
- options: captions=lang-tag, hyphenrules=lang-list\\%
- import=lang-tag}%
+ the optional argument. See the manual for the\\%
+ available options.}%
{Use this macro as documented}}%
{\bbl@provide@renew{#2}}}%
% Post tasks
@@ -1599,9 +1598,9 @@
\@nameuse{bbl@secpost@\bbl@section}% ends previous section
\def\bbl@section{#1}%
\@nameuse{bbl@secpre@\bbl@section}% starts current section
- \bbl@ifunset{bbl@secline@#1}%
+ \bbl@ifunset{bbl@inikv@#1}%
{\let\bbl@inireader\bbl@iniskip}%
- {\bbl@exp{\let\\\bbl@inireader\<bbl@secline@#1>}}}
+ {\bbl@exp{\let\\\bbl@inireader\<bbl@inikv@#1>}}}
\def\bbl@inikv#1=#2\@@{% key=value
\bbl@trim@def\bbl@tempa{#1}%
\bbl@trim\toks@{#2}%
@@ -1614,7 +1613,7 @@
\else
\bbl@exp{\global\let\<bbl@#1@\languagename>\<bbl@@kv@#2>}%
\fi}}
-\let\bbl@secline@identification\bbl@inikv
+\let\bbl@inikv@identification\bbl@inikv
\def\bbl@secpost@identification{%
\bbl@exportkey{lname}{identification.name.english}{}%
\bbl@exportkey{lbcp}{identification.tag.bcp47}{}%
@@ -1622,9 +1621,9 @@
\bbl@exportkey{sname}{identification.script.name}{}%
\bbl@exportkey{sbcp}{identification.script.tag.bcp47}{}%
\bbl@exportkey{sotf}{identification.script.tag.opentype}{DFLT}}
-\let\bbl@secline@typography\bbl@inikv
-\let\bbl@secline@characters\bbl@inikv
-\let\bbl@secline@numbers\bbl@inikv
+\let\bbl@inikv@typography\bbl@inikv
+\let\bbl@inikv@characters\bbl@inikv
+\let\bbl@inikv@numbers\bbl@inikv
\def\bbl@after@ini{%
\bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
\bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
@@ -1651,17 +1650,11 @@
\bbl@toglobal\bbl@savetoday
\bbl@toglobal\bbl@savedate}
\ifcase\bbl@engine
- \bbl@csarg\def{secline@captions.licr}#1=#2\@@{%
+ \bbl@csarg\def{inikv@captions.licr}#1=#2\@@{%
\bbl@ini@captions@aux{#1}{#2}}
- \bbl@csarg\def{secline@date.gregorian}#1=#2\@@{% for defaults
- \bbl@ini@dategreg#1...\relax{#2}}
- \bbl@csarg\def{secline@date.gregorian.licr}#1=#2\@@{% override
- \bbl@ini@dategreg#1...\relax{#2}}
\else
- \def\bbl@secline@captions#1=#2\@@{%
+ \def\bbl@inikv@captions#1=#2\@@{%
\bbl@ini@captions@aux{#1}{#2}}
- \bbl@csarg\def{secline@date.gregorian}#1=#2\@@{%
- \bbl@ini@dategreg#1...\relax{#2}}
\fi
\def\bbl@ini@captions@aux#1#2{%
\bbl@trim@def\bbl@tempa{#1}%
@@ -1672,17 +1665,31 @@
\bbl@exp{%
\\\bbl@add\\\bbl@savestrings{%
\\\SetString\<\bbl@tempa name>{\the\toks@}}}}
-\bbl@csarg\def{secpre@date.gregorian.licr}{%
- \ifcase\bbl@engine\let\bbl@savedate\@empty\fi}
-\def\bbl@ini@dategreg#1.#2.#3.#4\relax#5{% TODO - ignore with 'captions'
+\bbl@csarg\def{inikv@date.gregorian}#1=#2\@@{% for defaults
+ \bbl@inidate#1...\relax{#2}{}}
+\bbl@csarg\def{inikv@date.islamic}#1=#2\@@{%
+ \bbl@inidate#1...\relax{#2}{islamic}}
+\bbl@csarg\def{inikv@date.hebrew}#1=#2\@@{%
+ \bbl@inidate#1...\relax{#2}{hebrew}}
+\bbl@csarg\def{inikv@date.persian}#1=#2\@@{%
+ \bbl@inidate#1...\relax{#2}{persian}}
+\bbl@csarg\def{inikv@date.indian}#1=#2\@@{%
+ \bbl@inidate#1...\relax{#2}{indian}}
+\ifcase\bbl@engine
+ \bbl@csarg\def{inikv@date.gregorian.licr}#1=#2\@@{% override
+ \bbl@inidate#1...\relax{#2}{}}
+ \bbl@csarg\def{secpre@date.gregorian.licr}{% discard uni
+ \ifcase\bbl@engine\let\bbl@savedate\@empty\fi}
+\fi
+\def\bbl@inidate#1.#2.#3.#4\relax#5#6{% TODO - ignore with 'captions'
\bbl@trim@def\bbl@tempa{#1.#2}%
- \bbl@ifsamestring{\bbl@tempa}{months.wide}%
+ \bbl@ifsamestring{\bbl@tempa}{months.wide}% to savedate
{\bbl@trim@def\bbl@tempa{#3}%
\bbl@trim\toks@{#5}%
\bbl@exp{%
\\\bbl@add\\\bbl@savedate{%
- \\\SetString\<month\romannumeral\bbl@tempa name>{\the\toks@}}}}%
- {\bbl@ifsamestring{\bbl@tempa}{date.long}%
+ \\\SetString\<month\romannumeral\bbl@tempa#6name>{\the\toks@}}}}%
+ {\bbl@ifsamestring{\bbl@tempa}{date.long}% defined now
{\bbl@trim@def\bbl@toreplace{#5}%
\bbl@TG@@date
\global\bbl@csarg\let{date@\languagename}\bbl@toreplace
@@ -1696,6 +1703,7 @@
\\\SetString\\\today{%
\<\languagename date>{\\\the\year}{\\\the\month}{\\\the\day}}}}}}%
{}}
+\let\bbl@calendar\@empty
\newcommand\BabelDateSpace{\nobreakspace}
\newcommand\BabelDateDot{.\@}
\newcommand\BabelDated[1]{{\number#1}}
@@ -1703,7 +1711,7 @@
\newcommand\BabelDateM[1]{{\number#1}}
\newcommand\BabelDateMM[1]{{\ifnum#1<10 0\fi\number#1}}
\newcommand\BabelDateMMMM[1]{{%
- \csname month\romannumeral#1name\endcsname}}%
+ \csname month\romannumeral#1\bbl@calendar name\endcsname}}%
\newcommand\BabelDatey[1]{{\number#1}}%
\newcommand\BabelDateyy[1]{{%
\ifnum#1<10 0\number#1 %
@@ -2035,6 +2043,7 @@
\ifodd\bbl@engine % luatex=1
\AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir}
\DisableBabelHook{babel-bidi}
+ \chardef\bbl@thetextdir\z@
\chardef\bbl@thepardir\z@
\def\bbl@getluadir#1{%
\directlua{
@@ -2055,12 +2064,24 @@
\fi}
\def\bbl@textdir#1{%
\bbl@setluadir{text}\textdir{#1}% TODO - ?\linedir
+ \chardef\bbl@thetextdir#1\relax
\setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}}
- \def\bbl@pardir#1{\bbl@setluadir{par}\pardir{#1}%
+ \def\bbl@pardir#1{%
+ \bbl@setluadir{par}\pardir{#1}%
\chardef\bbl@thepardir#1\relax}
\def\bbl@bodydir{\bbl@setluadir{body}\bodydir}
\def\bbl@pagedir{\bbl@setluadir{page}\pagedir}
\def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%%
+ % Sadly, we have to deal with boxes in math with basic:
+ \def\bbl@mathboxdir{%
+ \ifcase\bbl@thetextdir\relax
+ \everyhbox{\bgroup\aftergroup\egroup\textdir TLT\relax}%
+ \else
+ \everyhbox{\bgroup\aftergroup\egroup\textdir TRT\relax}%
+ \fi}
+ % TODO - the same trick as bbl@severypar
+ \everymath{\bbl@mathboxdir}
+ \everydisplay{\bbl@mathboxdir}
\else % pdftex=0, xetex=2
\AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir}
\DisableBabelHook{babel-bidi}
@@ -2133,7 +2154,13 @@
\def\bbl@pardir#1{\ifcase#1\relax\setLR\else\setRL\fi}}
{}%
\fi
- \DeclareRobustCommand\babelsublr[1]{\leavevmode{\bbl@textdir\z@#1}}
+\DeclareRobustCommand\babelsublr[1]{\leavevmode{\bbl@textdir\z@#1}}
+\AtBeginDocument{%
+ \ifx\pdfstringdefDisableCommands\@undefined\else
+ \ifx\pdfstringdefDisableCommands\relax\else
+ \pdfstringdefDisableCommands{\let\babelsublr\@firstofone}%
+ \fi
+ \fi}
\bbl@trace{Local Language Configuration}
\ifx\loadlocalcfg\@undefined
\@ifpackagewith{babel}{noconfigs}%
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty
index c0b470c1ed2..3f616f84bef 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.sty
+++ b/Master/texmf-dist/tex/generic/babel/babel.sty
@@ -33,7 +33,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[2018/11/13 3.27 The Babel package]
+\ProvidesPackage{babel}[2019/04/01 3.28 The Babel package]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
\let\bbl@debug\@firstofone}
diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
index f537754e5de..91fa39860e6 100644
--- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg
+++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
@@ -37,7 +37,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2018/11/13 3.27 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2019/04/01 3.28 Babel hyphens]
\xdef\bbl@format{\jobname}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
@@ -93,10 +93,12 @@
\expandafter\language\csname l@#1\endcsname
\edef\languagename{#1}%
\bbl@hook@everylanguage{#1}%
+ % > luatex
\bbl@get@enc#1::\@@@
\begingroup
\lefthyphenmin\m@ne
\bbl@hook@loadpatterns{#2}%
+ % > luatex
\ifnum\lefthyphenmin=\m@ne
\else
\expandafter\xdef\csname #1hyphenmins\endcsname{%
@@ -106,6 +108,7 @@
\def\bbl@tempa{#3}%
\ifx\bbl@tempa\@empty\else
\bbl@hook@loadexceptions{#3}%
+ % > luatex
\fi
\let\bbl@elt\relax
\edef\bbl@languages{%
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini
index 93a70ff73d7..60bad20aa01 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.1
-date = 2018-02-05
+version = 1.2
+date = 2019-01-31
name.local = العربية
name.english = Arabic
name.babel = arabic-dz
@@ -107,6 +107,32 @@ dayPeriods.narrow.pm = م
dayPeriods.wide.am = ص
dayPeriods.wide.pm = م
+[date.islamic]
+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 = ذو الحجة
+months.narrow.1 = ١
+months.narrow.2 = ٢
+months.narrow.3 = ٣
+months.narrow.4 = ٤
+months.narrow.5 = ٥
+months.narrow.6 = ٦
+months.narrow.7 = ٧
+months.narrow.8 = ٨
+months.narrow.9 = ٩
+months.narrow.10 = ١٠
+months.narrow.11 = ١١
+months.narrow.12 = ١٢
+
[time.gregorian]
time.medium = [h]:[mm]:[ss] [a]
time.short = [h]:[mm] [a]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini
index 86ca9cef1ee..0225a04e7a0 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.1
-date = 2018-02-05
+version = 1.2
+date = 2019-01-31
name.local = العربية
name.english = Arabic
name.babel = arabic-ma
@@ -107,6 +107,32 @@ dayPeriods.narrow.pm = م
dayPeriods.wide.am = ص
dayPeriods.wide.pm = م
+[date.islamic]
+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 = ذو الحجة
+months.narrow.1 = ١
+months.narrow.2 = ٢
+months.narrow.3 = ٣
+months.narrow.4 = ٤
+months.narrow.5 = ٥
+months.narrow.6 = ٦
+months.narrow.7 = ٧
+months.narrow.8 = ٨
+months.narrow.9 = ٩
+months.narrow.10 = ١٠
+months.narrow.11 = ١١
+months.narrow.12 = ١٢
+
[time.gregorian]
time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini
index 841435340f6..42cc757930b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.1
-date = 2018-02-05
+version = 1.2
+date = 2019-01-31
name.local = العربية
name.english = Arabic
name.babel = arabic-sy
@@ -105,6 +105,32 @@ dayPeriods.narrow.pm = م
dayPeriods.wide.am = ص
dayPeriods.wide.pm = م
+[date.islamic]
+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 = ذو الحجة
+months.narrow.1 = ١
+months.narrow.2 = ٢
+months.narrow.3 = ٣
+months.narrow.4 = ٤
+months.narrow.5 = ٥
+months.narrow.6 = ٦
+months.narrow.7 = ٧
+months.narrow.8 = ٨
+months.narrow.9 = ٩
+months.narrow.10 = ١٠
+months.narrow.11 = ١١
+months.narrow.12 = ١٢
+
[time.gregorian]
time.medium = [h]:[mm]:[ss] [a]
time.short = [h]:[mm] [a]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini
index d22aed41034..9e9d18799cf 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.1
-date = 2018-02-05
+version = 1.2
+date = 2019-01-31
name.local = العربية
name.english = Arabic
name.babel = arabic
@@ -103,6 +103,32 @@ dayPeriods.narrow.pm = م
dayPeriods.wide.am = ص
dayPeriods.wide.pm = م
+[date.islamic]
+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 = ذو الحجة
+months.narrow.1 = ١
+months.narrow.2 = ٢
+months.narrow.3 = ٣
+months.narrow.4 = ٤
+months.narrow.5 = ٥
+months.narrow.6 = ٦
+months.narrow.7 = ٧
+months.narrow.8 = ٨
+months.narrow.9 = ٩
+months.narrow.10 = ١٠
+months.narrow.11 = ١١
+months.narrow.12 = ١٢
+
[time.gregorian]
time.medium = [h]:[mm]:[ss] [a]
time.short = [h]:[mm] [a]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini b/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini
index 2a185b0904e..f20094592ed 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.1
-date = 2018-04-11
+version = 1.2
+date = 2019-01-31
name.local = فارسی
name.english = Persian
name.babel = persian
@@ -103,6 +103,32 @@ dayPeriods.narrow.pm = ب
dayPeriods.wide.am = قبل‌ازظهر
dayPeriods.wide.pm = بعدازظهر
+[date.persian]
+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 = اسفند
+months.narrow.1 = ف
+months.narrow.2 = ا
+months.narrow.3 = خ
+months.narrow.4 = ت
+months.narrow.5 = م
+months.narrow.6 = ش
+months.narrow.7 = م
+months.narrow.8 = آ
+months.narrow.9 = آ
+months.narrow.10 = د
+months.narrow.11 = ب
+months.narrow.12 = ا
+
[time.gregorian]
time.medium = [H]:[mm]:[ss]
time.short = [H]:[mm]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini b/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini
index 0367a8fc258..2adc0802040 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2017-09-01
+version = 1.1
+date = 2019-01-31
name.local = עברית
name.english = Hebrew
name.babel = hebrew
@@ -140,6 +140,34 @@ months.wide.10 = \hebalef\hebvav\hebqof\hebtet\hebvav\hebbet\hebresh
months.wide.11 = \hebnun\hebvav\hebbet\hebmem\hebbet\hebresh
months.wide.12 = \hebdalet\hebtsadi\hebmem\hebbet\hebresh
+[date.hebrew]
+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 = אב
+months.wide.13 = אלול
+months.narrow.1 = תש׳
+months.narrow.2 = חש׳
+months.narrow.3 = כס׳
+months.narrow.4 = טב׳
+months.narrow.5 = שב׳
+months.narrow.6 = א״א
+months.narrow.7 = אד׳
+months.narrow.8 = ני׳
+months.narrow.9 = אי׳
+months.narrow.10 = סי׳
+months.narrow.11 = תמ׳
+months.narrow.12 = אב
+months.narrow.13 = אל׳
+
[time.gregorian]
time.medium = [H]:[mm]:[ss]
time.short = [H]:[mm]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini b/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini
index 5d31399348f..735e5392ba6 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini
@@ -12,8 +12,8 @@
[identification]
charset = utf8
-version = 0.91
-date = 2017-04-10
+version = 1.0
+date = 2019-01-31
name.local = हिन्दी
name.english = Hindi
name.babel = hindi
@@ -127,6 +127,32 @@ dayPeriods.narrow.pm = अ
dayPeriods.wide.am = पूर्वाह्न
dayPeriods.wide.pm = अपराह्न
+[date.indian]
+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 = फाल्गुन
+months.narrow.1 = 1
+months.narrow.2 = 2
+months.narrow.3 = 3
+months.narrow.4 = 4
+months.narrow.5 = 5
+months.narrow.6 = 6
+months.narrow.7 = 7
+months.narrow.8 = 8
+months.narrow.9 = 9
+months.narrow.10 = 10
+months.narrow.11 = 11
+months.narrow.12 = 12
+
[time.gregorian]
time.medium = [h]:[mm]:[ss] [a]
time.short = [h]:[mm] [a]
@@ -149,7 +175,7 @@ delimiters.quotes = “”‘’
auxiliary = [\u200C\u200D]
exemplarCharacters = [\u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी \u0941 \u0942 \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D]
index = [अ आ इ ई उ ऊ ऋ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह]
-punctuation = [। ॥ \\- , ; \\: ! ? . ‘ ’ “ ” ( ) \\[ \\] \\{ \\} ॰]
+punctuation = [\\- , ; \\: ! ? . ‘ ’ “ ” ( ) \\[ \\] \\{ \\} ॰]
[numbers]
defaultNumberingSystem = latn
@@ -171,4 +197,3 @@ superscriptingExponent = ×
alph =
Alph =
ordinals =
-
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index 8d7467cf185..0f08afd5b2a 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -475,16 +475,18 @@
\def\bbl@font@set#1#2#3{% eg \bbl@rmdflt@lang \rmdefault \rmfamily
\bbl@xin@{<>}{#1}%
\ifin@
- \bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1}%
+ \bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1\\#3}%
\fi
\bbl@exp{%
- \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang}
+ \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang}
\\\bbl@ifsamestring{#2}{\f@family}{\\#3\let\\\bbl@tempa\relax}{}}}
-\def\bbl@fontspec@set#1#2#3{% eg \bbl@rmdflt@lang fnt-opt fnt-nme
+\def\bbl@fontspec@set#1#2#3#4{% eg \bbl@rmdflt@lang fnt-opt fnt-nme \xxfamily
\let\bbl@tempe\bbl@mapselect
\let\bbl@mapselect\relax
- \bbl@exp{% TODO - should be global, but even local does its job
- % I'm still not sure -- must investigate
+ \let\bbl@temp@fam#4% eg, '\rmfamily', to be restored below
+ \let#4\relax % So that can be used with \newfontfamily
+ \bbl@exp{%
+ \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% eg, '\rmfamily '
\<keys_if_exist:nnF>{fontspec-opentype}%
{Script/\bbl@cs{sname@\languagename}}%
{\\\newfontscript{\bbl@cs{sname@\languagename}}%
@@ -493,10 +495,15 @@
{Language/\bbl@cs{lname@\languagename}}%
{\\\newfontlanguage{\bbl@cs{lname@\languagename}}%
{\bbl@cs{lotf@\languagename}}}%
- \<fontspec_set_family:Nnn>\\#1%
- {\bbl@cs{lsys@\languagename},#2}}{#3}% ie \bbl@exp{..}{#3}
- \let\bbl@mapselect\bbl@tempe
- \bbl@toglobal#1}%
+ \\\newfontfamily\\#4%
+ [\bbl@cs{lsys@\languagename},#2]}{#3}% ie \bbl@exp{..}{#3}
+ \begingroup
+ #4%
+ \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)}
+ \endgroup
+ \let#4\bbl@temp@fam
+ \bbl@exp{\let\<\bbl@stripslash#4\space>}\bbl@temp@pfam
+ \let\bbl@mapselect\bbl@tempe}%
\def\bbl@font@rst#1#2#3#4{%
\bbl@csarg\def{famrst@#4}{\bbl@font@set{#1}#2#3}}
\def\bbl@font@fams{rm,sf,tt}
@@ -549,9 +556,9 @@
\fi
\ifx\bbl@opt@layout\@nnil\endinput\fi % if no layout
\ifx\bbl@beforeforeign\leavevmode % A poor test for bidi=
- \def\bbl@nextfake#1{%
- \mathdir\bodydir % non-local, use always inside a group!
+ \def\bbl@nextfake#1{% non-local changes - always inside a group!
\bbl@exp{%
+ \mathdir\the\bodydir
#1% Once entered in math, set boxes to restore values
\everyvbox{%
\the\everyvbox
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index 7ef76efb096..7a2b9fdc525 100644
--- a/Master/texmf-dist/tex/generic/babel/nil.ldf
+++ b/Master/texmf-dist/tex/generic/babel/nil.ldf
@@ -32,7 +32,7 @@
%% extension |.ins|) which are part of the distribution.
%%
-\ProvidesLanguage{nil}[2018/11/13 3.27 Nil language]
+\ProvidesLanguage{nil}[2019/04/01 3.28 Nil language]
\LdfInit{nil}{datenil}
\ifx\l@nohyphenation\@undefined
\@nopatterns{nil}
diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def
index 486e4da6b14..6495fb6ab65 100644
--- a/Master/texmf-dist/tex/generic/babel/switch.def
+++ b/Master/texmf-dist/tex/generic/babel/switch.def
@@ -37,7 +37,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{switch.def}[2018/11/13 3.27 Babel switching mechanism]
+\ProvidesFile{switch.def}[2019/04/01 3.28 Babel switching mechanism]
\ifx\AtBeginDocument\@undefined
\input plain.def\relax
\fi
@@ -58,8 +58,8 @@
\countdef\last@language=19
\def\addlanguage{\alloc@9\language\chardef\@cclvi}
\fi
-\def\bbl@version{3.27}
-\def\bbl@date{2018/11/13}
+\def\bbl@version{3.28}
+\def\bbl@date{2019/04/01}
\def\adddialect#1#2{%
\global\chardef#1#2\relax
\bbl@usehooks{adddialect}{{#1}{#2}}%
@@ -115,19 +115,22 @@
\aftergroup\bbl@pop@language
\bbl@set@language{#1}}
\def\BabelContentsFiles{toc,lof,lot}
-\def\bbl@set@language#1{%
+\def\bbl@set@language#1{% from selectlanguage, pop@
\edef\languagename{%
\ifnum\escapechar=\expandafter`\string#1\@empty
\else\string#1\@empty\fi}%
\select@language{\languagename}%
+ % write to auxs
\expandafter\ifx\csname date\languagename\endcsname\relax\else
\if@filesw
\protected@write\@auxout{}{\string\babel@aux{\languagename}{}}%
\bbl@usehooks{write}{}%
\fi
\fi}
-\def\select@language#1{%
+\def\select@language#1{% from set@, babel@aux
+ % set hymap
\ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi
+ % set name
\edef\languagename{#1}%
\bbl@fixname\languagename
\bbl@iflanguage\languagename{%
@@ -140,6 +143,7 @@
some cases, you may need to remove the aux file}%
{You may proceed, but expect wrong results}%
\else
+ % set type
\let\bbl@select@type\z@
\expandafter\bbl@switch\expandafter{\languagename}%
\fi}}
@@ -162,7 +166,8 @@
\select@language{#1}}
\let\select@language@x\select@language
\newif\ifbbl@usedategroup
-\def\bbl@switch#1{%
+\def\bbl@switch#1{% from select@, foreign@
+ % restore
\originalTeX
\expandafter\def\expandafter\originalTeX\expandafter{%
\csname noextras#1\endcsname
@@ -170,6 +175,7 @@
\babel@beginsave}%
\bbl@usehooks{afterreset}{}%
\languageshorthands{none}%
+ % switch captions, date
\ifcase\bbl@select@type
\ifhmode
\hskip\z@skip % trick to ignore spaces
@@ -180,19 +186,27 @@
\csname captions#1\endcsname\relax
\csname date#1\endcsname\relax
\fi
- \else\ifbbl@usedategroup
- \bbl@usedategroupfalse
- \ifhmode
- \hskip\z@skip % trick to ignore spaces
- \csname date#1\endcsname\relax
- \loop\ifdim\lastskip>\z@\unskip\repeat\unskip
- \else
- \csname date#1\endcsname\relax
+ \else
+ \ifbbl@usedategroup % if \foreign... within \<lang>date
+ \bbl@usedategroupfalse
+ \ifhmode
+ \hskip\z@skip % trick to ignore spaces
+ \csname date#1\endcsname\relax
+ \loop\ifdim\lastskip>\z@\unskip\repeat\unskip
+ \else
+ \csname date#1\endcsname\relax
+ \fi
\fi
- \fi\fi
+ \fi
+ % switch extras
\bbl@usehooks{beforeextras}{}%
\csname extras#1\endcsname\relax
\bbl@usehooks{afterextras}{}%
+ % > babel-ensure
+ % > babel-sh-<short>
+ % > babel-bidi
+ % > babel-fontspec
+ % hyphenation - case mapping
\ifcase\bbl@opt@hyphenmap\or
\def\BabelLower##1##2{\lccode##1=##2\relax}%
\ifnum\bbl@hymapsel>4\else
@@ -205,7 +219,9 @@
\fi
\fi
\global\let\bbl@hymapsel\@cclv
+ % hyphenation - patterns
\bbl@patterns{#1}%
+ % hyphenation - mins
\babel@savevariable\lefthyphenmin
\babel@savevariable\righthyphenmin
\expandafter\ifx\csname #1hyphenmins\endcsname\relax
@@ -249,18 +265,21 @@
{\par}%
\endgroup}
\def\foreign@language#1{%
+ % set name
\edef\languagename{#1}%
\bbl@fixname\languagename
\bbl@iflanguage\languagename{%
\expandafter\ifx\csname date\languagename\endcsname\relax
- \bbl@warning
+ \bbl@warning % TODO - why a warning, not an error?
{Unknown language `#1'. Either you have\\%
misspelled its name, it has not been installed,\\%
or you requested it in a previous run. Fix its name,\\%
- install it or just rerun the file, respectively.\\%
+ install it or just rerun the file, respectively. In\\%
+ some cases, you may need to remove the aux file.\\%
I'll proceed, but expect wrong results.\\%
Reported}%
\fi
+ % set type
\let\bbl@select@type\@ne
\expandafter\bbl@switch\expandafter{\languagename}}}
\let\bbl@hyphlist\@empty
@@ -277,6 +296,7 @@
\edef\bbl@tempa{#1:\f@encoding}%
\fi
\@expandtwoargs\bbl@usehooks{patterns}{{#1}{\bbl@tempa}}%
+ % > luatex
\@ifundefined{bbl@hyphenation@}{}{% Can be \relax!
\begingroup
\bbl@xin@{,\number\language,}{,\bbl@hyphlist}%
diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def
index cd47364b3c6..1159998dde1 100644
--- a/Master/texmf-dist/tex/generic/babel/xebabel.def
+++ b/Master/texmf-dist/tex/generic/babel/xebabel.def
@@ -149,16 +149,18 @@
\def\bbl@font@set#1#2#3{% eg \bbl@rmdflt@lang \rmdefault \rmfamily
\bbl@xin@{<>}{#1}%
\ifin@
- \bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1}%
+ \bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1\\#3}%
\fi
\bbl@exp{%
- \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang}
+ \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang}
\\\bbl@ifsamestring{#2}{\f@family}{\\#3\let\\\bbl@tempa\relax}{}}}
-\def\bbl@fontspec@set#1#2#3{% eg \bbl@rmdflt@lang fnt-opt fnt-nme
+\def\bbl@fontspec@set#1#2#3#4{% eg \bbl@rmdflt@lang fnt-opt fnt-nme \xxfamily
\let\bbl@tempe\bbl@mapselect
\let\bbl@mapselect\relax
- \bbl@exp{% TODO - should be global, but even local does its job
- % I'm still not sure -- must investigate
+ \let\bbl@temp@fam#4% eg, '\rmfamily', to be restored below
+ \let#4\relax % So that can be used with \newfontfamily
+ \bbl@exp{%
+ \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% eg, '\rmfamily '
\<keys_if_exist:nnF>{fontspec-opentype}%
{Script/\bbl@cs{sname@\languagename}}%
{\\\newfontscript{\bbl@cs{sname@\languagename}}%
@@ -167,10 +169,15 @@
{Language/\bbl@cs{lname@\languagename}}%
{\\\newfontlanguage{\bbl@cs{lname@\languagename}}%
{\bbl@cs{lotf@\languagename}}}%
- \<fontspec_set_family:Nnn>\\#1%
- {\bbl@cs{lsys@\languagename},#2}}{#3}% ie \bbl@exp{..}{#3}
- \let\bbl@mapselect\bbl@tempe
- \bbl@toglobal#1}%
+ \\\newfontfamily\\#4%
+ [\bbl@cs{lsys@\languagename},#2]}{#3}% ie \bbl@exp{..}{#3}
+ \begingroup
+ #4%
+ \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)}
+ \endgroup
+ \let#4\bbl@temp@fam
+ \bbl@exp{\let\<\bbl@stripslash#4\space>}\bbl@temp@pfam
+ \let\bbl@mapselect\bbl@tempe}%
\def\bbl@font@rst#1#2#3#4{%
\bbl@csarg\def{famrst@#4}{\bbl@font@set{#1}#2#3}}
\def\bbl@font@fams{rm,sf,tt}