带有 Helvetica 的 fontspec 会破坏引号

带有 Helvetica 的 fontspec 会破坏引号

包含这个之后,通常用 `` and '' 引用不再起作用(这也会将引擎更改为 XeTeX):

\usepackage{fontspec}
\setmainfont{Helvetica}

它们只是在输出中逐字打印。双破折号和三破折号也一样,不再转换为 en/em 破折号。

答案1

XeLaTeX 解决方案

fontspec软件包默认不启用连字。要启用它们,您可以使用:

\defaultfontfeatures{Ligatures=TeX}

或者在加载字体时添加它:

\setmainfont[Ligatures=TeX]{Helvetica}

LuaLaTeX

但是,正如这里讨论的那样如何在 LuaTeX 中启用 emdash/endash 连字?(并在 Ulrike Fischer 的评论中指出)使用 LuaLaTeX 时,将此方法与 LuaLatTeX 一起使用可能不是最好的主意(即使它可以与 XeLaTeX 配合使用)。

这意味着将现有文档转换为 LuaLaTeX 可能会引发问题。对于新文档,这意味着将您的常规方法调整为可用于 LuaLaTeX 的方法。

TeX 连字符的等价形式

标准 TeX 连字符为:

`` '' -- --- !` ?` << >>

这些组合变成:

“ ” – — ¡ ¿ « »

适应在 XeLaTeX 或 LuaLaTeX 中不使用连字符

最简单的解决方案就是直接在源代码中输入实际字符。对于 en-dash、em-dash、¡ 和 ¿,这是一个简单的解决方案,但对于引号来说,这有点烦人,因为我们大多数人不习惯在源代码中输入“和”。这个问题有两种可能的解决方案。

基于编辑器的解决方案

使用好的编辑器,可以轻松绑定例如“”键以便在您键入时自动插入“”。

基于 LaTeX 的解决方案

或者,您可以使用csquotes包,它允许非常复杂的引用机制。然而,这对许多用户来说可能有点过分。 csquotes允许您定义一个活动引号字符,以便它会自动插入正确的引号字符。或者,您可以使用命令进行显式标记\enquote。(该csquotes包有许多其他复杂的功能;这只是一个基本示例。)

如果你使用多种语言,并且使用不同的引用约定,那么这会非常有用。这是一个简单的例子:

\documentclass{article}
\usepackage{fontspec}
%\usepackage[french,english]{babel} % if using lualatex
\usepackage{polyglossia} % if using xelatex
\setmainlanguage{english} % if using xelatex & polyglossia
\setotherlanguage{french} % if using xelatex & polyglossia
\usepackage[autostyle=true,english=american,french=guillemets]{csquotes}
\MakeOuterQuote{"}
\begin{document}
"This is \enquote{some} text".

\enquote{This is \enquote{some} text}.

\begin{otherlanguage}{french}
"Une exemple en français."

\enquote{Une exemple en français.}
\end{otherlanguage}
\end{document}

代码输出

使用 LuaLaTeX 会稍微复杂一些,因为根据您使用的语言,babelLuaLaTeX 并不完全支持 ,而polyglossia与 XeLaTeX 一起使用的 不能与 LuaLaTeX 一起使用。请参阅以下问题以进行讨论。

关于 babel 和 LuaTeX,fontspec 手册中的警告意味着什么?

相关内容