
Considere o seguinte 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}
Isso rompe com
! Argument of \o@everypar has an extra }. <inserted text>
\par l.126 \n@everypar\expandafter{\the\o@everypar}
Se hebrew
for carregado depois farsi
, no entanto, ele compilará bem.
Parece-me que isso se deve a uma redefinição em rlbabel.def
(usada pelo hebraico) que é incompatível com uma redefinição em arabicore.sty
(usada pelo farsi).
rlbabel.def
tem:
\def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi}
\let\o@everypar=\everypar
\def\everypar#1{\o@everypar{\rl@everypar#1}}
e 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
Estou certo de que o problema é a definição anterior que adiciona um argumento \everypar
? Como isso poderia ser corrigido de maneira mais elegante? Mesmo que ambos os pacotes não recebam atualizações há algum tempo, gostaria de enviar um relatório de bug, mas não tenho certeza de qual pacote. Dicas muito bem-vindas.
(Eu sei que hoje em dia é possível usar LuaTeX/XeTeX, mas isso não está em jogo aqui. Eu realmente tento ajudar a consertar esse caso em particular)
EDITAR:Esta seria minha humilde tentativa. Isso corrige a compilação, mas não tenho certeza se realmente faz o que a versão original fez:
--- /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