本周,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
这是从 中解除的定义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{...
(之前它输出的是Ł,但仍处于希伯来语模式,字符可以正常工作)。