diff options
author | Karl Berry <karl@freefriends.org> | 2020-05-14 21:24:22 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-05-14 21:24:22 +0000 |
commit | 0ceebb71618356e1ae06cdfd3cff81e322f2307b (patch) | |
tree | fb643d2536a1177f17c7c90410226f1accef7c31 /Master/texmf-dist/tex/generic/babel/babel.sty | |
parent | bb587f3190ec7933ee6a18e994099e566c6e8009 (diff) |
babel (13may20)
git-svn-id: svn://tug.org/texlive/trunk@55143 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 | 257 |
1 files changed, 127 insertions, 130 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index bfa5ab18295..b78bdcf26d3 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/04/28 3.43 The Babel package] +\ProvidesPackage{babel}[2020/05/13 3.44 The Babel package] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% \let\bbl@debug\@firstofone} @@ -285,61 +285,6 @@ \global\let\@ifl@ter@@\@ifl@ter \def\@ifl@ter#1#2#3#4#5{\global\let\@ifl@ter\@ifl@ter@@}% \endinput}{}% -\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) - }} - \let\bbl@tempa\relax - \@ifpackagewith{babel}{bidi=basic}% - {\def\bbl@tempa{basic}}% - {\@ifpackagewith{babel}{bidi=basic-r}% - {\def\bbl@tempa{basic-r}}% - {}} - \ifx\bbl@tempa\relax\else - \let\bbl@beforeforeign\leavevmode - \AtEndOfPackage{\EnableBabelHook{babel-bidi}}% - \RequirePackage{luatexbase}% - \directlua{ - require('babel-data-bidi.lua') - require('babel-bidi-\bbl@tempa.lua') - } - \bbl@activate@preotf - \fi -\fi \bbl@trace{key=value and another general options} \bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname \def\bbl@tempb#1.#2{% @@ -384,63 +329,13 @@ \DeclareOption{hyphenmap=select}{\chardef\bbl@opt@hyphenmap\tw@} \DeclareOption{hyphenmap=other}{\chardef\bbl@opt@hyphenmap\thr@@} \DeclareOption{hyphenmap=other*}{\chardef\bbl@opt@hyphenmap4\relax} -\ifodd\bbl@engine - \DeclareOption{bidi=basic-r}% - {\ExecuteOptions{bidi=basic}} - \DeclareOption{bidi=basic}% - {\let\bbl@beforeforeign\leavevmode - % TODO - to locale_props, not as separate attribute - \newattribute\bbl@attr@dir - % I don't like it, hackish: - \frozen@everymath\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everymath}% - \frozen@everydisplay\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everydisplay}% - \bbl@exp{\output{\bodydir\pagedir\the\output}}% - \AtEndOfPackage{\EnableBabelHook{babel-bidi}}} -\else - \DeclareOption{bidi=basic-r}% - {\ExecuteOptions{bidi=basic}} - \DeclareOption{bidi=basic}% - {\bbl@error - {The bidi method `basic' is available only in\\% - luatex. I'll continue with `bidi=default', so\\% - expect wrong results}% - {See the manual for further details.}% - \let\bbl@beforeforeign\leavevmode - \AtEndOfPackage{% - \EnableBabelHook{babel-bidi}% - \bbl@xebidipar}} - \def\bbl@loadxebidi#1{% - \ifx\RTLfootnotetext\@undefined - \AtEndOfPackage{% - \EnableBabelHook{babel-bidi}% - \ifx\fontspec\@undefined - \usepackage{fontspec}% bidi needs fontspec - \fi - \usepackage#1{bidi}}% - \fi} - \DeclareOption{bidi=bidi}% - {\bbl@tentative{bidi=bidi}% - \bbl@loadxebidi{}} - \DeclareOption{bidi=bidi-r}% - {\bbl@tentative{bidi=bidi-r}% - \bbl@loadxebidi{[rldocument]}} - \DeclareOption{bidi=bidi-l}% - {\bbl@tentative{bidi=bidi-l}% - \bbl@loadxebidi{}} -\fi -\DeclareOption{bidi=default}% - {\let\bbl@beforeforeign\leavevmode - \ifodd\bbl@engine - \newattribute\bbl@attr@dir - \bbl@exp{\output{\bodydir\pagedir\the\output}}% - \fi - \AtEndOfPackage{% - \EnableBabelHook{babel-bidi}% - \ifodd\bbl@engine\else - \bbl@xebidipar - \fi}} +\chardef\bbl@bidimode\z@ +\DeclareOption{bidi=default}{\chardef\bbl@bidimode=\@ne} +\DeclareOption{bidi=basic}{\chardef\bbl@bidimode=101 } +\DeclareOption{bidi=basic-r}{\chardef\bbl@bidimode=102 } +\DeclareOption{bidi=bidi}{\chardef\bbl@bidimode=201 } +\DeclareOption{bidi=bidi-r}{\chardef\bbl@bidimode=202 } +\DeclareOption{bidi=bidi-l}{\chardef\bbl@bidimode=203 } \let\bbl@opt@shorthands\@nnil \let\bbl@opt@config\@nnil \let\bbl@opt@main\@nnil @@ -778,9 +673,114 @@ \else \DeclareTextFontCommand{\textlatin}{\latintext} \fi -\bbl@trace{Basic (internal) bidi support} +\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@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 + \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 + \bbl@error + {The bidi method `basic' is available only in\\% + luatex. I'll continue with `bidi=default', so\\% + expect wrong results}% + {See the manual for further details.}% + \let\bbl@beforeforeign\leavevmode + \AtEndOfPackage{% + \EnableBabelHook{babel-bidi}% + \bbl@xebidipar} + \fi\fi + \def\bbl@loadxebidi#1{% + \ifx\RTLfootnotetext\@undefined + \AtEndOfPackage{% + \EnableBabelHook{babel-bidi}% + \ifx\fontspec\@undefined + \usepackage{fontspec}% bidi needs fontspec + \fi + \usepackage#1{bidi}}% + \fi} + \ifnum\bbl@bidimode>200 + \ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or + \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 +\fi +\ifnum\bbl@bidimode=\@ne + \let\bbl@beforeforeign\leavevmode + \ifodd\bbl@engine + \newattribute\bbl@attr@dir + \bbl@exp{\output{\bodydir\pagedir\the\output}}% + \fi + \AtEndOfPackage{% + \EnableBabelHook{babel-bidi}% + \ifodd\bbl@engine\else + \bbl@xebidipar + \fi} +\fi +\bbl@trace{Macros to switch the text direction} \def\bbl@alscripts{,Arabic,Syriac,Thaana,} -\def\bbl@rscripts{% +\def\bbl@rscripts{% TODO. Base on codes ?? ,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,% Old Hungarian,Old Hungarian,Lydian,Mandaean,Manichaean,% Manichaean,Meroitic Cursive,Meroitic,Old North Arabian,% @@ -817,9 +817,9 @@ \bbl@pardir{#1}% \fi \bbl@textdir{#1}} +\AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} +\DisableBabelHook{babel-bidi} \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{% @@ -857,9 +857,11 @@ \else \everyhbox{\textdir TRT\relax}% \fi} + \frozen@everymath\expandafter{% + \expandafter\bbl@mathboxdir\the\frozen@everymath} + \frozen@everydisplay\expandafter{% + \expandafter\bbl@mathboxdir\the\frozen@everydisplay} \else % pdftex=0, xetex=2 - \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} - \DisableBabelHook{babel-bidi} \newcount\bbl@dirlevel \chardef\bbl@thetextdir\z@ \chardef\bbl@thepardir\z@ @@ -916,20 +918,18 @@ \newtoks\everypar \everypar=\bbl@severypar \bbl@severypar{\bbl@xeeverypar\the\everypar}} - \def\bbl@tempb{% + \ifnum\bbl@bidimode>200 \let\bbl@textdir@i\@gobbletwo \let\bbl@xebidipar\@empty \AddBabelHook{bidi}{foreign}{% - \def\bbl@tempa{\def\BabelText########1}% + \def\bbl@tempa{\def\BabelText####1}% \ifcase\bbl@thetextdir - \expandafter\bbl@tempa\expandafter{\BabelText{\LR{####1}}}% + \expandafter\bbl@tempa\expandafter{\BabelText{\LR{##1}}}% \else - \expandafter\bbl@tempa\expandafter{\BabelText{\RL{####1}}}% + \expandafter\bbl@tempa\expandafter{\BabelText{\RL{##1}}}% \fi} - \def\bbl@pardir##1{\ifcase##1\relax\setLR\else\setRL\fi}} - \@ifpackagewith{babel}{bidi=bidi}{\bbl@tempb}{}% - \@ifpackagewith{babel}{bidi=bidi-l}{\bbl@tempb}{}% - \@ifpackagewith{babel}{bidi=bidi-r}{\bbl@tempb}{}% + \def\bbl@pardir#1{\ifcase#1\relax\setLR\else\setRL\fi} + \fi \fi \DeclareRobustCommand\babelsublr[1]{\leavevmode{\bbl@textdir\z@#1}} \AtBeginDocument{% @@ -984,8 +984,6 @@ {\bbl@load@language{\CurrentOption}}% {#1\bbl@load@language{#2}#3}} \DeclareOption{afrikaans}{\bbl@try@load@lang{}{dutch}{}} -\DeclareOption{brazil}{\bbl@try@load@lang{}{portuges}{}} -\DeclareOption{brazilian}{\bbl@try@load@lang{}{portuges}{}} \DeclareOption{hebrew}{% \input{rlbabel.def}% \bbl@load@language{hebrew}} @@ -994,7 +992,6 @@ \DeclareOption{nynorsk}{\bbl@try@load@lang{}{norsk}{}} \DeclareOption{polutonikogreek}{% \bbl@try@load@lang{}{greek}{\languageattribute{greek}{polutoniko}}} -\DeclareOption{portuguese}{\bbl@try@load@lang{}{portuges}{}} \DeclareOption{russian}{\bbl@try@load@lang{}{russianb}{}} \DeclareOption{ukrainian}{\bbl@try@load@lang{}{ukraineb}{}} \DeclareOption{uppersorbian}{\bbl@try@load@lang{}{usorbian}{}} |