巴別希伯來語和阿拉伯語之間的衝突

巴別希伯來語和阿拉伯語之間的衝突

考慮以下 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}

這打破了

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

但是,如果hebrew在之後加載farsi,則可以正常編譯。

在我看來,這是由於rlbabel.def(希伯來語使用)中的重新定義與arabicore.sty(波斯語使用)中的重新定義不相容。

rlbabel.def有:

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

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 

我是否正確,問題是前一個定義增加了一個參數\everypar?如何才能最優雅地解決這個問題?即使這兩個軟體包有一段時間沒有看到更新,我也想提交錯誤報告,但我不確定哪個軟體包。非常歡迎提示。

(我知道現在可以使用 LuaTeX/XeTeX,但這並不重要。我真的盡力幫忙解決這個特殊情況)

編輯:這將是我自己的卑微嘗試。這修復了編譯,但我不確定它是否真的起到了原始版本的作用:

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

相關內容