babel \L コマンドは文字を反転し、Ł 記号を挿入します

babel \L コマンドは文字を反転し、Ł 記号を挿入します

今週は、Eyal の babel+Hebrew (または右から左への) の非互換性についてお話しします。今回もまた、hyperref についてです。

あなたが持っている場合:

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{hyperref}
\begin{document}
\selectlanguage{hebrew}
מלל בעברית, \L{Some English within the Hebrew} ועוד עברית לאחר מכן.
\end{document}

次のものが得られます:

Ł と逆さまの英語のテキスト

hyperref なしで babel だけを使用すると、次のような期待される効果が得られます\L

英語のテキストが正しく表示されます

これは回避するのがかなり簡単ですが、私はこれに気付きました。これは、他の babel+hyperref 互換性の問題の奇妙な部分だと思いました。hyperref はなぜこのようなことをするのでしょうか?

興味のある方は、Ł文字についての情報

答え1

明らかな回避策は次のとおりです。

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{hyperref}
\def\L{\protect\pL}
\begin{document}
\selectlanguage{hebrew}
מלל בעברית, \L{Some English within the Hebrew} ועוד עברית לאחר מכן.
\end{document}

\Lこれはから取得したの定義ですrlbabel.def。 あるいは、 自体を使用しないことを覚えている場合は\L、 を再定義せず、 のようなものを使用してください\def\babelL{\protect\pL}

答え2

どうやら彼らはそれが\L論争を呼ぶことを予見していたので、rlbabel はその定義を復元するためのマクロを提供しています。

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{hyperref}
\HeblatexRedefineL  % this stands for \def\L{\protect\pL}
\begin{document}
\selectlanguage{hebrew}
מלל בעברית, \L{Some English within the Hebrew} ועוד עברית לאחר מכן.
\end{document}

PS これをデバッグしているときに遭遇した厄介な問題は、左から右への意味を復元するとすぐにCommand \hebalef unavailable in encoding T1.エラーが発生し始めたことです。終了していないことに気づくのに長い時間がかかりました\L{...(以前は Ł を出力していましたが、文字が機能するヘブライ語モードのままでした)。

関連情報