Conflicto entre babel-hebreo y árabe

Conflicto entre babel-hebreo y árabe

Considere el siguiente MWE:

\documentclass[
    hebrew,% breaks
    farsi,% or arabic
%   hebrew,% compiles
    english]{article}

\usepackage[LAE,LFE,T1]{fontenc}
\usepackage[cp1255,utf8,latin9]{inputenc}

\usepackage{babel}

\begin{document}

Hello.

\end{document}

Esto rompe con

! Argument of \o@everypar has an extra }. <inserted text> 
                 \par  l.126    \n@everypar\expandafter{\the\o@everypar}

Sin embargo, si hebrewse carga después farsi, se compila bien.

Me parece que esto se debe a una redefinición en rlbabel.def(usada por el hebreo) que es incompatible con una redefinición en arabicore.sty(usada por el farsi).

rlbabel.deftiene:

\def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi}
\let\o@everypar=\everypar
\def\everypar#1{\o@everypar{\rl@everypar#1}}

y arabicore.sty:

\def\Arabi@rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi} 
   \let\o@everypar=\everypar 
   \newtoks\n@everypar 
   \n@everypar\expandafter{\the\o@everypar} 
   \o@everypar{\Arabi@rl@everypar\the\n@everypar} 
   \let\everypar=\n@everypar 

¿Tengo razón en que el problema es la definición anterior que agrega un argumento \everypar? ¿Cómo podría solucionarse esto de la forma más elegante? Incluso si ambos paquetes no han recibido actualizaciones durante algún tiempo, me gustaría enviar un informe de error, pero no estoy seguro de qué paquete. Consejos muy bienvenidos.

(Sé que hoy en día se puede usar LuaTeX/XeTeX, pero eso no está en juego aquí. Realmente trato de ayudar a solucionar este caso en particular)

EDITAR:Este sería mi humilde intento. Esto corrige la compilación, pero no estoy seguro de que realmente haga lo que hacía la versión original:

--- /tmp/meld-tmprm047c5p
+++ /home/juergen/texmf/tex/generic/babel/rlbabel.def
@@ -136,8 +136,11 @@
 \def\@ensure@R#1{\if@rl#1\else\R{#1}\fi}
 \def\@ensure@L#1{\if@rl\L{#1}\else#1\fi}
 \def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi}
-\let\o@everypar=\everypar
-\def\everypar#1{\o@everypar{\rl@everypar#1}}
+\let\rl@o@everypar=\everypar
+\newtoks\rl@n@everypar
+\rl@n@everypar\expandafter{\the\rl@o@everypar}
+\rl@o@everypar{\rl@everypar\the\rl@n@everypar}
+\let\everypar=\rl@n@everypar
 \newcommand{\hmbox}[1]{\mbox{\R{#1}}}
 \newcommand{\embox}[1]{\mbox{\L{#1}}}
 \def\@brackets#1#2#3{\protect\if@rl #3#2#1\protect\else
@@ -289,7 +292,7 @@
        \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss#2}}\par
        \nobreak
          \global\@nobreaktrue
-         \everypar{\global\@nobreakfalse\everypar{}}%
+         \def\rl@everypar{\global\@nobreakfalse\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi}%
     \endgroup
   \fi}}}
 \@ifclassloaded{article}{% article class

información relacionada