fontspec 将字体信息传递给 beamer 的方式似乎存在一些问题。以下示例在 XeLaTeX 中编译并显示正确
% !Mode:: "TeX:UTF-8"
\documentclass{article}
\usepackage{unicode-math}
\usepackage{polyglossia}
\setmainfont{XITS}
\setdefaultlanguage{russian}
\begin{document}
This is a test.
Это тест
\end{document}
但是,如果我将文档类替换为
\documentclass{beamer}
我得到了错误
! polyglossia 软件包错误:当前罗马字体不包含西里尔文!请使用 \newfontfamily 定义 \cyrillicfont。
请参阅 polyglossia 包文档以获取解释。输入 H 可立即获得帮助。...
l.3 \select@language {俄语}
?
我使用 MiKTeX 2.9 编译,并附带所有当前更新。
如有任何建议,我们将不胜感激
答案1
beamer
默认使用sffamily
,因此您需要定义\cyryllicfontsf
使用\newfontfamily
:
\documentclass{beamer}
\usepackage{unicode-math}
\usepackage{polyglossia}
\setmainfont{STIX}
\newfontfamily{\cyrillicfontsf}{XITS}
\setdefaultlanguage{russian}
\begin{document}
This is a test.
Это тест
\end{document}
(我已经安装了实际的 STIX 字体,所以我还没有用 XITS 测试过,但它应该可以正常工作。)
如果您想使用无衬线字体,那么 Herbert 的解决方案是正确的。我假设您想让默认的 Beamer 字体使用 XITS。
答案2
还定义无衬线字体:
\documentclass{beamer}
\usepackage{unicode-math}
\usepackage{polyglossia}
\setmainfont{XITS}
\setsansfont{Myriad Pro}% or any other sans serif font
\setdefaultlanguage{russian}
\begin{document}
This is a test.
Это тест
\end{document}