ModernCV 中的希伯来语无法与 TeXLive 2019 XeLaTeX 配合使用

ModernCV 中的希伯来语无法与 TeXLive 2019 XeLaTeX 配合使用

以下 MWE 与 TexLive 2019 一起运行时失败。它可以与 TeXLive 2017 和 2018 一起使用。

\documentclass[english,sans]{moderncv}

\moderncvstyle{banking}
\usepackage[unicode]{hyperref}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\firstname{J}
\lastname{D}
\title{T}

\newfontfamily\englishfont[Language=English,Script=Latin]{Latin Modern Sans}
\newfontfamily\hebrewfont[Language=Hebrew,Script=Hebrew]{DejaVu Sans}

\begin{document}

\makecvtitle{}{}

Lorem ipsum and such

\texthebrew{לורם איפסום}
\end{document}

使用 overleaf 引擎(如果这很重要的话)。这里的例子是使用 DejaVu,但问题也出现在(2019 年)使用David CLMSimple CLMMiriam Mono CLM(2018 年有效)。

我得到的错误是(不知道这在 Latex 中意味着什么)

! Package polyglossia Error: The current latin font DejaVuSans(0) does not cont
ain the "Hebrew" script!
(polyglossia)                Please define \hebrewfont with \newfontfamily comm
and.

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

答案1

我似乎找到了问题所在:这不是一个错误,而是一个功能。TeXLive 2019 中的 Polyglossia 效果更好。

documentclass 有一个 sans 选项,但是希伯来语没有定义 sans 字体。用 替换\newfontfamily\hebrewfont{}解决\newfontfamily\hebrewfontsf{}了“问题”。

在 TeXLive 2017(和 2018)中,该documentclass定义仅适用于默认(英语)字体。如果\newfontfamily\hebrewfont{}已定义,然后\texthebrew{}使用命令,则确实会使用默认定义的字体。

在 TexLive 2019 中,由于声明了 sans 选项,因此当\texthebrew{}调用 polyglossia 时会查找 sans 系列字体。因为,如 中所定义,documentclass除非另有定义,否则文档应为 sans。

以下 MWE 演示了其中的差异。

\documentclass[english,sans]{article} %<--- The document default is defined as sans

\usepackage[unicode]{hyperref}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}

\newfontfamily\hebrewfont[Language=Hebrew,Script=Hebrew]{David CLM} %<--- notice David
\newfontfamily\hebrewfontsf[Language=Hebrew,Script=Hebrew]{DejaVu Sans}%<--- notice Sans


\begin{document}

Lorem ipsum and such

\textsf{\texthebrew{עברית בסנס}}

\texthebrew{עברית רגיל}
\end{document}

TexLive 2017 的输出如下:

在此处输入图片描述

TexLive 2019 的输出如下:

在此处输入图片描述

问题中的 MWE 没有定义 sans 字体,因此出现错误。

相关内容