63.6 Right-to-Left Babel

<..rlbabel.4ht..>
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % rlbabel.4ht                           2014-07-12-22:36 %
 % Copyright (C) 2001--2009       Eitan M. Gurari         %
 <.TeX4ht copyright.>
 <.rlbabel def.>
 \Hinput{rlbabel}
 \endinput
 -_-_-

<..rlbabel def..>
 \let\ht:everypar=\o@everypar
 \def\L{\protect\pL}
 \def\R{\protect\pR}
 \Configure{@:currentlabel}
   {\let\special\:gobble
    \let\protect\empty
    \let\o:beginL:=\empty
    \let\o:endL:=\empty
    \Configure{Lregion}{}{}%
   }
 -_-_-

tex4ht.sty indert Rregion and Lregion end hooks within \beginL/R and \endL/R, mainly to void the inverse produced by the elatex compiler. The latter commands are native to elatex. We need to be carefull how we configure them, since they are not always nested nicely within groups.

<..rlbabel def..>+
 \def\:tempc{\a:moreR\bracetext \aftergroup\endR
   \aftergroup\b:moreR \beginR\csname
   to\@rllanguagename\endcsname}
 \HLet\moreR=\:tempc
 \NewConfigure{moreR}{2}
 -_-_-

<..rlbabel def..>+
 \def\:tempc{\a:moreL\bracetext \aftergroup\endL
   \aftergroup\b:moreL \beginL\csname
   from\@rllanguagename\endcsname}
 \HLet\moreL=\:tempc
 \NewConfigure{moreL}{2}
 -_-_-

<..rlbabel def..>+
 \NewConfigure{$$}[3]{%
    \def\a:display{\bgroup#1}%
    \def\b:display{#2\egroup \if@rl\else \beginL\fi}%
    \def\c:display{#3}%
    \everydisplay{\ifx \EndPicture\:UnDef
         $$\a:display\everymath{}\everydisplay{}$$
               \aftergroup\b:display \c:display\fi}}
 \let\rl:b:display\b:display
 \let\rl:c:display\c:display
 \let\rl:a:display\a:display
 \Configure{$$}{\rl:a:display}{\rl:b:display}{\rl:c:display}
 -_-_-