diff options
Diffstat (limited to 'Master/texmf-dist/tex')
20 files changed, 226 insertions, 151 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 3503da721e9..e562be97d57 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 @@ -26,6 +26,7 @@ -- This work has the LPPL maintenance status "maintained". -- -- The Current Maintainer of this work is Javier Bezos. + -- -- The list of derived (unpacked) files belonging to the distribution -- and covered by LPPL is defined by the unpacking scripts (with 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 02e7b7889d1..a4302d0d7f0 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua @@ -26,6 +26,7 @@ -- This work has the LPPL maintenance status "maintained". -- -- The Current Maintainer of this work is Javier Bezos. + -- -- The list of derived (unpacked) files belonging to the distribution -- and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua index 9780a4c8eff..a24e48245db 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua @@ -26,6 +26,7 @@ -- This work has the LPPL maintenance status "maintained". -- -- The Current Maintainer of this work is Javier Bezos. + -- -- The list of derived (unpacked) files belonging to the distribution -- and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua index 26f6dc39632..c02fede6613 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua @@ -26,6 +26,7 @@ -- This work has the LPPL maintenance status "maintained". -- -- The Current Maintainer of this work is Javier Bezos. + -- -- The list of derived (unpacked) files belonging to the distribution -- and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 04fa196156e..4424be14a61 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.def +++ b/Master/texmf-dist/tex/generic/babel/babel.def @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with @@ -39,7 +40,7 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{babel.def}[2021/05/16 3.59 Babel common definitions] +\ProvidesFile{babel.def}[2021/06/02 3.60 Babel common definitions] \ifx\AtBeginDocument\@undefined % TODO. change test. % == Code for plain == \def\@empty{} @@ -397,8 +398,8 @@ \fi \countdef\last@language=19 % TODO. why? remove? \def\addlanguage{\csname newlanguage\endcsname} -\def\bbl@version{3.59} -\def\bbl@date{2021/05/16} +\def\bbl@version{3.60} +\def\bbl@date{2021/06/02} \def\adddialect#1#2{% \global\chardef#1#2\relax \bbl@usehooks{adddialect}{{#1}{#2}}% @@ -618,7 +619,7 @@ \bbl@iflanguage\languagename{% \expandafter\ifx\csname date\languagename\endcsname\relax \bbl@error - {Unknown language `\languagename'. Either you have\\% + {Unknown language '\languagename'. 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. In\\% @@ -771,7 +772,7 @@ \bbl@iflanguage\languagename{% \expandafter\ifx\csname date\languagename\endcsname\relax \bbl@warning % TODO - why a warning, not an error? - {Unknown language `#1'. Either you have\\% + {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. In\\% @@ -904,14 +905,14 @@ Reported}} \def\@nolanerr#1{% \bbl@error - {You haven't defined the language #1\space yet.\\% + {You haven't defined the language '#1' yet.\\% Perhaps you misspelled it or your installation\\% is not complete}% {Your command will be ignored, type <return> to proceed}} \def\@nopatterns#1{% \bbl@warning {No hyphenation patterns were preloaded for\\% - the language `#1' into the format.\\% + the language '#1' into the format.\\% Please, configure your TeX system to add them and\\% rebuild the format. Now I will use the patterns\\% preloaded for \bbl@nulllanguage\space instead}} @@ -1583,7 +1584,7 @@ turned off in the package options}}} \def\@notshorthand#1{% \bbl@error{% - The character `\string #1' should be made a shorthand character;\\% + The character '\string #1' should be made a shorthand character;\\% add the command \string\useshorthands\string{#1\string} to the preamble.\\% I will ignore your instruction}% @@ -1596,7 +1597,7 @@ \ifx#2\@nnil\else \bbl@ifunset{bbl@active@\string#2}% {\bbl@error - {I cannot switch `\string#2' on or off--not a shorthand}% + {I can't switch '\string#2' on or off--not a shorthand}% {This character is not a shorthand. Maybe you made\\% a typing mistake? I will ignore your instruction.}}% {\ifcase#1% off, on, off* @@ -2514,8 +2515,8 @@ % For bidi texts, to switch the font based on direction \ifx\bbl@KVP@mapfont\@nil\else \bbl@ifsamestring{\bbl@KVP@mapfont}{direction}{}% - {\bbl@error{Option `\bbl@KVP@mapfont' unknown for\\% - mapfont. Use `direction'.% + {\bbl@error{Option '\bbl@KVP@mapfont' unknown for\\% + mapfont. Use 'direction'.% {See the manual for details.}}}% \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}% diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index 70e1c6651e6..360f73acce6 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.sty +++ b/Master/texmf-dist/tex/generic/babel/babel.sty @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with @@ -33,7 +34,7 @@ %% \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{babel}[2021/05/16 3.59 The Babel package] +\ProvidesPackage{babel}[2021/06/02 3.60 The Babel package] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% \let\bbl@debug\@firstofone @@ -260,14 +261,14 @@ Reported}} \def\@nolanerr#1{% \bbl@error - {You haven't defined the language #1\space yet.\\% + {You haven't defined the language '#1' yet.\\% Perhaps you misspelled it or your installation\\% is not complete}% {Your command will be ignored, type <return> to proceed}} \def\@nopatterns#1{% \bbl@warning {No hyphenation patterns were preloaded for\\% - the language `#1' into the format.\\% + the language '#1' into the format.\\% Please, configure your TeX system to add them and\\% rebuild the format. Now I will use the patterns\\% preloaded for \bbl@nulllanguage\space instead}} @@ -391,10 +392,10 @@ \bbl@csarg\edef{opt@#1}{#2}% \else \bbl@error - {Bad option `#1=#2'. Either you have misspelled the\\% - key or there is a previous setting of `#1'. Valid\\% - keys are, among others, `shorthands', `main', `bidi',\\% - `strings', `config', `headfoot', `safe', `math'.}% + {Bad option '#1=#2'. Either you have misspelled the\\% + key or there is a previous setting of '#1'. Valid\\% + keys are, among others, 'shorthands', 'main', 'bidi',\\% + 'strings', 'config', 'headfoot', 'safe', 'math'.}% {See the manual for further details.} \fi} \let\bbl@language@opts\@empty @@ -778,8 +779,8 @@ \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\\% + {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 @@ -892,16 +893,20 @@ \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=: - \def\bbl@mathboxdir{% - \ifcase\bbl@thetextdir\relax - \everyhbox{\textdir TLT\relax}% - \else - \everyhbox{\textdir TRT\relax}% - \fi} - \frozen@everymath\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everymath} - \frozen@everydisplay\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everydisplay} + \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@ @@ -1015,7 +1020,7 @@ \expandafter\let\expandafter\BabelModifiers \csname bbl@mod@\CurrentOption\endcsname}% {\bbl@error{% - Unknown option `\CurrentOption'. Either you misspelled it\\% + Unknown option '\CurrentOption'. Either you misspelled it\\% or the language definition file \CurrentOption.ldf was not found}{% Valid options are, among others: shorthands=, KeepShorthandsActive,\\% activeacute, activegrave, noconfigs, safe=, main=, math=\\% @@ -1048,7 +1053,7 @@ * Local config file \bbl@opt@config.cfg used^^J% *}}% {\bbl@error{% - Local config file `\bbl@opt@config.cfg' not found}{% + Local config file '\bbl@opt@config.cfg' not found}{% Perhaps you misspelled it.}}% \fi \let\bbl@tempc\relax @@ -1087,19 +1092,27 @@ \let\bbl@tempb\@nnil \bbl@foreach\@classoptionslist{% \bbl@ifunset{ds@#1}% - {\IfFileExists{#1.ldf}{}% - {\IfFileExists{babel-#1.tex}{}{\@namedef{ds@#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}}% + {\IfFileExists{#1.ldf}% + {\def\bbl@tempb{#1}% + \DeclareOption{#1}{% + \ifnum\bbl@iniflag>\@ne + \bbl@ldfinit + \babelprovide[import]{#1}% + \bbl@afterldf{}% + \else + \bbl@load@language{#1}% + \fi}}% + {\IfFileExists{babel-#1.tex}% TODO. Copypaste pattern + {\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 @@ -1130,10 +1143,10 @@ \expandafter\bbl@tempa\bbl@loaded,\@nnil \ifx\bbl@tempb\bbl@tempc\else \bbl@warning{% - Last declared language option is `\bbl@tempc',\\% - but the last processed one was `\bbl@tempb'.\\% - The main language cannot be set as both a global\\% - and a package option. Use `main=\bbl@tempc' as\\% + Last declared language option is '\bbl@tempc',\\% + but the last processed one was '\bbl@tempb'.\\% + The main language can't be set as both a global\\% + and a package option. Use 'main=\bbl@tempc' as\\% option. Reported}% \fi \else diff --git a/Master/texmf-dist/tex/generic/babel/blplain.tex b/Master/texmf-dist/tex/generic/babel/blplain.tex index 3b0c004c4be..a77b8cb7b28 100644 --- a/Master/texmf-dist/tex/generic/babel/blplain.tex +++ b/Master/texmf-dist/tex/generic/babel/blplain.tex @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/bplain.tex b/Master/texmf-dist/tex/generic/babel/bplain.tex index a13e756d75d..cec974bf868 100644 --- a/Master/texmf-dist/tex/generic/babel/bplain.tex +++ b/Master/texmf-dist/tex/generic/babel/bplain.tex @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg index 6ff6f771f40..784954b2763 100644 --- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg +++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with @@ -37,10 +38,10 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{hyphen.cfg}[2021/05/16 3.59 Babel hyphens] +\ProvidesFile{hyphen.cfg}[2021/06/02 3.60 Babel hyphens] \xdef\bbl@format{\jobname} -\def\bbl@version{3.59} -\def\bbl@date{2021/05/16} +\def\bbl@version{3.60} +\def\bbl@date{2021/06/02} \ifx\AtBeginDocument\@undefined \def\@empty{} \let\orig@dump\dump 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 f32f321a07a..25830fb3d79 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.7 -date = 2020-10-11 +version = 1.8 +date = 2021-05-31 name.local = العربية name.english = Arabic name.babel = arabic-algeria arabic-dz @@ -177,3 +177,10 @@ superscriptingExponent = × [counters] abjad = ا ب ج د ه و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث خ ذ ض ظ غ maghrebi.abjad = ا ب ج د ه و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش + +[transforms.prehyphenation] +kashida.plain.1.0 ={ +()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] } +kashida.plain.1.1 = { kashida = 500 } +kashida.plain.2.0 = { ()ل()[اأإآ] } +kashida.plain.2.1 = { kashida = 0 } 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 d21f5552c1d..df60cba8139 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.7 -date = 2020-10-11 +version = 1.8 +date = 2021-05-31 name.local = العربية name.english = Arabic name.babel = arabic-morocco arabic-ma @@ -177,3 +177,10 @@ superscriptingExponent = × [counters] abjad = ا ب ج د ه و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث خ ذ ض ظ غ maghrebi.abjad = ا ب ج د ه و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش + +[transforms.prehyphenation] +kashida.plain.1.0 ={ +()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] } +kashida.plain.1.1 = { kashida = 500 } +kashida.plain.2.0 = { ()ل()[اأإآ] } +kashida.plain.2.1 = { kashida = 0 } 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 df022187557..fd55a5f7a4e 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.7 -date = 2020-10-11 +version = 1.8 +date = 2021-05-31 name.local = العربية name.english = Arabic name.babel = arabic-syria arabic-sy @@ -177,3 +177,10 @@ superscriptingExponent = × abjad = ا ب ج د ه و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث خ ذ ض ظ غ maghrebi.abjad = ا ب ج د ه و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش +[transforms.prehyphenation] +kashida.plain.1.0 ={ +()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] } +kashida.plain.1.1 = { kashida = 500 } +kashida.plain.2.0 = { ()ل()[اأإآ] } +kashida.plain.2.1 = { kashida = 0 } + 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 b5ac99ccdaa..6aba96a20e5 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.10 -date = 2021-05-16 +version = 1.11 +date = 2021-05-31 name.local = العربية name.english = Arabic name.babel = arabic @@ -208,7 +208,8 @@ transliteration.dad.7.2 = { string = {1|AauiIbnf|آأؤإئٮںڡ} } transliteration.dad.8.0 = { ([{007C}AbtjHxdrzsSDTZ`RfqklmnhUIYaui+opCvgJe]) } transliteration.dad.8.1 = { string = {1|{007C}AbtjHxdrzsSDTZ`RfqklmnhUIYaui+opCvgJe|ءابتجحخدرزسصضطظعغفقكلمنهوىيَُِّْپچڤگژۀ} } ; -kashida.plain.1.0 = { ()[يئهشسقفغعضصنمكلظطخحجثتب]()[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] } +kashida.plain.1.0 ={ +()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] } kashida.plain.1.1 = { kashida = 500 } kashida.plain.2.0 = { ()ل()[اأإآ] } kashida.plain.2.1 = { kashida = 0 } diff --git a/Master/texmf-dist/tex/generic/babel/locale/eu/babel-eu.ini b/Master/texmf-dist/tex/generic/babel/locale/eu/babel-eu.ini index 3fd225f1097..692192844f0 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/eu/babel-eu.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/eu/babel-eu.ini @@ -11,8 +11,8 @@ [identification] charset = utf8 -version = 1.2 -date = 2020-06-30 +version = 1.3 +date = 2021-05-31 name.local = euskara name.english = Basque name.babel = basque @@ -33,13 +33,17 @@ preface = Hitzaurrea ref = Erreferentziak abstract = Laburpena bib = Bibliografia +chapter.template = [chapter].[ ][[chapter]] chapter = Kapitulua appendix = Eranskina +appendix.template = [chapter].[ ][[appendix]] contents = Gaien Aurkibidea listfigure = Irudien Zerrenda listtable = Taulen Zerrenda index = Kontzeptuen Aurkibidea +figure.template = [figure].[ ][[figure]] figure = Irudia +table.template = [table].[ ][[table]] table = Taula part = Atala encl = Erantsia diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def index 51225cfa08a..62687deafa9 100644 --- a/Master/texmf-dist/tex/generic/babel/luababel.def +++ b/Master/texmf-dist/tex/generic/babel/luababel.def @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with @@ -621,9 +622,23 @@ Babel.arabic.justify_enabled = true function Babel.arabic.justify(head) if not Babel.arabic.justify_enabled then return head end + for line in node.traverse_id(node.id'hlist', head) do + Babel.arabic.justify_hlist(head, line) + end + return head +end + +function Babel.arabic.justify_hbox(head, gc, size, pack) + if Babel.arabic.justify_enabled and pack == 'exactly' then + Babel.arabic.justify_hlist(head, nil, gc, size, pack) + end + return head +end + +function Babel.arabic.justify_hlist(head, line, gc, size, pack) local d, new local k_list, k_item, pos_inline - local width, width_new, full, k_curr, wt_pos, goal + local width, width_new, full, k_curr, wt_pos, goal, shift local subst_done = false local elong_map = Babel.arabic.elong_map local last_line @@ -631,102 +646,110 @@ function Babel.arabic.justify(head) local KASHIDA = luatexbase.registernumber'bblar@kashida' local LOCALE = luatexbase.registernumber'bbl@attr@locale' - for line in node.traverse_id(node.id'hlist', head) do - % Exclude last line. todo. But-- it discards one-word lines, too! - % ? Look for glue = 12:15 - if (line.glue_sign == 1 and line.glue_order == 0) then - elongs = {} % Stores elongated candidates of each line - k_list = {} % And all letters with kashida - pos_inline = 0 % Not yet used - - for n in node.traverse_id(GLYPH, line.head) do - pos_inline = pos_inline + 1 % To find where it is. Not used. - - % Elongated glyphs - if elong_map then - local locale = node.get_attribute(n, LOCALE) - if elong_map[locale] and elong_map[locale][n.font] and - elong_map[locale][n.font][n.char] then - table.insert(elongs, {node = n, locale = locale} ) - node.set_attribute(n.prev, KASHIDA, 0) - end - end + if line == nil then + line = {} + line.glue_sign = 1 + line.glue_order = 0 + line.head = head + line.shift = 0 + line.width = size + end - % Tatwil - if Babel.kashida_wts then - local k_wt = node.get_attribute(n, KASHIDA) - if k_wt > 0 then % todo. parameter for multi inserts - table.insert(k_list, {node = n, weight = k_wt, pos = pos_inline}) - end + % Exclude last line. todo. But-- it discards one-word lines, too! + % ? Look for glue = 12:15 + if (line.glue_sign == 1 and line.glue_order == 0) then + elongs = {} % Stores elongated candidates of each line + k_list = {} % And all letters with kashida + pos_inline = 0 % Not yet used + + for n in node.traverse_id(GLYPH, line.head) do + pos_inline = pos_inline + 1 % To find where it is. Not used. + + % Elongated glyphs + if elong_map then + local locale = node.get_attribute(n, LOCALE) + if elong_map[locale] and elong_map[locale][n.font] and + elong_map[locale][n.font][n.char] then + table.insert(elongs, {node = n, locale = locale} ) + node.set_attribute(n.prev, KASHIDA, 0) end + end - end % of node.traverse_id - - if #elongs == 0 and #k_list == 0 then goto next_line end - - full = line.width - goal = full * Babel.arabic.justify_factor % A bit crude - width = node.dimensions(line.head) % The 'natural' width - - % == Elongated == - % Original idea taken from 'chikenize' - while (#elongs > 0 and width < goal) do - subst_done = true - local x = #elongs - local curr = elongs[x].node - local oldchar = curr.char - curr.char = elong_map[elongs[x].locale][curr.font][curr.char] - width = node.dimensions(line.head) % Check if the line is too wide - % Substitute back if the line would be too wide and break: - if width > goal then - curr.char = oldchar - break + % Tatwil + if Babel.kashida_wts then + local k_wt = node.get_attribute(n, KASHIDA) + if k_wt > 0 then % todo. parameter for multi inserts + table.insert(k_list, {node = n, weight = k_wt, pos = pos_inline}) end - % If continue, pop the just substituted node from the list: - table.remove(elongs, x) end - % == Tatwil == - if #k_list == 0 then goto next_line end - - width = node.dimensions(line.head) % The 'natural' width - k_curr = #k_list - wt_pos = 1 - - while width < goal do - subst_done = true - k_item = k_list[k_curr].node - if k_list[k_curr].weight == Babel.kashida_wts[wt_pos] then - d = node.copy(k_item) - d.char = 0x0640 - line.head, new = node.insert_after(line.head, k_item, d) - width_new = node.dimensions(line.head) - if width > goal or width == width_new then - node.remove(line.head, new) % Better compute before - break - end - width = width_new - end - if k_curr == 1 then - k_curr = #k_list - wt_pos = (wt_pos >= table.getn(Babel.kashida_wts)) and 1 or wt_pos+1 - else - k_curr = k_curr - 1 + end % of node.traverse_id + + if #elongs == 0 and #k_list == 0 then goto next_line end + full = line.width + shift = line.shift + goal = full * Babel.arabic.justify_factor % A bit crude + width = node.dimensions(line.head) % The 'natural' width + + % == Elongated == + % Original idea taken from 'chikenize' + while (#elongs > 0 and width < goal) do + subst_done = true + local x = #elongs + local curr = elongs[x].node + local oldchar = curr.char + curr.char = elong_map[elongs[x].locale][curr.font][curr.char] + width = node.dimensions(line.head) % Check if the line is too wide + % Substitute back if the line would be too wide and break: + if width > goal then + curr.char = oldchar + break + end + % If continue, pop the just substituted node from the list: + table.remove(elongs, x) + end + + % == Tatwil == + if #k_list == 0 then goto next_line end + + width = node.dimensions(line.head) % The 'natural' width + k_curr = #k_list + wt_pos = 1 + + while width < goal do + subst_done = true + k_item = k_list[k_curr].node + if k_list[k_curr].weight == Babel.kashida_wts[wt_pos] then + d = node.copy(k_item) + d.char = 0x0640 + line.head, new = node.insert_after(line.head, k_item, d) + width_new = node.dimensions(line.head) + if width > goal or width == width_new then + node.remove(line.head, new) % Better compute before + break end + width = width_new + end + if k_curr == 1 then + k_curr = #k_list + wt_pos = (wt_pos >= table.getn(Babel.kashida_wts)) and 1 or wt_pos+1 + else + k_curr = k_curr - 1 end + end - ::next_line:: + ::next_line:: - % Must take into account marks and ins, see luatex manual. - % Have to be executed only if there are changes. Investigate - % what's going on exactly. - if subst_done then - node.insert_before(head, line, node.hpack(line.head, full, 'exactly')) - node.remove(head, line) - end - end % if process line - end % for lines - return head + % Must take into account marks and ins, see luatex manual. + % Have to be executed only if there are changes. Investigate + % what's going on exactly. + if subst_done and not gc then + d = node.hpack(line.head, full, 'exactly') + d.shift = shift + node.insert_before(head, line, d) + node.remove(head, line) + end + end % if process line end } \endgroup diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf index 1ad201a54bc..3728df9505c 100644 --- a/Master/texmf-dist/tex/generic/babel/nil.ldf +++ b/Master/texmf-dist/tex/generic/babel/nil.ldf @@ -26,13 +26,14 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% -\ProvidesLanguage{nil}[2021/05/16 3.59 Nil language] +\ProvidesLanguage{nil}[2021/06/02 3.60 Nil language] \LdfInit{nil}{datenil} \ifx\l@nil\@undefined \newlanguage\l@nil diff --git a/Master/texmf-dist/tex/generic/babel/plain.def b/Master/texmf-dist/tex/generic/babel/plain.def index 0b4de729599..97b5ab1674c 100644 --- a/Master/texmf-dist/tex/generic/babel/plain.def +++ b/Master/texmf-dist/tex/generic/babel/plain.def @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def index 7a78871d675..3f758a341e3 100644 --- a/Master/texmf-dist/tex/generic/babel/switch.def +++ b/Master/texmf-dist/tex/generic/babel/switch.def @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/txtbabel.def b/Master/texmf-dist/tex/generic/babel/txtbabel.def index 3dea58fbca1..5305b7de214 100644 --- a/Master/texmf-dist/tex/generic/babel/txtbabel.def +++ b/Master/texmf-dist/tex/generic/babel/txtbabel.def @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def index 9bacbb05ba1..4530a62f55e 100644 --- a/Master/texmf-dist/tex/generic/babel/xebabel.def +++ b/Master/texmf-dist/tex/generic/babel/xebabel.def @@ -26,6 +26,7 @@ %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Javier Bezos. + %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with |