summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/luababel.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/luababel.def')
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def77
1 files changed, 71 insertions, 6 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index 5f489e8062d..fb2459868e8 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -417,7 +417,7 @@
\let\bbl@cjkintraspace\relax
\directlua{
Babel = Babel or {}
- require'babel-data-cjk.lua'
+ require('babel-data-cjk.lua')
Babel.cjk_enabled = true
function Babel.cjk_linebreak(head)
local GLYPH = node.id'glyph'
@@ -1413,21 +1413,86 @@ end
\ifcase\bbl@thetextdir
\let\bbl@pictresetdir\relax
\else
- \bodydir TLT
+ \ifcase#1\bodydir TLT % Remember this sets the inner boxes
+ \or\textdir TLT
+ \else\bodydir TLT \textdir TLT
+ \fi
% \(text|par)dir required in pgf:
\def\bbl@pictresetdir{\bodydir TRT\pardir TRT\textdir TRT\relax}%
\fi}%
\ifx\AddToHook\@undefined\else
- \AddToHook{env/picture/begin}{\bbl@pictsetdir\z@}%
+ \AddToHook{env/picture/begin}{\bbl@pictsetdir\tw@}%
+ \directlua{
+ Babel.get_picture_dir = true
+ Babel.picture_has_bidi = 0
+ function Babel.picture_dir (head)
+ if not Babel.get_picture_dir then return head end
+ for item in node.traverse(head) do
+ if item.id == node.id'glyph' then
+ local itemchar = item.char
+ % TODO. Copypaste pattern from Babel.bidi (-r)
+ local chardata = Babel.characters[itemchar]
+ local dir = chardata and chardata.d or nil
+ if not dir then
+ for nn, et in ipairs(Babel.ranges) do
+ if itemchar < et[1] then
+ break
+ elseif itemchar <= et[2] then
+ dir = et[3]
+ break
+ end
+ end
+ end
+ if dir and (dir == 'al' or dir == 'r') then
+ Babel.picture_has_bidi = 1
+ end
+ end
+ end
+ return head
+ end
+ luatexbase.add_to_callback("hpack_filter", Babel.picture_dir,
+ "Babel.picture_dir")
+ }%
+ \AtBeginDocument{%
+ \long\def\put(#1,#2)#3{%
+ \@killglue
+ % Try:
+ \ifx\bbl@pictresetdir\relax
+ \def\bbl@tempc{0}%
+ \else
+ \directlua{
+ Babel.get_picture_dir = true
+ Babel.picture_has_bidi = 0
+ }%
+ \setbox\z@\hb@xt@\z@{%
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \kern\@tempdimc
+ #3\hss}%
+ \edef\bbl@tempc{\directlua{tex.print(Babel.picture_has_bidi)}}%
+ \fi
+ % Do:
+ \@defaultunitsset\@tempdimc{#2}\unitlength
+ \raise\@tempdimc\hb@xt@\z@{%
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \kern\@tempdimc
+ {\ifnum\bbl@tempc>\z@\bbl@pictresetdir\fi#3}\hss}%
+ \ignorespaces}%
+ \MakeRobust\put}%
\fi
\AtBeginDocument
{\ifx\tikz@atbegin@node\@undefined\else
\let\bbl@OL@pgfpicture\pgfpicture
\bbl@sreplace\pgfpicture{\pgfpicturetrue}%
- {\bbl@pictsetdir\@ne\pgfpicturetrue}%
- \bbl@add\pgfsys@beginpicture{\bbl@pictsetdir\@ne}%
+ {\bbl@pictsetdir\z@\pgfpicturetrue}%
+ \bbl@add\pgfsys@beginpicture{\bbl@pictsetdir\z@}%
\bbl@add\tikz@atbegin@node{\bbl@pictresetdir}%
- \fi}}
+ \bbl@sreplace\tikz{\begingroup}%
+ {\begingroup\bbl@pictsetdir\tw@}%
+ \fi
+ \ifx\AddToHook\@undefined\else
+ \AddToHook{env/tcolorbox/begin}{\bbl@pictsetdir\@ne}%
+ \fi
+ }}
{}
\IfBabelLayout{counters}%
{\let\bbl@OL@@textsuperscript\@textsuperscript