我知道將 --- 轉換為 em-dash 是 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}
對我來說,如果我按原樣運行上面的程式碼,第二個「這是一個測試...」會出現破折號而不是長破折號。如果我使用 Linux Libertine O 字體來表示希臘語,則不會出現此問題。
誰能告訴我如何使用坎布里亞希臘語(我更喜歡)而不破壞主字體中的破折號?我正在將 TeXLive 2012 與 Mac TeXShop 一起使用。
答案1
將定義保留為本地:
\newcommand\textgreek[1]{{\myGk\emph{#1}}}
% {{...}}
答案2
我認為解決方案非常明確,因為這有點是我的錯。 (對不起!)
當我第一次發布對你上一個問題的回答時這裡,我犯了一個小錯誤,後來改正了。但是,您沒有使用我答案的更新版本。這個錯誤似乎導致了您目前的問題。
你需要使用這個:
\newcommand{\textgreek}[1]{\bgroup\myGk\emph{#1}\egroup}
您會看到,希臘字體的字體命令現在包含在 bgroup ... egroup 中。如果沒有這個,則使用希臘字體對於文件的其餘部分不僅僅是幾個希臘單字。
由於破折號不是希臘字體的一部分,因此它不會對其進行排版。我目前無法驗證我的假設,但我很確定,就是這樣。
實際上,這與赫伯特的解決方案非常相似,但是——恕我直言——更優雅,也許在某些極端情況下使用起來更安全。