Hyperref 对 \url 使用了错误的语言脚本?

Hyperref 对 \url 使用了错误的语言脚本?

在混合语言文档中,我尝试使用 URL。以下是演示的最小输入

\documentclass{article} % compile with xelatex
\usepackage{hyperref}
\usepackage{polyglossia} 
  \setmainlanguage{hebrew} 
  \setotherlanguage{english}
  \newfontfamily\hebrewfont[Script=Hebrew]{Ezra SIL}% or{SBL Hebrew}
\begin{document}
  \begin{english}English separates Yankees and Brits?
  \url{http://www.google.com}
  \end{english}
\end{document}

现在,polyglosssia 对此非常不满,并抱怨道:

! Package polyglossia Error: 
The current roman font does not contain the Hebrew script!
Please define \hebrewfont with \newfontfamily.

See the polyglossia package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.9 \url{http://www.google.com}

我糊涂了。我不是在第 8 行就切换到英文了吗?

答案1

如果您将链接更改为 \href{http://www.google.com}{Google}而不是使用,\url它可以正常工作。

但是,这实际上并不能直接解决问题。基于 Leo 的答案,但使用polyglossia方法(和 LaTeX 语法),正确的解决方案如下:

\renewcommand\UrlFont{\ttfamilylatin}

答案2

它与 hyperref 无关。\url用作\ttfamily字体。如果您只是调用,则会收到相同的消息\ttfamily。在我看来,这是 polyglossia 字体切换系统的一个错误。切换语言后,script=hebrew 选项仍然存在。

答案3

这不是url软件包的错误。默认情况下\url使用\ttfamily,但是默认打字机字体lmtt不适用于默认语言希伯来语。只需重新定义\UrlFont即可修复它。

\def\UrlFont{\usefont{EU1}{lmtt}{m}{n}}

相关内容