从 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
答案2
要禁用 TeX 类型的连字,您可以将选项传递RawFeature=-tlig
给指令\setmainfont
、\setsansfont
等(tlig
是“TeX 样式连字”的缩写;-tlig
禁用“tlig”字体功能。)无需执行此操作,因为\setmonofont
TeX 样式连字默认不适用于等宽字体。
\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 规则,即在宏后面加上空格或 {} 以将其吞噬。