在我的文本(希腊语和英语)出现连字符问题后,我更改了一些软件包。一开始我使用的是:
\usepackage{mathspec}
\usepackage{xgreek}
\usepackage{xunicode}
\usepackage{fontspec}
\setallmainfonts[Mapping=tex-text]{Arial}
\setallsansfonts[Mapping=tex-text]{Arial}
\setallmonofonts[Mapping=tex-text]{Arial}
经过一番搜索后,我修改了这些以获得正确的连字符。在一个小的样本文本中这样做之后,我试图将原始文本的包更改为样本中使用的包,以便最终获得正确的连字符。然而在某个时候我得到了:
包 polyglossia 错误:当前罗马字体不包含希腊文字。
第 242 行:\begin{verbatim}
我使用的软件包如下:
\usepackage{fontspec}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
\newfontfamily\greekfontsf[Script=Greek]{Linux Libertine O}
\usepackage[Greek,Latin]{ucharclasses}
\usepackage{polyglossia}
\usepackage{xltxtra}
\setmainlanguage{greek}
\setotherlanguages{english}
\setTransitionsForGreek{\selectlanguage{greek}}{\selectlanguage{english}}
\setmainfont{Linux Libertine O}
如何修复此问题?
答案1
逐字文本使用定义的字体\setmonofont
(或默认的拉丁现代打字机字体)。
但是,当希腊语处于活动状态时,Polyglossia 会让 XeLaTeX 查找字体是否具有 GRK 功能,如果该功能不可用,它会查找名称下的字体系列是否\greekfonttt
已定义。因此
\newfontfamily{\greekfonttt}{FreeMono}
(使用您喜欢的等宽字体)就可以了。
我不会使用ucharclasses
自动从英语切换到希腊语,反之亦然:这将填充你的辅助文件\select@language
声明填充你的辅助文件和无法确保在 中使用等宽字体。而是更喜欢使用显式命令(不推荐)verbatim
限制语言切换的标准方法、或。\selectlanguage
otherlanguage
otherlanguage*
\foreignlanguage