
本週 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{...
(之前它輸出 Ł 但保持希伯來語模式,字元在該模式下工作)。