바벨히브리어와 아라비아어의 갈등

바벨히브리어와 아라비아어의 갈등

다음 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

관련 정보