为什么使用希腊语会破坏破折号?

为什么使用希腊语会破坏破折号?

我知道将 --- 转换为长破折号是 lualatex 的一个持续问题。但我不明白为什么在一种字体中使用希腊语会(事后)破坏在另一种字体中将 3 个连字符转换为长破折号。

这是我的代码:

%!TEX encoding = UTF-8 Unicode
\documentclass{article}

\usepackage{fontspec}
\usepackage{ednotes}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{TeX Gyre Heros}
\setmonofont[Scale=MatchLowercase]{Inconsolata}
\newfontfamily\myGk[Script=Greek,Scale=MatchUppercase,Ligatures=TeX]{Cambria}
%\newfontfamily\myGk[Script=Greek,Scale=MatchUppercase,Ligatures=TeX]{Linux Libertine O}

\newcommand\textgreek[1]{\myGk\emph{#1}}

\begin{document}
\fontsize{11.5}{13}\selectfont


This is a test---to see if dashes are being converted to emdashes.

\textgreek{Ἐν ἀρχῇ ἦν ὁ λόγος}

This is a test---to see if dashes are being converted to emdashes.

\end{document}

对我来说,如果我按原样运行上述代码,则第二个“This is a test...”会显示破折号而不是长破折号。如果我使用 Linux Libertine O 字体来显示希腊文,则不会出现此问题。

有人能告诉我如何使用 Cambria Greek(我更喜欢)而不破坏主字体中的破折号吗?我正在使用 TeXLive 2012 和 Mac TeXShop。

答案1

保持本地定义:

\newcommand\textgreek[1]{{\myGk\emph{#1}}}
%  {{...}}

答案2

我认为解决方案非常清楚,因为这有点我的错。(抱歉!)

当我第一次发布对你上一个问题的回答时这里,我犯了一个小错误,后来我改正了。然而,你没有使用我答案的更新版本。这个错误似乎导致了你现在的问题。

你需要使用这个:

\newcommand{\textgreek}[1]{\bgroup\myGk\emph{#1}\egroup}

您会看到,希腊字体的字体命令现在包含在 bgroup ... egroup 中。如果没有这个,则使用希腊字体对于文档的其余部分而不只是针对几个希腊词。

由于破折号不是希腊字体的一部分,因此它不会对其进行排版。我目前无法验证我的假设,但我很确定,就是这样。

实际上,这与 Herbert 的解决方案非常相似,但是 - 在我看来 - 更优雅,并且在某些极端情况下甚至更安全。

相关内容