summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/luababel.def
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-01-23 20:51:12 +0000
committerKarl Berry <karl@freefriends.org>2023-01-23 20:51:12 +0000
commitaa7c8bc1bbf21c5187a60ab38e2b96a12fac21a8 (patch)
tree8cfb544fa92af28b0ee61d6324963e1c779ba416 /Master/texmf-dist/tex/generic/babel/luababel.def
parent9dbf0a9ef83c156ec53ed1ce64cf67a1c3ba3efe (diff)
babel (23jan23)
git-svn-id: svn://tug.org/texlive/trunk@65611 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/luababel.def')
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def125
1 files changed, 110 insertions, 15 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index 30f8c2000db..73804ad768d 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `luatex')
%%
%%
-%% Copyright (C) 2012-2022 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2023 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -379,9 +379,13 @@ end
Babel.linebreaking.before = {}
Babel.linebreaking.after = {}
Babel.locale = {} % Free to use, indexed by \localeid
- function Babel.linebreaking.add_before(func)
+ function Babel.linebreaking.add_before(func, pos)
tex.print([[\noexpand\csname bbl@luahyphenate\endcsname]])
- table.insert(Babel.linebreaking.before, func)
+ if pos == nil then
+ table.insert(Babel.linebreaking.before, func)
+ else
+ table.insert(Babel.linebreaking.before, pos, func)
+ end
end
function Babel.linebreaking.add_after(func)
tex.print([[\noexpand\csname bbl@luahyphenate\endcsname]])
@@ -896,7 +900,7 @@ end
\global\let\<bbl@##1dflt@\languagename>%
\<bbl@##1dflt@*\bbl@tempa>}}}%
{}}% 1=T - language, already defined
- \def\bbl@tempa{\bbl@nostdfont{}}%
+ \def\bbl@tempa{\bbl@nostdfont{}}% TODO. Don't use \bbl@tempa
\bbl@foreach\bbl@font@fams{% don't gather with prev for
\bbl@ifunset{bbl@##1dflt@\languagename}%
{\bbl@cs{famrst@##1}%
@@ -1196,8 +1200,36 @@ end
\fi}}&%
\let\bbl@kv@attribute\relax
\let\bbl@kv@label\relax
+ \let\bbl@kv@fonts\@empty
\bbl@forkv{#2}{\bbl@csarg\edef{kv@##1}{##2}}&%
- \ifx\bbl@kv@attribute\relax\else
+ \ifx\bbl@kv@fonts\@empty\else\bbl@settransfont\fi
+ \ifx\bbl@kv@attribute\relax
+ \ifx\bbl@kv@label\relax\else
+ \bbl@exp{\\\bbl@trim@def\\\bbl@kv@fonts{\bbl@kv@fonts}}&%
+ \bbl@replace\bbl@kv@fonts{ }{,}&%
+ \edef\bbl@kv@attribute{bbl@ATR@\bbl@kv@label @#3@\bbl@kv@fonts}&%
+ \count@\z@
+ \def\bbl@elt##1##2##3{&%
+ \bbl@ifsamestring{#3,\bbl@kv@label}{##1,##2}&%
+ {\bbl@ifsamestring{\bbl@kv@fonts}{##3}&%
+ {\count@\@ne}&%
+ {\bbl@error
+ {Transforms cannot be re-assigned to different\\&%
+ fonts. The conflict is in '\bbl@kv@label'.\\&%
+ Apply the same fonts or use a different label}&%
+ {See the manual for further details.}}}&%
+ {}}&%
+ \bbl@transfont@list
+ \ifnum\count@=\z@
+ \bbl@exp{\global\\\bbl@add\\\bbl@transfont@list
+ {\\\bbl@elt{#3}{\bbl@kv@label}{\bbl@kv@fonts}}}&%
+ \fi
+ \bbl@ifunset{\bbl@kv@attribute}&%
+ {\global\bbl@carg\newattribute{\bbl@kv@attribute}}&%
+ {}&%
+ \global\bbl@carg\setattribute{\bbl@kv@attribute}\@ne
+ \fi
+ \else
\edef\bbl@kv@attribute{\expandafter\bbl@stripslash\bbl@kv@attribute}&%
\fi
\directlua{
@@ -1243,6 +1275,49 @@ end
}&%
\endgroup}
\endgroup
+\let\bbl@transfont@list\@empty
+\def\bbl@settransfont{%
+ \global\let\bbl@settransfont\relax % Execute only once
+ \gdef\bbl@transfont{%
+ \def\bbl@elt####1####2####3{%
+ \bbl@ifblank{####3}%
+ {\count@\tw@}% Do nothing if no fonts
+ {\count@\z@
+ \bbl@vforeach{####3}{%
+ \def\bbl@tempd{########1}%
+ \edef\bbl@tempe{\bbl@transfam/\f@series/\f@shape}%
+ \ifx\bbl@tempd\bbl@tempe
+ \count@\@ne
+ \else\ifx\bbl@tempd\bbl@transfam
+ \count@\@ne
+ \fi\fi}%
+ \ifcase\count@
+ \bbl@csarg\unsetattribute{ATR@####2@####1@####3}%
+ \or
+ \bbl@csarg\setattribute{ATR@####2@####1@####3}\@ne
+ \fi}}%
+ \bbl@transfont@list}%
+ \AddToHook{selectfont}{\bbl@transfont}% Hooks are global.
+ \gdef\bbl@transfam{-unknown-}%
+ \bbl@foreach\bbl@font@fams{%
+ \AddToHook{##1family}{\def\bbl@transfam{##1}}%
+ \bbl@ifsamestring{\@nameuse{##1default}}\familydefault
+ {\xdef\bbl@transfam{##1}}%
+ {}}}
+\DeclareRobustCommand\enablelocaletransform[1]{%
+ \bbl@ifunset{bbl@ATR@#1@\languagename @}%
+ {\bbl@error
+ {'#1' for '\languagename' cannot be enabled.\\%
+ Maybe there is a typo or it’s a font-dependent transform}%
+ {See the manual for further details.}}%
+ {\bbl@csarg\setattribute{ATR@#1@\languagename @}\@ne}}
+\DeclareRobustCommand\disablelocaletransform[1]{%
+ \bbl@ifunset{bbl@ATR@#1@\languagename @}%
+ {\bbl@error
+ {'#1' for '\languagename' cannot be disabled.\\%
+ Maybe there is a typo or it’s a font-dependent transform}%
+ {See the manual for further details.}}%
+ {\bbl@csarg\unsetattribute{ATR@#1@\languagename @}}}
\def\bbl@activateposthyphen{%
\let\bbl@activateposthyphen\relax
\directlua{
@@ -1334,6 +1409,7 @@ end
\def\bbl@textdir#1{%
\bbl@setluadir{text}\textdir{#1}%
\chardef\bbl@thetextdir#1\relax
+ % par/text 0..8 = l/l l/r l/al r/l r/r r/al al/l al/r al/al
\edef\bbl@thedir{\the\numexpr\bbl@thepardir*3+#1}%
\setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}}
\def\bbl@pardir#1{%
@@ -1344,23 +1420,36 @@ end
\def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%%
\ifnum\bbl@bidimode>\z@
\def\bbl@insidemath{0}%
- \def\bbl@everymath{\def\bbl@insidemath{1}}
- \def\bbl@everydisplay{\def\bbl@insidemath{2}}
+ \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}}
+ \def\bbl@everymath{\bbl@mathboxdir}
+ \def\bbl@everydisplay{%
+ \bbl@mathboxdir
+ \def\bbl@everymath{\bbl@mathboxdir}}
\frozen@everymath\expandafter{%
\expandafter\bbl@everymath\the\frozen@everymath}
\frozen@everydisplay\expandafter{%
\expandafter\bbl@everydisplay\the\frozen@everydisplay}
\AtBeginDocument{
\directlua{
+ Babel.use_math_box_dir = true
function Babel.math_box_dir(head)
- if not (token.get_macro('bbl@insidemath') == '0') then
- if Babel.hlist_has_bidi(head) then
- local d = node.new(node.id'dir')
- d.dir = '+TRT'
- node.insert_before(head, node.has_glyph(head), d)
- for item in node.traverse(head) do
- node.set_attribute(item,
- Babel.attr_dir, token.get_macro('bbl@thedir'))
+ if Babel.use_math_box_dir then
+ if not (token.get_macro('bbl@insidemath') == '0') then
+ if Babel.hlist_has_bidi(head) then
+ local d = node.new(node.id'dir')
+ d.dir = '+TRT'
+ node.insert_before(head, node.has_glyph(head), d)
+ for item in node.traverse(head) do
+ node.set_attribute(item,
+ Babel.attr_dir, token.get_macro('bbl@thedir'))
+ end
end
end
end
@@ -1403,6 +1492,7 @@ end
\ifx\maketag@@@\@undefined % Normal equation, eqnarray
\AddToHook{env/equation/begin}{%
\ifnum\bbl@thetextdir>\z@
+ \def\bbl@mathboxdir{\def\bbl@insidemath{1}}%
\let\@eqnnum\bbl@eqnum
\edef\bbl@eqnodir{\noexpand\bbl@textdir{\the\bbl@thetextdir}}%
\chardef\bbl@thetextdir\z@
@@ -1418,6 +1508,8 @@ end
\fi
\AddToHook{env/eqnarray/begin}{%
\ifnum\bbl@thetextdir>\z@
+ \def\bbl@mathboxdir{\def\bbl@insidemath{1}}
+ \def\bbl@mathboxdir{\def\bbl@insidemath{1}}%
\edef\bbl@eqnodir{\noexpand\bbl@textdir{\the\bbl@thetextdir}}%
\chardef\bbl@thetextdir\z@
\bbl@add\normalfont{\bbl@eqnodir}%
@@ -1455,6 +1547,7 @@ end
\hbox to 0.01pt{\hbox to\displaywidth{\hss{#1}}\hss}}%
\fi
\def\bbl@ams@preset#1{%
+ \def\bbl@mathboxdir{\def\bbl@insidemath{1}}%
\ifnum\bbl@thetextdir>\z@
\edef\bbl@eqnodir{\noexpand\bbl@textdir{\the\bbl@thetextdir}}%
\bbl@sreplace\textdef@{\hbox}{\bbl@ams@tagbox\hbox}%
@@ -1462,6 +1555,7 @@ end
\fi}%
\ifnum\bbl@eqnpos=\tw@\else
\def\bbl@ams@equation{%
+ \def\bbl@mathboxdir{\def\bbl@insidemath{1}}%
\ifnum\bbl@thetextdir>\z@
\edef\bbl@eqnodir{\noexpand\bbl@textdir{\the\bbl@thetextdir}}%
\chardef\bbl@thetextdir\z@
@@ -1487,6 +1581,7 @@ end
\\\AddToHook{env/align*/end}{\<iftag@>\<else>\\\tag*{}\<fi>}}%
\AddToHook{env/flalign/begin}{\bbl@ams@preset\hbox}%
\AddToHook{env/split/before}{%
+ \def\bbl@mathboxdir{\def\bbl@insidemath{1}}%
\ifnum\bbl@thetextdir>\z@
\bbl@ifsamestring\@currenvir{equation}%
{\ifx\bbl@ams@lap\hbox % leqno