问题是,如果我尝试使用\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}