diff options
author | Karl Berry <karl@freefriends.org> | 2021-07-19 20:10:36 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-07-19 20:10:36 +0000 |
commit | 87979956545645d8547439694c3ae1e8dd270992 (patch) | |
tree | eb7e392c824948ebea73bf97730a8287bfd9e8cb /Master/texmf-dist/tex/generic/babel/babel.sty | |
parent | 01c382d12b96590dbb146ae67a085504f4db4900 (diff) |
babel (19jul21)
git-svn-id: svn://tug.org/texlive/trunk@59990 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/babel.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/babel/babel.sty | 197 |
1 files changed, 52 insertions, 145 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index bdf21cb3358..4378752b16e 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.sty +++ b/Master/texmf-dist/tex/generic/babel/babel.sty @@ -34,13 +34,14 @@ %% \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{babel}[2021/06/28 3.61 The Babel package] +\ProvidesPackage{babel}[2021/07/19 3.62 The Babel package] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% \let\bbl@debug\@firstofone \ifx\directlua\@undefined\else \directlua{ Babel = Babel or {} Babel.debug = true }% + \input{babel-debug.tex}% \fi} {\providecommand\bbl@trace[1]{}% \let\bbl@debug\@gobble @@ -217,6 +218,11 @@ \else \expandafter\@firstofone \fi} +\ifx\IfFormatAtLeastTF\@undefined + \def\bbl@ifformatlater{\@ifl@t@r\fmtversion} +\else + \let\bbl@ifformatlater\IfFormatAtLeastTF +\fi \def\bbl@extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after \toks@\expandafter\expandafter\expandafter{% \csname extras\languagename\endcsname}% @@ -419,9 +425,6 @@ \ProcessOptions* \ifx\bbl@opt@provide\@nnil\else % Tests. Ignore. \chardef\bbl@iniflag\@ne - \bbl@replace\bbl@opt@provide{;}{,} - \bbl@add\bbl@opt@provide{,import} - \show\bbl@opt@provide \fi \bbl@trace{Conditional loading of shorthands} \def\bbl@sh@string#1{% @@ -665,40 +668,37 @@ } \@onlypreamble\substitutefontfamily \bbl@trace{Encoding and fonts} -\newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU,PU,PD1} +\newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU} \newcommand\BabelNonText{TS1,T3,TS3} \let\org@TeX\TeX \let\org@LaTeX\LaTeX \let\ensureascii\@firstofone \AtBeginDocument{% - \in@false - \bbl@foreach\BabelNonASCII{% is there a text non-ascii enc? - \ifin@\else - \lowercase{\bbl@xin@{,#1enc.def,}{,\@filelist,}}% + \def\@elt#1{,#1,}% + \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% + \let\@elt\relax + \let\bbl@tempb\@empty + \def\bbl@tempc{OT1}% + \bbl@foreach\BabelNonASCII{% LGR loaded in a non-standard way + \bbl@ifunset{T@#1}{}{\def\bbl@tempb{#1}}}% + \bbl@foreach\bbl@tempa{% + \bbl@xin@{#1}{\BabelNonASCII}% + \ifin@ + \def\bbl@tempb{#1}% Store last non-ascii + \else\bbl@xin@{#1}{\BabelNonText}% Pass + \ifin@\else + \def\bbl@tempc{#1}% Store last ascii + \fi \fi}% - \ifin@ % if a text non-ascii has been loaded - \def\ensureascii#1{{\fontencoding{OT1}\selectfont#1}}% - \DeclareTextCommandDefault{\TeX}{\org@TeX}% - \DeclareTextCommandDefault{\LaTeX}{\org@LaTeX}% - \def\bbl@tempb#1\@@{\uppercase{\bbl@tempc#1}ENC.DEF\@empty\@@}% - \def\bbl@tempc#1ENC.DEF#2\@@{% - \ifx\@empty#2\else - \bbl@ifunset{T@#1}% - {}% - {\bbl@xin@{,#1,}{,\BabelNonASCII,\BabelNonText,}% - \ifin@ - \DeclareTextCommand{\TeX}{#1}{\ensureascii{\org@TeX}}% - \DeclareTextCommand{\LaTeX}{#1}{\ensureascii{\org@LaTeX}}% - \else - \def\ensureascii##1{{\fontencoding{#1}\selectfont##1}}% - \fi}% - \fi}% - \bbl@foreach\@filelist{\bbl@tempb#1\@@}% TODO - \@@ de mas?? + \ifx\bbl@tempb\@empty\else \bbl@xin@{,\cf@encoding,}{,\BabelNonASCII,\BabelNonText,}% \ifin@\else - \edef\ensureascii#1{{% - \noexpand\fontencoding{\cf@encoding}\noexpand\selectfont#1}}% + \edef\bbl@tempc{\cf@encoding}% The default if ascii wins \fi + \edef\ensureascii#1{% + {\noexpand\fontencoding{\bbl@tempc}\noexpand\selectfont#1}}% + \DeclareTextCommandDefault{\TeX}{\ensureascii{\org@TeX}}% + \DeclareTextCommandDefault{\LaTeX}{\ensureascii{\org@LaTeX}}% \fi} \AtEndOfPackage{\edef\latinencoding{\cf@encoding}} \AtBeginDocument{% @@ -713,16 +713,12 @@ \ifx\cf@encoding\bbl@t@one \xdef\latinencoding{\bbl@t@one}% \else - \ifx\@fontenc@load@list\@undefined - \@ifl@aded{def}{t1enc}{\xdef\latinencoding{\bbl@t@one}}{}% - \else - \def\@elt#1{,#1,}% - \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% - \let\@elt\relax - \bbl@xin@{,T1,}\bbl@tempa - \ifin@ - \xdef\latinencoding{\bbl@t@one}% - \fi + \def\@elt#1{,#1,}% + \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% + \let\@elt\relax + \bbl@xin@{,T1,}\bbl@tempa + \ifin@ + \xdef\latinencoding{\bbl@t@one}% \fi \fi}} \DeclareRobustCommand{\latintext}{% @@ -733,66 +729,14 @@ \else \DeclareTextFontCommand{\textlatin}{\latintext} \fi -\ifodd\bbl@engine - \def\bbl@activate@preotf{% - \let\bbl@activate@preotf\relax % only once - \directlua{ - Babel = Babel or {} - % - function Babel.pre_otfload_v(head) - if Babel.numbers and Babel.digits_mapped then - head = Babel.numbers(head) - end - if Babel.bidi_enabled then - head = Babel.bidi(head, false, dir) - end - return head - end - % - function Babel.pre_otfload_h(head, gc, sz, pt, dir) - if Babel.numbers and Babel.digits_mapped then - head = Babel.numbers(head) - end - if Babel.bidi_enabled then - head = Babel.bidi(head, false, dir) - end - return head - end - % - luatexbase.add_to_callback('pre_linebreak_filter', - Babel.pre_otfload_v, - 'Babel.pre_otfload_v', - luatexbase.priority_in_callback('pre_linebreak_filter', - 'luaotfload.node_processor') or nil) - % - luatexbase.add_to_callback('hpack_filter', - Babel.pre_otfload_h, - 'Babel.pre_otfload_h', - luatexbase.priority_in_callback('hpack_filter', - 'luaotfload.node_processor') or nil) - }} -\fi +\bbl@ifformatlater{2021-06-01}% + {\def\bbl@patchfont#1{\AddToHook{selectfont}{#1}}} + {\def\bbl@patchfont#1{% + \expandafter\bbl@add\csname selectfont \endcsname{#1}% + \expandafter\bbl@toglobal\csname selectfont \endcsname}} \bbl@trace{Loading basic (internal) bidi support} \ifodd\bbl@engine - \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 - \let\bbl@beforeforeign\leavevmode - \AtEndOfPackage{\EnableBabelHook{babel-bidi}} - \RequirePackage{luatexbase} - \bbl@activate@preotf - \directlua{ - require('babel-data-bidi.lua') - \ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or - require('babel-bidi-basic.lua') - \or - require('babel-bidi-basic-r.lua') - \fi} - % TODO - to locale_props, not as separate attribute - \newattribute\bbl@attr@dir - % TODO. I don't like it, hackish: - \bbl@exp{\output{\bodydir\pagedir\the\output}} - \AtEndOfPackage{\EnableBabelHook{babel-bidi}} - \fi\fi -\else +\else % TODO. Move to txtbabel \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 \bbl@error {The bidi method 'basic' is available only in\\% @@ -828,7 +772,8 @@ \let\bbl@beforeforeign\leavevmode \ifodd\bbl@engine \newattribute\bbl@attr@dir - \bbl@exp{\output{\bodydir\pagedir\the\output}}% + \directlua{ Babel.attr_dir = luatexbase.registernumber'bbl@attr@dir' } + \bbl@exp{\output{\bodydir\pagedir\the\output}} \fi \AtEndOfPackage{% \EnableBabelHook{babel-bidi}% @@ -878,51 +823,6 @@ \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} \DisableBabelHook{babel-bidi} \ifodd\bbl@engine % luatex=1 - \chardef\bbl@thetextdir\z@ - \chardef\bbl@thepardir\z@ - \def\bbl@getluadir#1{% - \directlua{ - if tex.#1dir == 'TLT' then - tex.sprint('0') - elseif tex.#1dir == 'TRT' then - tex.sprint('1') - end}} - \def\bbl@setluadir#1#2#3{% 1=text/par.. 2=\textdir.. 3=0 lr/1 rl - \ifcase#3\relax - \ifcase\bbl@getluadir{#1}\relax\else - #2 TLT\relax - \fi - \else - \ifcase\bbl@getluadir{#1}\relax - #2 TRT\relax - \fi - \fi} - \def\bbl@textdir#1{% - \bbl@setluadir{text}\textdir{#1}% - \chardef\bbl@thetextdir#1\relax - \setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#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. - % Activated every math with the package option bidi=: - \ifnum\bbl@bidimode>\z@ - \def\bbl@mathboxdir{% - \ifcase\bbl@thetextdir\relax - \everyhbox{\bbl@mathboxdir@aux L}% - \else - \everyhbox{\bbl@mathboxdir@aux R}% - \fi} - \def\bbl@mathboxdir@aux#1{% - \@ifnextchar\egroup{}{\textdir T#1T\relax}} - \frozen@everymath\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everymath} - \frozen@everydisplay\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everydisplay} - \fi \else % pdftex=0, xetex=2 \newcount\bbl@dirlevel \chardef\bbl@thetextdir\z@ @@ -1158,9 +1058,16 @@ \bbl@ldfinit \let\CurrentOption\bbl@opt@main \ifx\bbl@opt@provide\@nnil - \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}} + \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}% \else - \bbl@exp{\\\babelprovide[\bbl@opt@provide,main]{\bbl@opt@main}}% + \bbl@exp{\\\bbl@forkv{\@nameuse{@raw@opt@babel.sty}}}{% + \bbl@xin@{,provide,}{,#1,}% + \ifin@ + \def\bbl@opt@provide{#2}% + \bbl@replace\bbl@opt@provide{;}{,}% + \fi}% + \bbl@exp{% + \\\babelprovide[\bbl@opt@provide,import,main]{\bbl@opt@main}}% \fi \bbl@afterldf{}% \else % case 0,2 |