设置默认语言时 xelatex 与“歌曲”包冲突

设置默认语言时 xelatex 与“歌曲”包冲突

问题是,如果我尝试使用\gtab“歌曲”包中的代码,xelatex 将无法编译。这是重现这种令人讨厌的 xelatex 行为的最小示例:

\documentclass[10pt]{book}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{songs}

\setdefaultlanguage{russian}  % If comment this line - it compiles and works, but makes a lot of other errors o_O

\newfontfamily{\cyrillicfont}{Arial}
\newfontfamily{\cyrillicfonttt}{Courier New}

\begin{document}

{\gtab{A}{X02220:001230}}\par

\end{document}

该错误完全不相关:

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

如您所见,\newfontfamily已设置为\cyrillicfont。令人惊讶的是,我发现如果我注释\setdefaultlanguage行,则所有内容都会编译。

但这不是一个好的解决方案,因为如果我删除\setdefaultlanguage,文档的所有其他部分都会损坏(它是俄语,这就是我使用的原因\setdefaultlanguage)。

最后,当这些不相关的 tex 部分相互冲突时,这看起来真的很荒谬。

有人知道什么好的解决方法吗?

答案1

错误信息是错误的,您缺少的不是\cyrillicfont罗马字体,而是西里尔字体\sffamily

\documentclass[10pt]{book}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{songs}

\setdefaultlanguage{russian}  % 
%
\newfontfamily{\cyrillicfont}{Arial}[Script=Cyrillic]
\newfontfamily{\cyrillicfonttt}{Courier New}[Script=Cyrillic]
\newfontfamily{\cyrillicfontsf}{Arial}[Script=Cyrillic]
\begin{document}
abc {\sffamily abc}

{\gtab{A}{X02220:001230}}\par

\end{document}

相关内容