我知道将 --- 转换为长破折号是 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 的解决方案非常相似,但是 - 在我看来 - 更优雅,并且在某些极端情况下甚至更安全。