如果我理解正確的話,使用 XeLaTeX,所有這些行都應該分別用正確的em-和短劃線輸出:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Gentium Plus}
\begin{document}
Hello---world!
Hello—world!
Hello--world!
Hello–world!
\end{document}
但是,無論我選擇哪種字體,我都會收到 unicode en-dash 錯誤(em-dash 工作正常,--
生成 en-dash 的序列也正常):
./dash-testing.te.tex:13: Undefined control sequence.
l.13 Hello\UTF
{2013}world! \\
但我可以使用 InDesign 字形檢視器或其他工具看到,該字元 2013 確實存在。直接輸入其他字元(如“
等)也可以。
如何讓 unicode 破折號正常運作?
更新:這是我繼續編譯時得到的輸出(只是為了證明確實使用了正確的字體)。
答案1
答案2
Gentium 也可以作為 Type 1 字體使用,例如,TEXMF/fonts/type1/public/gentium-tug/
我想您也安裝了這個字體,並且 XeLaTeX 使用找到的第一個字體。但是,您可以強制 XeLaTeX 使用 TrueType 版本:
\setmainfont[
Extension=.ttf,
UprightFont=*-R,
ItalicFont=*-I]{GentiumPlus}
這是 XeTeX,版本 3.14159265-2.6-0.99992 (TeX Live 2015)(預載格式=xelatex 2016.2.13)2016 年 2 月 14 日 20:43
fontspec-xetex.sty 2016/02/01 v2.5a Font selection for XeLaTeX and LuaLaTeX
答案3
非常抱歉浪費了您的時間。事實證明這是一個 TexShop 的「問題」。直到我在 Vim 中編輯測試檔案時,我才意識到 TexShop 並沒有向我顯示確切的原始程式碼。在我使用 Vim 之前,我看不到我在哪裡看到了–
真正的原始碼UTF{2013}
。
這是支援 pTeX 的首選項,透過關閉該首選項來修復,如 StackExchange 答案所示:TexShop 變音符號編碼