具有多语和希腊语的 XeLaTeX

具有多语和希腊语的 XeLaTeX

我为 XeLaTeX 和 而苦恼不已polyglossia。不知何故,字体选择似乎没有像我预期的那样工作(也没有像错误消息所提示的那样)。

请考虑以下示例:

\documentclass{scrreprt}

\usepackage{fontspec}
\setmainfont{Times New Roman}
\setsansfont{Arial}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}

\usepackage{polyglossia}
\setdefaultlanguage{french}

\begin{document}
\tableofcontents{}

\section{Αυτό είναι ελληνικά.}
{\bfseries Welcome to Greek:} Αυτό είναι ελληνικά

Or Russian: Привет

Or Hebrew: מה הבעיה?
\end{document}

这与自动生成的“Table des matières”配合得非常好,这要归功于polyglossia

当我使用以下方法将默认语言更改为希腊语时:

\setdefaultlanguage{greek}

XeLaTeX 发出以下错误polyglossia

! Package polyglossia Error:
The current roman font does not contain the Greek script!
Please define \greekfont with \newfontfamily.
See the polyglossia package documentation for explanation.
Type H <return> for immediate help.
...
l.12 \tableofcontents
{}

正如您所见,我确实声明了\greekfontwith ,但不知何故似乎做了其他事情并期待其他事情。\newfontfamily\tableofcontents

最后,我想使用包含不同语言的同一篇文档,以适当的语言获取章节、目录等\setdefaultlanguage的所有精美的自动文本。polyglossia

有人可以帮忙吗?

答案1

KOMA 脚本将标题设置为无衬线字体。这意味着在您的示例中,它们将设置为 Arial。因此,您安装的 Arial 版本没有希腊文脚本,因此会出现错误(尽管错误中提到的罗马字体在这里有点误导)。

但是,如果您想将 Linux Libertine 用于所有希腊文本,那么您需要单独定义\greekfontsf

% !TEX TS-program = XeLaTeX

\documentclass{scrreprt}

\usepackage{fontspec}
\setmainfont{Times New Roman}
\setsansfont{Arial}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
\newfontfamily\greekfontsf[Script=Greek]{Linux Libertine O}
\usepackage{polyglossia}
\setdefaultlanguage{greek}

\begin{document}
\tableofcontents{}

\section{Αυτό είναι ελληνικά.}
{\bfseries Welcome to Greek:} Αυτό είναι ελληνικά

Or Russian: Привет

Or Hebrew: מה הבעיה?
\end{document}

当然,这不再使用无衬线字体设置标题。如果您想要这样,那么您需要获取带有希腊文脚本的 Arial 版本(在这种情况下,您不需要明确设置\greekfontsf),或者使用另一种带有希腊文脚本的无衬线字体执行\greekfontsf命令。

相关内容