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}

您將得到以下資訊:

Ł 和顛倒的英文文本

如果你只使用 babel 而不使用 hyperref,你會得到預期的效果\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這是lift from的定義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{...(之前它輸出 Ł 但保持希伯來語模式,字元在該模式下工作)。

相關內容