
今週は、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{...
(以前は Ł を出力していましたが、文字が機能するヘブライ語モードのままでした)。