[latex3-commits] [git/LaTeX3-latex3-babel] master: Fixes for math - ensure the \mathdir within math and within tables (575b1ed)

Joseph Wright joseph.wright at morningstar2.co.uk
Mon Apr 1 19:40:35 CEST 2019


Repository : https://github.com/latex3/babel
On branch  : master
Link       : https://github.com/latex3/babel/commit/575b1ed1688a9a982d3ddf02df165639621a84a7

>---------------------------------------------------------------

commit 575b1ed1688a9a982d3ddf02df165639621a84a7
Author: Javier Bezos <jbezos at users.noreply.github.com>
Date:   Tue Mar 26 18:03:02 2019 +0100

    Fixes for math - ensure the \mathdir within math and within tables


>---------------------------------------------------------------

575b1ed1688a9a982d3ddf02df165639621a84a7
 babel.dtx |   40 ++++++++++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 10 deletions(-)

diff --git a/babel.dtx b/babel.dtx
index 1497432..ab551fe 100644
--- a/babel.dtx
+++ b/babel.dtx
@@ -31,7 +31,7 @@
 %
 % \iffalse
 %<*filedriver>
-\ProvidesFile{babel.dtx}[2019/03/19 v3.27.1585 The Babel package]
+\ProvidesFile{babel.dtx}[2019/03/26 v3.27.1592 The Babel package]
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
 \usepackage{fontspec}
@@ -2495,7 +2495,7 @@ _\babelprovide[import, main]{arabic}_
 
 \New{3.16} \textit{To be expanded}. Selects which layout elements are
 adapted in bidi documents, including some text elements. You may use
-several options with a comma-separated list (eg,
+several options with a dot-separated list (eg,
 |layout=counters.contents.sectioning|). This list will be expanded in
 future releases (tables, captions, etc.). Note not all options are
 required by all engines.
@@ -3917,8 +3917,8 @@ help from Bernd Raichle, for which I am grateful.
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=3.27.1585>>
-%<<date=2019/03/19>>
+%<<version=3.27.1592>>
+%<<date=2019/03/26>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -9263,6 +9263,7 @@ help from Bernd Raichle, for which I am grateful.
 \ifodd\bbl at engine  % luatex=1
   \AddBabelHook{babel-bidi}{afterextras}{\bbl at switchdir}
   \DisableBabelHook{babel-bidi}
+  \chardef\bbl at thetextdir\z@
   \chardef\bbl at thepardir\z@
   \def\bbl at getluadir#1{%
     \directlua{
@@ -9283,12 +9284,23 @@ help from Bernd Raichle, for which I am grateful.
     \fi}
   \def\bbl at textdir#1{%
     \bbl at setluadir{text}\textdir{#1}% TODO - ?\linedir
+    \chardef\bbl at thetextdir#1\relax
     \setattribute\bbl at attr@dir{\numexpr\bbl at thepardir*3+#1}}
-  \def\bbl at pardir#1{\bbl at setluadir{par}\pardir{#1}%
+  \def\bbl at pardir#1{%
+    \bbl at setluadir{par}\pardir{#1}%
     \chardef\bbl at thepardir#1\relax}
   \def\bbl at bodydir{\bbl at setluadir{body}\bodydir}
   \def\bbl at pagedir{\bbl at setluadir{page}\pagedir}
   \def\bbl at dirparastext{\pardir\the\textdir\relax}%   %%%%
+  % Sadly, we have to deal with boxes in math with basic:
+  \def\bbl at mathboxdir{%
+    \ifcase\bbl at thetextdir\relax
+      \everyhbox{\bgroup\aftergroup\egroup\textdir TLT\relax}%
+    \else
+      \everyhbox{\bgroup\aftergroup\egroup\textdir TRT\relax}%
+    \fi}
+  \everymath{\bbl at mathboxdir}
+  \everydisplay{\bbl at mathboxdir}
 \else % pdftex=0, xetex=2
   \AddBabelHook{babel-bidi}{afterextras}{\bbl at switchdir}
   \DisableBabelHook{babel-bidi}
@@ -11813,9 +11825,9 @@ help from Bernd Raichle, for which I am grateful.
 \fi
 \ifx\bbl at opt@layout\@nnil\endinput\fi  % if no layout
 \ifx\bbl at beforeforeign\leavevmode % A poor test for bidi=
-  \def\bbl at nextfake#1{%
-    \mathdir\bodydir  % non-local, use always inside a group!
+  \def\bbl at nextfake#1{%  non-local changes - always inside a group!
     \bbl at exp{%
+      \mathdir\the\bodydir  
       #1%              Once entered in math, set boxes to restore values
       \everyvbox{%
         \the\everyvbox
@@ -18397,8 +18409,11 @@ local function insert_numeric(head, state)
   return head, new_state
 end
 
--- \hbox with an explicit dir can lead to wrong results
--- <R \hbox dir TLT{<R>}> and <L \hbox dir TRT{<L>}>
+-- TODO - \hbox with an explicit dir can lead to wrong results
+-- <R \hbox dir TLT{<R>}> and <L \hbox dir TRT{<L>}>. A small attempt
+-- is made to improve the situation, but the problem is the 3-dir
+-- model in babel/Unicode and the 2-dir model in LuaTeX don't fit
+-- well.
 
 function Babel.bidi(head, ispar, hdir)
   local d   -- d is used mainly for computations in a loop
@@ -18426,9 +18441,14 @@ function Babel.bidi(head, ispar, hdir)
                  (temp == 2 and 'al')
   elseif ispar then            -- Or error? Shouldn't happen
     save_outer = ('TRT' == tex.pardir) and 'r' or 'l'
-  else
+  else                         -- Or error? Shouldn't happen
     save_outer = ('TRT' == hdir) and 'r' or 'l'
   end
+    -- when the callback is called, we are just _after_ the box,
+    -- and the textdir is that of the surrounding text
+  -- if not ispar and hdir ~= tex.textdir then 
+  --   save_outer = ('TRT' == hdir) and 'r' or 'l'
+  -- end
   local outer = save_outer
   local last = outer
   -- 'al' is only taken into account in the first, current loop





More information about the latex3-commits mailing list