使用 hyperref 编写希伯来语文档是不可能的吗?

使用 hyperref 编写希伯来语文档是不可能的吗?

polyglossia我在使用像/babel这样的多语言包时遇到了很大的麻烦hyperref

一次审判:babel

当我学习使用babel希伯来语时,我遇到了所描述的问题这里这里这让我意识到目前不可能使用 babel 来编写多语言双向文档hyperref

第二次当前审判:polyglossia

尝试使用polyglossia我的文档时,我遇到了有关字体配置的奇怪问题,我仍然无法完全解决。这是我最不确定的部分

设置

我使用带有以下texlive软件包的 archlinux:

$ pacman -Qsq texlive
texlive-bibtexextra
texlive-bin
texlive-core
texlive-culmus
texlive-fontsextra
texlive-formatsextra
texlive-humanities
texlive-langextra
texlive-latexextra
texlive-music
texlive-pictures

我使用xelatex为了生成文档 因为pdflatex并且lualatex与 一起工作polyglossia

例子

在下面的文档中,我试图尽可能简化问题,而不使用不必要的包。

\documentclass[a4paper]{book}

% General
\usepackage{hyperref}

% Language
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\setmainfont{DejaVu Sans}

\begin{document}

\title{הספר שלי}
\author{דורון בכר}
\maketitle
שלום רב,\\
קוראים לי דורון.
% The following 2 lines demonstrate the problem fairly:
% -----------------------------------------------------
%\textenglish{This is a sentence with a url inside it: \url{https://github.com/doronbehar} and it causes problems}
%\textenglish{This is a sentence without a url and it doesn't make problems if all of the document doesn't use hyperref}

\end{document}

问题

如果取消注释最后一句(就在上方end{document}),则编译时不会出现任何问题。我没有收到任何字体错误,并且我可以在输出文档中看到所有字符。,如果我尝试取消注释带有 URL 的句子,我会收到以下警告和错误:

Package polyglossia Warning: No hyphenation patterns were loaded for `Hebrew'
(polyglossia)                I will use \language=\l@nohyphenation instead on input line 21.

加载几个包后,我得到:

Package hyperref Warning: Rerun to get /PageLabels entry.

(/usr/share/texmf-dist/tex/latex/euenc/eu1lmtt.fd)

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

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

l.32 ...de it: \url{https://github.com/doronbehar}

我无法摆脱开始时的警告以及错误。

笔记:

我见过一个使用这两个包的实例overleaf.com 这里。但作者并未使用实际的超链接或 URL。

答案1

我认为这个警告是多语种语言处理中的一个错误,但是无害。

错误是由于 \url 是用打字机字体书写的。 polyglossia 无法正确处理此问题:尽管您处于英语环境中,它仍会测试打字机字体是否可用于希伯来语。您可以找到很多有关“当前罗马字体”问题的问题。解决此问题最简单的方法是使用具有以下脚本的字体:

\documentclass[a4paper]{book}

\usepackage{polyglossia}
\usepackage{hyperref}

\setdefaultlanguage{hebrew}


\setotherlanguage{english}

\setmainfont{DejaVu Sans}
\setmonofont{DejaVu Sans}%<--

\begin{document}

\textenglish{This is a sentence with a url inside it: \texttt{blub} and it causes problems}


\end{document}

答案2

即使 URL 是在英语环境中排版的,您也需要告诉它在希伯来语中使用哪种无字体和等宽字体。例如:

\documentclass{book}
% load last unless you know something needs to be loaded later
\usepackage{hyperref}
% bidi needs to be loaded later
\usepackage{polyglossia}
\setmainlanguage{hebrew}
% US English
\setotherlanguage{english}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
\newfontfamily\hebrewfont{DejaVu Sans}[Script=Hebrew]
\newfontfamily\hebrewfontsf{DejaVu Sans}[Script=Hebrew]
\newfontfamily\hebrewfonttt{DejaVu Sans}[Script=Hebrew]

\begin{document}


\title{הספר שלי}
\author{דורון בכר}
\maketitle
שלום רב,

קוראים לי דורון.

\textenglish{This is a sentence with a url inside it: \url{https://github.com/doronbehar} and it causes problems}
\textenglish{This is a sentence without a url and it doesn't make problems if all of the document doesn't use hyperref}

\end{document}

但是,我并不确信它在这种情况下使用了我期望的字体:

活动网址

相关内容