summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-10-03 21:50:00 +0000
committerKarl Berry <karl@freefriends.org>2020-10-03 21:50:00 +0000
commit310a23d36634820b4ea52d65bbc37810e5265929 (patch)
tree36418c2a73eba43af0e0df2a175db643cf315dd2 /Master/texmf-dist/tex/generic
parent00a39cac37f80a75dbdf467250d8bf75cecb4db6 (diff)
babel (3oct20)
git-svn-id: svn://tug.org/texlive/trunk@56531 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def222
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty139
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/km/babel-km.ini5
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/lo/babel-lo.ini5
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/th/babel-th.ini5
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def25
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel/xebabel.def22
9 files changed, 288 insertions, 143 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index 216b0cb7cab..5236ab778d6 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -39,7 +39,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2020/09/01 3.48 Babel common definitions]
+\ProvidesFile{babel.def}[2020/10/03 3.49 Babel common definitions]
\ifx\AtBeginDocument\@undefined % TODO. change test.
% == Code for plain ==
\def\@empty{}
@@ -397,8 +397,8 @@
\fi
\countdef\last@language=19 % TODO. why? remove?
\def\addlanguage{\csname newlanguage\endcsname}
-\def\bbl@version{3.48}
-\def\bbl@date{2020/09/01}
+\def\bbl@version{3.49}
+\def\bbl@date{2020/10/03}
\def\adddialect#1#2{%
\global\chardef#1#2\relax
\bbl@usehooks{adddialect}{{#1}{#2}}%
@@ -614,7 +614,7 @@
\let\bbl@select@type\z@
\expandafter\bbl@switch\expandafter{\languagename}%
\fi}}
-\def\babel@aux#1#2{%
+\def\babel@aux#1#2{% TODO. See how to avoid undefined nil's
\select@language{#1}%
\bbl@foreach\BabelContentsFiles{%
\@writefile{##1}{\babel@toc{#1}{#2}}}}% %% TODO - ok in plain?
@@ -950,6 +950,8 @@
\def\bbl@ifblank#1{%
\bbl@ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
\long\def\bbl@ifblank@i#1#2\@nil#3#4#5\@nil{#4}
+\def\bbl@ifset#1#2#3{%
+ \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{#1}}{#3}{#2}}}
\def\bbl@forkv#1#2{%
\def\bbl@kvcmd##1##2##3{#2}%
\bbl@kvnext#1,\@nil,}
@@ -1038,6 +1040,18 @@
\else
\let\bbl@esphack\@empty
\fi}
+\def\bbl@cased{%
+ \ifx\oe\OE
+ \expandafter\in@\expandafter
+ {\expandafter\OE\expandafter}\expandafter{\oe}%
+ \ifin@
+ \bbl@afterelse\expandafter\MakeUppercase
+ \else
+ \bbl@afterfi\expandafter\MakeLowercase
+ \fi
+ \else
+ \expandafter\@firstofone
+ \fi}
\bbl@trace{Compatibility with language.def}
\ifx\bbl@languages\@undefined
\ifx\directlua\@undefined
@@ -1685,6 +1699,11 @@
\let\bbl@nonfrenchspacing\nonfrenchspacing
\fi}
\let\bbl@nonfrenchspacing\nonfrenchspacing
+\let\bbl@elt\relax
+\edef\bbl@fs@chars{%
+ \bbl@elt{\string.}\@m{3000}\bbl@elt{\string?}\@m{3000}%
+ \bbl@elt{\string!}\@m{3000}\bbl@elt{\string:}\@m{2000}%
+ \bbl@elt{\string;}\@m{1500}\bbl@elt{\string,}\@m{1250}}
\bbl@trace{Short tags}
\def\babeltags#1{%
\edef\bbl@tempa{\zap@space#1 \@empty}%
@@ -1928,13 +1947,12 @@
\endgroup
\bbl@scafter}
\let\bbl@endcommands\EndBabelCommands
-\def\bbl@setstring#1#2{%
+\def\bbl@setstring#1#2{% eg, \prefacename{<string>}
\bbl@forlang\bbl@tempa{%
\edef\bbl@LC{\bbl@tempa\bbl@stripslash#1}%
\bbl@ifunset{\bbl@LC}% eg, \germanchaptername
- {\global\expandafter % TODO - con \bbl@exp ?
- \bbl@add\csname\bbl@G\bbl@tempa\expandafter\endcsname\expandafter
- {\expandafter\bbl@scset\expandafter#1\csname\bbl@LC\endcsname}}%
+ {\bbl@exp{%
+ \global\\\bbl@add\<\bbl@G\bbl@tempa>{\\\bbl@scset\\#1\<\bbl@LC>}}}%
{}%
\def\BabelString{#2}%
\bbl@usehooks{stringprocess}{}%
@@ -2504,37 +2522,6 @@
\let\languagename\bbl@savelangname
\chardef\localeid\bbl@savelocaleid\relax
\fi}
-\def\bbl@setdigits#1#2#3#4#5{%
- \bbl@exp{%
- \def\<\languagename digits>####1{% ie, \langdigits
- \<bbl@digits@\languagename>####1\\\@nil}%
- \let\<bbl@cntr@digits@\languagename>\<\languagename digits>%
- \def\<\languagename counter>####1{% ie, \langcounter
- \\\expandafter\<bbl@counter@\languagename>%
- \\\csname c@####1\endcsname}%
- \def\<bbl@counter@\languagename>####1{% ie, \bbl@counter@lang
- \\\expandafter\<bbl@digits@\languagename>%
- \\\number####1\\\@nil}}%
- \def\bbl@tempa##1##2##3##4##5{%
- \bbl@exp{% Wow, quite a lot of hashes! :-(
- \def\<bbl@digits@\languagename>########1{%
- \\\ifx########1\\\@nil % ie, \bbl@digits@lang
- \\\else
- \\\ifx0########1#1%
- \\\else\\\ifx1########1#2%
- \\\else\\\ifx2########1#3%
- \\\else\\\ifx3########1#4%
- \\\else\\\ifx4########1#5%
- \\\else\\\ifx5########1##1%
- \\\else\\\ifx6########1##2%
- \\\else\\\ifx7########1##3%
- \\\else\\\ifx8########1##4%
- \\\else\\\ifx9########1##5%
- \\\else########1%
- \\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi
- \\\expandafter\<bbl@digits@\languagename>%
- \\\fi}}}%
- \bbl@tempa}
\def\bbl@provide@new#1{%
\@namedef{date#1}{}% marks lang exists - required by \StartBabelCommands
\@namedef{extras#1}{}%
@@ -2568,14 +2555,41 @@
\fi
\bbl@endcommands
\bbl@load@basic{#1}%
+ % == hyphenmins == (only if new)
\bbl@exp{%
\gdef\<#1hyphenmins>{%
{\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}%
{\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}%
+ % == hyphenrules ==
\bbl@provide@hyphens{#1}%
+ % == frenchspacing == (only if new)
+ \bbl@ifunset{bbl@frspc@#1}{}%
+ {\edef\bbl@tempa{\bbl@cl{frspc}}%
+ \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}%
+ \if u\bbl@tempa % do nothing
+ \else\if n\bbl@tempa % non french
+ \expandafter\bbl@add\csname extras#1\endcsname{%
+ \let\bbl@elt\bbl@fs@elt@i
+ \bbl@fs@chars}%
+ \else\if y\bbl@tempa % french
+ \expandafter\bbl@add\csname extras#1\endcsname{%
+ \let\bbl@elt\bbl@fs@elt@ii
+ \bbl@fs@chars}%
+ \fi\fi\fi}%
+ %
\ifx\bbl@KVP@main\@nil\else
\expandafter\main@language\expandafter{#1}%
\fi}
+\def\bbl@fs@elt@i#1#2#3{%
+ \ifnum\sfcode`#1=#2\relax
+ \babel@savevariable{\sfcode`#1}%
+ \sfcode`#1=#3\relax
+ \fi}%
+\def\bbl@fs@elt@ii#1#2#3{%
+ \ifnum\sfcode`#1=#3\relax
+ \babel@savevariable{\sfcode`#1}%
+ \sfcode`#1=#2\relax
+ \fi}%
\def\bbl@provide@renew#1{%
\ifx\bbl@KVP@captions\@nil\else
\StartBabelCommands*{#1}{captions}%
@@ -2592,6 +2606,16 @@
\fi
% == hyphenrules ==
\bbl@provide@hyphens{#1}}
+\def\bbl@linebreak@export{%
+ \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
+ \bbl@exportkey{hyphr}{typography.hyphenrules}{}%
+ \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
+ \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
+ \bbl@exportkey{prehc}{typography.prehyphenchar}{}%
+ \bbl@exportkey{hyotl}{typography.hyphenate.other.locale}{}%
+ \bbl@exportkey{hyots}{typography.hyphenate.other.script}{}%
+ \bbl@exportkey{intsp}{typography.intraspace}{}%
+ \bbl@exportkey{chrng}{characters.ranges}{}}
\def\bbl@load@basic#1{%
\bbl@ifunset{bbl@inidata@\languagename}{}%
{\getlocaleproperty\bbl@tempa{\languagename}{identification/load.level}%
@@ -2601,21 +2625,12 @@
\bbl@ifunset{bbl@lname@#1}%
{\def\BabelBeforeIni##1##2{%
\begingroup
- \catcode`\[=12 \catcode`\]=12 \catcode`\==12
- \catcode`\;=12 \catcode`\|=12 \catcode`\%=14
\let\bbl@ini@captions@aux\@gobbletwo
\def\bbl@inidate ####1.####2.####3.####4\relax ####5####6{}%
\bbl@read@ini{##1}0%
- \bbl@exportkey{prehc}{typography.prehyphenchar}{}%
- \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
- \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
- \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
- \bbl@exportkey{hyphr}{typography.hyphenrules}{}%
- \bbl@exportkey{hyotl}{typography.hyphenate.other.locale}{}%
- \bbl@exportkey{hyots}{typography.hyphenate.other.script}{}%
- \bbl@exportkey{intsp}{typography.intraspace}{}%
- \bbl@exportkey{chrng}{characters.ranges}{}%
+ \bbl@linebreak@export
\bbl@exportkey{dgnat}{numbers.digits.native}{}%
+ \bbl@exportkey{frspc}{typography.frenchspacing}{u}% unset
\ifx\bbl@initoload\relax\endinput\fi
\endgroup}%
\begingroup % boxed, to avoid extra spaces:
@@ -2681,8 +2696,10 @@
\\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}%
\expandafter\bbl@inireader\bbl@tempa=#2\@@}%
{}}%
-\def\bbl@read@ini#1#2{%
- \bbl@csarg\edef{lini@\languagename}{#1}%
+\def\bbl@fetch@ini#1#2{%
+ \bbl@exp{\def\\\bbl@inidata{%
+ \\\bbl@elt{identification}{tag.ini}{#1}%
+ \\\bbl@elt{identification}{load.level}{#2}}}%
\openin\bbl@readstream=babel-#1.ini
\ifeof\bbl@readstream
\bbl@error
@@ -2691,14 +2708,8 @@
is not complete.}%
{Fix the name or reinstall babel.}%
\else
- \bbl@exp{\def\\\bbl@inidata{%
- \\\bbl@elt{identification}{tag.ini}{#1}%
- \\\bbl@elt{identification}{load.level}{#2}}}%
- \let\bbl@section\@empty
- \let\bbl@savestrings\@empty
- \let\bbl@savetoday\@empty
- \let\bbl@savedate\@empty
- \let\bbl@inireader\bbl@iniskip
+ \catcode`\[=12 \catcode`\]=12 \catcode`\==12
+ \catcode`\;=12 \catcode`\|=12 \catcode`\%=14
\bbl@info{Importing
\ifcase#2 \or font and identification \or basic \fi
data for \languagename\\%
@@ -2712,18 +2723,26 @@
\expandafter\bbl@iniline\bbl@line\bbl@iniline
\fi
\repeat
- \bbl@foreach\bbl@renewlist{%
- \bbl@ifunset{bbl@renew@##1}{}{\bbl@inisec[##1]\@@}}%
- \global\let\bbl@renewlist\@empty
- % Ends last section. See \bbl@inisec
- \def\bbl@elt##1##2{\bbl@inireader##1=##2\@@}%
- \bbl@cs{renew@\bbl@section}%
- \global\bbl@csarg\let{renew@\bbl@section}\relax
- \bbl@cs{secpost@\bbl@section}%
- \bbl@csarg{\global\expandafter\let}{inidata@\languagename}\bbl@inidata
- \bbl@exp{\\\bbl@add@list\\\bbl@ini@loaded{\languagename}}%
- \bbl@toglobal\bbl@ini@loaded
\fi}
+\def\bbl@read@ini#1#2{%
+ \bbl@csarg\edef{lini@\languagename}{#1}%
+ \let\bbl@section\@empty
+ \let\bbl@savestrings\@empty
+ \let\bbl@savetoday\@empty
+ \let\bbl@savedate\@empty
+ \let\bbl@inireader\bbl@iniskip
+ \bbl@fetch@ini{#1}{#2}%
+ \bbl@foreach\bbl@renewlist{%
+ \bbl@ifunset{bbl@renew@##1}{}{\bbl@inisec[##1]\@@}}%
+ \global\let\bbl@renewlist\@empty
+ % Ends last section. See \bbl@inisec
+ \def\bbl@elt##1##2{\bbl@inireader##1=##2\@@}%
+ \bbl@cs{renew@\bbl@section}%
+ \global\bbl@csarg\let{renew@\bbl@section}\relax
+ \bbl@cs{secpost@\bbl@section}%
+ \bbl@csarg{\global\expandafter\let}{inidata@\languagename}\bbl@inidata
+ \bbl@exp{\\\bbl@add@list\\\bbl@ini@loaded{\languagename}}%
+ \bbl@toglobal\bbl@ini@loaded}
\def\bbl@iniline#1\bbl@iniline{%
\@ifnextchar[\bbl@inisec{\@ifnextchar;\bbl@iniskip\bbl@inipreread}#1\@@}% ]
\def\bbl@iniskip#1\@@{}% if starts with ;
@@ -2842,18 +2861,10 @@
\bbl@csarg{\global\expandafter\let}{cntr@#1@\languagename}\bbl@tempa
\fi}
\def\bbl@after@ini{%
- \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
- \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
- \bbl@exportkey{prehc}{typography.prehyphenchar}{}%
- \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
- \bbl@exportkey{hyphr}{typography.hyphenrules}{}%
- \bbl@exportkey{hyotl}{typography.hyphenate.other.locale}{}%
- \bbl@exportkey{hyots}{typography.hyphenate.other.script}{}%
- \bbl@exportkey{intsp}{typography.intraspace}{}%
- \bbl@exportkey{jstfy}{typography.justify}{w}%
- \bbl@exportkey{chrng}{characters.ranges}{}%
+ \bbl@linebreak@export
\bbl@exportkey{dgnat}{numbers.digits.native}{}%
\bbl@exportkey{rqtex}{identification.require.babel}{}%
+ \bbl@exportkey{frspc}{typography.frenchspacing}{u}% unset
\bbl@toglobal\bbl@savetoday
\bbl@toglobal\bbl@savedate}
\ifcase\bbl@engine
@@ -3012,18 +3023,6 @@
\fi
\let\bbl@calendar\@empty
\DeclareRobustCommand\localedate[1][]{\bbl@localedate{#1}}
-\def\bbl@cased{% TODO. Move
- \ifx\oe\OE
- \expandafter\in@\expandafter
- {\expandafter\OE\expandafter}\expandafter{\oe}%
- \ifin@
- \bbl@afterelse\expandafter\MakeUppercase
- \else
- \bbl@afterfi\expandafter\MakeLowercase
- \fi
- \else
- \expandafter\@firstofone
- \fi}
\def\bbl@localedate#1#2#3#4{%
\begingroup
\ifx\@empty#1\@empty\else
@@ -3142,8 +3141,6 @@
\fi}}%
\fi
\bbl@csarg\bbl@toglobal{lsys@#1}}
-\def\bbl@ifset#1#2#3{% TODO. Move to the correct place.
- \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{#1}}{#3}{#2}}}
\def\bbl@xenohyph@d{%
\bbl@ifset{bbl@prehc@\languagename}%
{\ifnum\hyphenchar\font=\defaulthyphenchar
@@ -3167,12 +3164,41 @@
\def\BabelBeforeIni##1##2{%
\begingroup
\bbl@add\bbl@secpost@identification{\closein\bbl@readstream }%
- \catcode`\[=12 \catcode`\]=12 \catcode`\==12
- \catcode`\;=12 \catcode`\|=12 \catcode`\%=14
\bbl@read@ini{##1}1%
\endinput % babel- .tex may contain onlypreamble's
\endgroup}% boxed, to avoid extra spaces:
{\bbl@input@texini{#1}}}
+\def\bbl@setdigits#1#2#3#4#5{%
+ \bbl@exp{%
+ \def\<\languagename digits>####1{% ie, \langdigits
+ \<bbl@digits@\languagename>####1\\\@nil}%
+ \let\<bbl@cntr@digits@\languagename>\<\languagename digits>%
+ \def\<\languagename counter>####1{% ie, \langcounter
+ \\\expandafter\<bbl@counter@\languagename>%
+ \\\csname c@####1\endcsname}%
+ \def\<bbl@counter@\languagename>####1{% ie, \bbl@counter@lang
+ \\\expandafter\<bbl@digits@\languagename>%
+ \\\number####1\\\@nil}}%
+ \def\bbl@tempa##1##2##3##4##5{%
+ \bbl@exp{% Wow, quite a lot of hashes! :-(
+ \def\<bbl@digits@\languagename>########1{%
+ \\\ifx########1\\\@nil % ie, \bbl@digits@lang
+ \\\else
+ \\\ifx0########1#1%
+ \\\else\\\ifx1########1#2%
+ \\\else\\\ifx2########1#3%
+ \\\else\\\ifx3########1#4%
+ \\\else\\\ifx4########1#5%
+ \\\else\\\ifx5########1##1%
+ \\\else\\\ifx6########1##2%
+ \\\else\\\ifx7########1##3%
+ \\\else\\\ifx8########1##4%
+ \\\else\\\ifx9########1##5%
+ \\\else########1%
+ \\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi
+ \\\expandafter\<bbl@digits@\languagename>%
+ \\\fi}}}%
+ \bbl@tempa}
\def\bbl@buildifcase#1 {% Returns \bbl@tempa, requires \toks@={}
\ifx\\#1% % \\ before, in case #1 is multiletter
\bbl@exp{%
@@ -3308,7 +3334,7 @@
\bbl@adjust@layout{\let\@tabular\bbl@OL@@tabular}}
\@namedef{bbl@ADJ@layout.lists@on}{%
\bbl@adjust@layout{\let\list\bbl@NL@list}}
-\@namedef{bbl@ADJ@layout.lists@on}{%
+\@namedef{bbl@ADJ@layout.lists@off}{%
\bbl@adjust@layout{\let\list\bbl@OL@list}}
\@namedef{bbl@ADJ@hyphenation.extra@on}{%
\bbl@activateposthyphen}
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty
index 7cd6d69fe7b..29e5321158a 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}[2020/09/01 3.48 The Babel package]
+\ProvidesPackage{babel}[2020/10/03 3.49 The Babel package]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
\let\bbl@debug\@firstofone}
@@ -106,6 +106,8 @@
\def\bbl@ifblank#1{%
\bbl@ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
\long\def\bbl@ifblank@i#1#2\@nil#3#4#5\@nil{#4}
+\def\bbl@ifset#1#2#3{%
+ \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{#1}}{#3}{#2}}}
\def\bbl@forkv#1#2{%
\def\bbl@kvcmd##1##2##3{#2}%
\bbl@kvnext#1,\@nil,}
@@ -194,6 +196,18 @@
\else
\let\bbl@esphack\@empty
\fi}
+\def\bbl@cased{%
+ \ifx\oe\OE
+ \expandafter\in@\expandafter
+ {\expandafter\OE\expandafter}\expandafter{\oe}%
+ \ifin@
+ \bbl@afterelse\expandafter\MakeUppercase
+ \else
+ \bbl@afterfi\expandafter\MakeLowercase
+ \fi
+ \else
+ \expandafter\@firstofone
+ \fi}
% Temporarily repeat here the code for errors
\def\bbl@error#1#2{%
\begingroup
@@ -295,17 +309,24 @@
\endinput}{}%
\bbl@trace{key=value and another general options}
\bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname
-\def\bbl@tempb#1.#2{%
+\def\bbl@tempb#1.#2{% Remove trailing dot
#1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}%
-\def\bbl@tempd#1.#2\@nnil{%
+\def\bbl@tempd#1.#2\@nnil{% TODO. Refactor lists?
\ifx\@empty#2%
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
\else
- \in@{=}{#1}\ifin@
- \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
+ \in@{,provide,}{,#1,}%
+ \ifin@
+ \edef\bbl@tempc{%
+ \ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}%
\else
- \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
- \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
+ \in@{=}{#1}%
+ \ifin@
+ \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
+ \else
+ \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
+ \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
+ \fi
\fi
\fi}
\let\bbl@tempc\@empty
@@ -320,8 +341,16 @@
\DeclareOption{silent}{}
\DeclareOption{mono}{}
\DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa}
+\chardef\bbl@iniflag\z@
+\DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main -> +1
+\DeclareOption{provide+=*}{\chardef\bbl@iniflag\tw@} % add = 2
+\DeclareOption{provide*=*}{\chardef\bbl@iniflag\thr@@} % add + main
\newif\ifbbl@single
\DeclareOption{selectors=off}{\bbl@singletrue}
+\DeclareOption{provide@=*}{} % autoload with cat @=letter
+\makeatother
+\DeclareOption{provide@=*}{} % autoload with cat @=other
+\makeatletter
\DeclareOption{safe=none}{\let\bbl@opt@safe\@empty}
\DeclareOption{safe=bib}{\def\bbl@opt@safe{B}}
\DeclareOption{safe=ref}{\def\bbl@opt@safe{R}}
@@ -755,7 +784,7 @@
\AtEndOfPackage{%
\EnableBabelHook{babel-bidi}%
\ifx\fontspec\@undefined
- \usepackage{fontspec}% bidi needs fontspec
+ \bbl@loadfontspec % bidi needs fontspec
\fi
\usepackage#1{bidi}}%
\fi}
@@ -764,10 +793,8 @@
\bbl@tentative{bidi=bidi}
\bbl@loadxebidi{}
\or
- \bbl@tentative{bidi=bidi-r}
\bbl@loadxebidi{[rldocument]}
\or
- \bbl@tentative{bidi=bidi-l}
\bbl@loadxebidi{}
\fi
\fi
@@ -982,13 +1009,13 @@
{\bbl@error{%
Unknown option `\CurrentOption'. Either you misspelled it\\%
or the language definition file \CurrentOption.ldf was not found}{%
- Valid options are: shorthands=, KeepShorthandsActive,\\%
+ Valid options are, among others: shorthands=, KeepShorthandsActive,\\%
activeacute, activegrave, noconfigs, safe=, main=, math=\\%
headfoot=, strings=, config=, hyphenmap=, or a language name.}}}
\def\bbl@try@load@lang#1#2#3{%
- \IfFileExists{\CurrentOption.ldf}%
- {\bbl@load@language{\CurrentOption}}%
- {#1\bbl@load@language{#2}#3}}
+ \IfFileExists{\CurrentOption.ldf}%
+ {\bbl@load@language{\CurrentOption}}%
+ {#1\bbl@load@language{#2}#3}}
\DeclareOption{afrikaans}{\bbl@try@load@lang{}{dutch}{}}
\DeclareOption{hebrew}{%
\input{rlbabel.def}%
@@ -1017,24 +1044,69 @@
Local config file `\bbl@opt@config.cfg' not found}{%
Perhaps you misspelled it.}}%
\fi
-\bbl@for\bbl@tempa\bbl@language@opts{%
- \bbl@ifunset{ds@\bbl@tempa}%
- {\edef\bbl@tempb{%
- \noexpand\DeclareOption
- {\bbl@tempa}%
- {\noexpand\bbl@load@language{\bbl@tempa}}}%
- \bbl@tempb}%
- \@empty}
+\let\bbl@tempc\relax
+\bbl@foreach\bbl@language@opts{%
+ \ifcase\bbl@iniflag
+ \bbl@ifunset{ds@#1}%
+ {\DeclareOption{#1}{\bbl@load@language{#1}}}%
+ {}%
+ \or
+ \@gobble % case 2 same as 1
+ \or
+ \bbl@ifunset{ds@#1}%
+ {\IfFileExists{#1.ldf}{}%
+ {\IfFileExists{babel-#1.tex}{}{\DeclareOption{#1}{}}}}%
+ {}%
+ \bbl@ifunset{ds@#1}%
+ {\def\bbl@tempc{#1}%
+ \DeclareOption{#1}{%
+ \ifnum\bbl@iniflag>\@ne
+ \bbl@ldfinit
+ \babelprovide[import]{#1}%
+ \bbl@afterldf{}%
+ \else
+ \bbl@load@language{#1}%
+ \fi}}%
+ {}%
+ \or
+ \def\bbl@tempc{#1}%
+ \bbl@ifunset{ds@#1}%
+ {\DeclareOption{#1}{%
+ \bbl@ldfinit
+ \babelprovide[import]{#1}%
+ \bbl@afterldf{}}}%
+ {}%
+ \fi}
+\let\bbl@tempb\@nnil
\bbl@foreach\@classoptionslist{%
\bbl@ifunset{ds@#1}%
- {\IfFileExists{#1.ldf}%
- {\DeclareOption{#1}{\bbl@load@language{#1}}}%
- {}}%
+ {\IfFileExists{#1.ldf}{}%
+ {\IfFileExists{babel-#1.tex}{}{\DeclareOption{#1}{}}}}%
+ {}%
+ \bbl@ifunset{ds@#1}%
+ {\def\bbl@tempb{#1}%
+ \DeclareOption{#1}{%
+ \ifnum\bbl@iniflag>\@ne
+ \bbl@ldfinit
+ \babelprovide[import]{#1}%
+ \bbl@afterldf{}%
+ \else
+ \bbl@load@language{#1}%
+ \fi}}%
{}}
+\ifnum\bbl@iniflag=\z@\else
+ \ifx\bbl@opt@main\@nnil
+ \ifx\bbl@tempc\relax
+ \let\bbl@opt@main\bbl@tempb
+ \else
+ \let\bbl@opt@main\bbl@tempc
+ \fi
+ \fi
+\fi
\ifx\bbl@opt@main\@nnil\else
\expandafter
\let\expandafter\bbl@loadmain\csname ds@\bbl@opt@main\endcsname
- \DeclareOption{\bbl@opt@main}{}
+ \expandafter\let\csname ds@\bbl@opt@main\endcsname\@empty
\fi
\def\AfterBabelLanguage#1{%
\bbl@ifsamestring\CurrentOption{#1}{\global\bbl@add\bbl@afterlang}{}}
@@ -1058,10 +1130,17 @@
option. Reported}%
\fi
\else
- \DeclareOption{\bbl@opt@main}{\bbl@loadmain}
- \ExecuteOptions{\bbl@opt@main}
- \DeclareOption*{}
- \ProcessOptions*
+ \ifodd\bbl@iniflag % case 1,3
+ \bbl@ldfinit
+ \let\CurrentOption\bbl@opt@main
+ \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}
+ \bbl@afterldf{}%
+ \else % case 0,2
+ \chardef\bbl@iniflag\z@ % Force ldf
+ \expandafter\let\csname ds@\bbl@opt@main\endcsname\bbl@loadmain
+ \DeclareOption*{}%
+ \ProcessOptions*
+ \fi
\fi
\def\AfterBabelLanguage{%
\bbl@error
diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
index 1b9e6a23100..aa49007d2c4 100644
--- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg
+++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
@@ -37,10 +37,10 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2020/09/01 3.48 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2020/10/03 3.49 Babel hyphens]
\xdef\bbl@format{\jobname}
-\def\bbl@version{3.48}
-\def\bbl@date{2020/09/01}
+\def\bbl@version{3.49}
+\def\bbl@date{2020/10/03}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\let\orig@dump\dump
diff --git a/Master/texmf-dist/tex/generic/babel/locale/km/babel-km.ini b/Master/texmf-dist/tex/generic/babel/locale/km/babel-km.ini
index 42bfdf2339b..71e1c953151 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/km/babel-km.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/km/babel-km.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2020-06-30
+version = 1.8
+date = 2020-09-30
name.local = ខ្មែរ
name.english = Khmer
name.babel = khmer
@@ -145,7 +145,6 @@ exhyphenchar =
preexhyphenchar =
postexhyphenchar =
hyphenationmin =
-justify = s
intraspace = 0 .1 0
linebreaking = s
diff --git a/Master/texmf-dist/tex/generic/babel/locale/lo/babel-lo.ini b/Master/texmf-dist/tex/generic/babel/locale/lo/babel-lo.ini
index 40ed38086f4..8ed2333afd0 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/lo/babel-lo.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/lo/babel-lo.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.6
-date = 2020-06-30
+version = 1.7
+date = 2020-09-30
name.local = ລາວ
name.english = Lao
name.babel = lao
@@ -123,7 +123,6 @@ exhyphenchar =
preexhyphenchar =
postexhyphenchar =
hyphenationmin =
-justify = s
intraspace = 0 .1 0
linebreaking = s
diff --git a/Master/texmf-dist/tex/generic/babel/locale/th/babel-th.ini b/Master/texmf-dist/tex/generic/babel/locale/th/babel-th.ini
index 540520a7d06..58fbe840658 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/th/babel-th.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/th/babel-th.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.6
-date = 2020-06-30
+version = 1.7
+date = 2020-09-30
name.local = ไทย
name.english = Thai
name.babel = thai
@@ -161,7 +161,6 @@ exhyphenchar =
preexhyphenchar =
postexhyphenchar =
hyphenationmin =
-justify = s
intraspace = 0 .1 0
linebreaking = s
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index 6e27edcf75b..2d1ddbdf032 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -536,6 +536,26 @@
\AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts}
\DisableBabelHook{babel-fontspec}
\bbl@trace{Font handling with fontspec}
+\ifx\ExplSyntaxOn\@undefined\else
+ \ExplSyntaxOn
+ \catcode`\ =10
+ \def\bbl@loadfontspec{%
+ \usepackage{fontspec}%
+ \expandafter
+ \def\csname msg~text~>~fontspec/language-not-exist\endcsname##1##2##3##4{%
+ Font '\l_fontspec_fontname_tl' is using the\\%
+ default features for language '##1'.\\%
+ That's usually fine, because many languages\\%
+ require no specific features, but if the output is\\%
+ not as expected, consider selecting another font.}
+ \expandafter
+ \def\csname msg~text~>~fontspec/no-script\endcsname##1##2##3##4{%
+ Font '\l_fontspec_fontname_tl' is using the\\%
+ default features for script '##2'.\\%
+ That's not always wrong, but if the output is\\%
+ not as expected, consider selecting another font.}}
+ \ExplSyntaxOff
+\fi
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
\bbl@foreach{#1}{%
@@ -547,7 +567,7 @@
\edef\bbl@tempa{#1}%
\def\bbl@tempb{#2}% Used by \bbl@bblfont
\ifx\fontspec\@undefined
- \usepackage{fontspec}%
+ \bbl@loadfontspec
\fi
\EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont
\bbl@bblfont}
@@ -1250,6 +1270,9 @@ end
if not u.find(patt, '()', nil, true) then
patt = '()' .. patt .. '()'
end
+ patt = string.gsub(patt, '%(%)%^', '^()')
+ patt = string.gsub(patt, '%$%(%)', '()$')
+ texio.write('***************' .. patt)
patt = u.gsub(patt, '{(.)}',
function (n)
return '%' .. (tonumber(n) and (tonumber(n)+1) or n)
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index 80e18612f0e..0f70a0a3afe 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}[2020/09/01 3.48 Nil language]
+\ProvidesLanguage{nil}[2020/10/03 3.49 Nil language]
\LdfInit{nil}{datenil}
\ifx\l@nil\@undefined
\newlanguage\l@nil
diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def
index 1b0c1bb36d6..f451a4b71bc 100644
--- a/Master/texmf-dist/tex/generic/babel/xebabel.def
+++ b/Master/texmf-dist/tex/generic/babel/xebabel.def
@@ -96,6 +96,26 @@
\AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts}
\DisableBabelHook{babel-fontspec}
\bbl@trace{Font handling with fontspec}
+\ifx\ExplSyntaxOn\@undefined\else
+ \ExplSyntaxOn
+ \catcode`\ =10
+ \def\bbl@loadfontspec{%
+ \usepackage{fontspec}%
+ \expandafter
+ \def\csname msg~text~>~fontspec/language-not-exist\endcsname##1##2##3##4{%
+ Font '\l_fontspec_fontname_tl' is using the\\%
+ default features for language '##1'.\\%
+ That's usually fine, because many languages\\%
+ require no specific features, but if the output is\\%
+ not as expected, consider selecting another font.}
+ \expandafter
+ \def\csname msg~text~>~fontspec/no-script\endcsname##1##2##3##4{%
+ Font '\l_fontspec_fontname_tl' is using the\\%
+ default features for script '##2'.\\%
+ That's not always wrong, but if the output is\\%
+ not as expected, consider selecting another font.}}
+ \ExplSyntaxOff
+\fi
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
\bbl@foreach{#1}{%
@@ -107,7 +127,7 @@
\edef\bbl@tempa{#1}%
\def\bbl@tempb{#2}% Used by \bbl@bblfont
\ifx\fontspec\@undefined
- \usepackage{fontspec}%
+ \bbl@loadfontspec
\fi
\EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont
\bbl@bblfont}