TeXLive 2012 中的“keystroke”包无法与 polyglossia 配合使用

TeXLive 2012 中的“keystroke”包无法与 polyglossia 配合使用

示例文件:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Ubuntu}
\usepackage{polyglossia}
\setmainlanguage{russian}
\usepackage{keystroke}
\begin{document}
\keystroke{Q}
\end{document}

错误(运行时xelatex test.tex):

! Package polyglossia Error:
The current roman font does not contain the Cyrillic script!
Please define \cyrillicfont with \newfontfamily.

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

l.8 \keystroke{Q}

当我使用 TeXLive 2009 编译时,同一个文件运行正常。哪里出了问题?

答案1

不幸的是,错误消息没有提供太多信息。该keystroke包使用无衬线字体进行绘图。

在某些情况下,Polyglossia 无法提取字体支持的脚本信息,因此您必须帮助它。但首先,您必须设置无衬线字体。这是 Linux Libertine 和 Biolinum 的版本(我没有 Ubuntu):

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Ligatures=TeX]{Linux Biolinum O}
\usepackage{polyglossia}
\setmainlanguage{russian}
\usepackage{keystroke}
\begin{document}
\keystroke{Q}
\end{document}

尝试

\setsansfont[Ligatures=TeX]{Ubuntu}

如果该消息仍然存在,请添加

\newfontfamily{\cyrillicfontsf}[Ligatures=TeX]{Ubuntu}

相关内容