使用 TexLive 2019 運行時,以下 MWE 失敗。
\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}
使用背面引擎(如果這很重要的話)。這裡的例子是 DejaVu,但使用David CLM
、Simple CLM
或(在 2018 年有效)也會出現問題(在 2019 年Miriam Mono CLM
)。
我得到的錯誤是(不知道這在 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 效果更好。
文檔類別有一個 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 沒有定義無字體,所以我收到了錯誤。