如何取消设置主字体的默认 Ligatures=TeX?(TexLive2015)

如何取消设置主字体的默认 Ligatures=TeX?(TexLive2015)

从 TexLive2015 开始(与 TexLive2013 相反),fontspec 预定义了Ligatures=TeX。这会导致双引号被花引号替换。我该如何禁用此行为?

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}

\begin{document}
force "x y Fx Fy"
\end{document}

不需要花括号

在对问题的评论中minted 中 `--` 的处理egreg 提到\defaultfontfeatures{}在定义字体之前使用,但在上面的例子中它没有效果。有塞尔诺利格包裹 (对于允许禁用(预)选定单词的连字的新软件包的功能,有什么建议/要求吗?),但我还没有找到禁用 TeX-“连字”的命令。

我发现的解决方法是编辑文件 '/usr/local/texlive/2015/texmf-dist/tex/latex/fontspec/fontspec.cfg',删除该行{Ligatures=TeX}。我更喜欢避免接触安装的解决方案。

有没有\defaultfontfeatures{Ligatures=NoTeX}

答案1

手册的第 6.1 节介绍了如何设置用\setmainfont或声明的指定系列的功能\setsansfont

\documentclass{article}
\usepackage{fontspec}

\defaultfontfeatures[\rmfamily,\sffamily,\ttfamily]{}
\setmainfont{Linux Libertine O}

\begin{document}

force "x y Fx Fy"

-- ---

`` ''
\end{document}

在此处输入图片描述

答案2

要禁用 TeX 类型的连字,您可以将选项传递RawFeature=-tlig给指令\setmainfont\setsansfont等(tlig是“TeX 样式连字”的缩写;-tlig禁用“tlig”字体功能。)无需执行此操作,因为\setmonofontTeX 样式连字默认不适用于等宽字体。

\documentclass{article}
\usepackage{fontspec}
\setmainfont[RawFeature=-tlig]{Linux Libertine O}
\setsansfont[RawFeature=-tlig]{Calibri}

\begin{document}
" `` -- ---

\textsf{" `` -- ---}
\end{document}

答案3

如果您只是希望“有时”禁用花括号,那么您可以执行以下操作(适用于 LuaLaTeX、fontspec;我不了解 XeTeX):

\defaultfontfeatures{} % complete removel
\def\straightquote{{\addfontfeature{Ligatures=ResetAll}'}}
\def\straightdblquote{{\addfontfeature{Ligatures=ResetAll}"}}

确保在定义完所有其他字体后执行此操作,以便删除所有默认字体功能不会传播到以后定义的字体。

然后,在文档正文中,根据需要使用\straightquote\straightdblquote。您需要遵循通常的 TeX 规则,即在宏后面加上空格或 {} 以将其吞噬。

相关内容