Konflikt zwischen Babel-Hebräisch und Arabisch

Konflikt zwischen Babel-Hebräisch und Arabisch

Betrachten Sie das folgende 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}

Dies bricht mit

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

Wenn jedoch hebrewnach geladen wird farsi, erfolgt die Kompilierung problemlos.

Meiner Ansicht nach liegt dies an einer Neudefinition in rlbabel.def(verwendet im Hebräischen), die nicht mit einer Neudefinition in arabicore.sty(verwendet im Farsi) vereinbar ist.

rlbabel.defhat:

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

Und 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 

Habe ich Recht, dass das Problem die vorherige Definition ist, die ein Argument zu hinzufügt \everypar? Wie könnte das am elegantesten behoben werden? Auch wenn beide Pakete seit einiger Zeit keine Updates mehr gesehen haben, würde ich gerne einen Fehlerbericht einreichen, bin mir aber nicht sicher, für welches Paket. Hinweise sind herzlich willkommen.

(Ich weiß, dass man heutzutage LuaTeX/XeTeX verwenden kann, aber darum geht es hier nicht. Ich versuche wirklich, bei der Behebung dieses speziellen Falls zu helfen.)

BEARBEITEN:Dies wäre mein bescheidener Versuch. Dies behebt die Kompilierung, aber ich bin nicht sicher, ob es wirklich das tut, was die Originalversion getan hat:

--- /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

verwandte Informationen