以下 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 CLM
、Simple CLM
或Miriam 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 字体,因此出现错误。