
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 hebrew
se 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.def
tiene:
\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