在 XeLaTeX 中渲染 unicode 短划线

在 XeLaTeX 中渲染 unicode 短划线

如果我理解正确的话,使用 XeLaTeX,所有这些行都应该分别用适当的 em- 和 end- 破折号输出:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Gentium Plus}

\begin{document}

Hello---world!

Hello—world!

Hello--world!

Hello–world!

\end{document}

但是,无论我选择哪种字体,我都会收到一个带有 unicode 短破折号的错误(长破折号工作正常,--生成短破折号的序列也是如此):

 ./dash-testing.te.tex:13: Undefined control sequence. 
 l.13 Hello\UTF
               {2013}world! \\

但是我使用 InDesign 字形查看器或其他工具可以看到,字符 2013 确实存在。并且直接输入其他字符(如和其他)也是可行的。

我怎样才能使 unicode en-dash 正常工作?

已更新:如果我继续编译,这是我得到的输出(只是为了证明确实使用了正确的字体)。

bad en dash,坏的

答案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 变音编码

相关内容