这是我的 MWE:
%!TEX TS-program = xelatex
\documentclass[a4paper]{report}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont{Times New Roman}
\begin{document}
``abcde''
\end{document}
得出的结果为:
如果我注释掉该\defaultfontfeatures
行,结果是:
如果我删除那个和的使用xltxtra
(显然还有\setromanfont
),我会得到:
那么问题是:引号发生了什么?xltxtra
它们发生了什么\defaultfontfeatures
变化?
答案1
几年前,该软件包xltxtra
被推荐用于 XeLaTeX,但现在不再如此了。相反,它是不是建议加载xltxtra
,除非您确实需要它的额外功能(通常不需要)。
该\setromanfont
命令几年前就被弃用了,取而代之的是更清晰的命令\setmainfont
。Mapping=tex-text
选项已更改为
Ligatures=TeX
而对于 TeX Live 2014 上最新版本的,fontspec
甚至不需要指定它。因此,对于最新的 TeX 发行版,正确的代码是
\documentclass[a4paper]{report}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\begin{document}
``parola''.
\end{document}
在较旧的 TeX 发行版(如 TeX Live 2013)上,你需要
\setmainfont[Ligatures=TeX]{Times New Roman}
不要在中指定选项\defaultfontfeatures
,因为它也会影响等宽字体(如果您声明它)并且您不希望这样。
现在回答你的问题。
选项
Ligatures=TeX
(以前称为Mapping=tex-text
)使常用连字符也适用于 XeLaTeX;因此``
映射到“
、、''
到短破折号、到长破折号(还有其他一些)。这解释了第一种情况”
--
---
如果删除该
Ligatures=TeX
选项,这些连字符就不会被定义,因此您会得到预期的``
结果''
。如果不加载
fontspec
(由 完成xltxtra
),XeLaTeX 会加载常用字体,做有连字符。但是,当然,重音字符可能不起作用。如果您加载
fontspec
但不使用\setmainfont
,则使用预加载的标准拉丁现代字体Ligatures=TeX
。