我正在使用 XeLaTeX 用希伯来语编写文本。现在我一直在尝试使用 KOMA 文档类。在应用了一些更改(例如将用于章节、部分……标题的字体更改为也包含希伯来语的字体)后,一切似乎都运行良好,除了一个小麻烦:
我收到以下错误消息:
! 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.
...
这些错误指的是定义新部分的行。有趣的是,即使文本完全是希伯来语,不包含拉丁语或任何其他非希伯来语字符,也会出现此错误消息。
那么,有人知道问题是什么以及如何解决它吗?
以下是一个简短的例子:
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = xelatex
\documentclass[14pt]{scrbook}
\pagestyle{empty}
\TeXXeTstate=1
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setmainfont[Mapping=tex-text]{Adobe Hebrew}
\newfontfamily\hebrewfont[Scale=0.80,Script=Hebrew]{Adobe Hebrew}
\setkomafont{section}{\hebrewfont}
\begin{document}
\section{מה הבעיה?}
\section{יש פתרון?}
\end{document}
答案1
首先:我有点怀疑你真的想使用\setkomafont
。这也会重置尺寸将章节标题中的字体调整为正常大小。最好使用\addtokomafont
。
其次:问题的根源在于 – 无论您在\setkomafont
命令中使用什么\section
– ,KOMA 类都会发出\sffamily
。因此,暂时切换到此字体,并且由于活动语言是希伯来语,而您当前的\sffamily
字体不认识希伯来语脚本,因此您会收到错误。您可以\sffamily
通过重新定义 来删除部分标题中的\sectfont
。
\renewcommand*\sectfont{\normalcolor\bfseries}
但在我看来,更好的解决方案是(因为希伯来语是你的主要语言)将主字体设置为识别脚本的字体:
\documentclass[14pt]{scrbook}
\pagestyle{empty}
\TeXXeTstate=1
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setmainfont[Mapping=tex-text]{Ezra SIL}
\setsansfont[Mapping=tex-text]{Ezra SIL}
\setmonofont[Mapping=tex-text]{Ezra SIL}
\begin{document}
\section{abc}
abc
\end{document}