在 XeLaTeX 中渲染 unicode en-dash

在 XeLaTeX 中渲染 unicode en-dash

如果我理解正確的話,使用 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

我將您的完整內容從瀏覽器複製到新的文字檔案中,並使用 xelatex 對其進行編譯,並且沒有任何問題。我絕對沒有理由認為你的程式碼不應該工作

  • 關閉任何控制台視窗或可能重新啟動電腦後,請嘗試在新目錄中建立完整的新檔案。

    當我遇到類似問題時,這有時會有所幫助...

  • 如果這沒有幫助,請嘗試更新您的 TeX 發行版

工作中的破折號

答案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 變音符號編碼

相關內容