如果我理解正确的话,使用 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 正常工作?
已更新:如果我继续编译,这是我得到的输出(只是为了证明确实使用了正确的字体)。
答案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 变音编码