MWE 1:它有效

MWE 1:它有效

当我使用ucharclassesXeLaTeX 自动更改希腊文本的字体时,我发现它有时会在希腊文本中的错误位置插入过渡。 (注意:我使用选项GreekExtendeducharclasses因为我的希腊文本使用各种重音符号和呼吸符号,这是古希腊语排版的常规做法。)

具体来说,如果希腊语的第一个字符带有重音或呼吸符号,它看起来会正常工作,否则则不会(或并非总是如此)。(这个问题似乎与这个,但我不确定如何将那里给出的部分答案应用到我的问题上。)

有没有什么办法可以解决这个问题?

MWE 1:它有效

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass[12pt]{article}
\usepackage{fontspec}
\newfontfamily\defaultfont[Mapping=tex-text]{Times}
\newfontfamily\greekfont{Gentium}
\usepackage[Latin, GreekExtended]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForGreek{\greekfont}{}

\begin{document}
Latin text.

ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
\end{document}

输出是正确的,拉丁语Times和希腊语Gentium分别是我选择使用的字体。

在此处输入图片描述

MWE 2:当第一个希腊字符没有重音时不起作用

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass[12pt]{article}
\usepackage{fontspec}
\newfontfamily\defaultfont[Mapping=tex-text]{Times}
\newfontfamily\greekfont{Gentium}
\usepackage[Latin, GreekExtended]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForGreek{\greekfont}{}

\begin{document}
Latin text.

μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
\end{document}

这次,删除了第一个单词后,字体就不正确了:特别是,第一个单词 μοι 出现在字体中Times(我已将其设置为默认字体),尽管其余的希腊文本出现在字体中Gentium(我已将其设置为希腊字体)。

在此处输入图片描述

答案1

GreekExtended涵盖以下范围的 unicode:

 \do{GreekExtended}{"01F00}{"01FFF}

Greek是一个结合了四个范围的类:

\def\GreekClasses{
  \do{Coptic}
  \do{CopticEpactNumbers}
  \do{GreekAndCoptic}
  \do{GreekExtended}
}

这些封面

\do{GreekExtended}{"01F00}{"01FFF}
\do{GreekAndCoptic}{"0370}{"03FF}
\do{Coptic}{"02C80}{"02CFF}
\do{CopticEpactNumbers}{"0102E0}{"0102FF}

并包括希腊语扩展版。

Greek更通用的设置也是如此。

相关内容