想法(来自这里):我使用\symbol{idx}
,其中 idx 是字形索引。
为了确定这两个字形的索引,我查看了...texmf-var\luatex-cache\generic\fonts\otf\garamondpremrpro.lua
fontforge 和 MS Word,并验证了结果。三者都报告说,“34”和“39”应该是正确的索引 - 请参见以下屏幕截图:
我还使用“blacksquare”(9632)的索引验证了总体思路:虽然黑色方块设置正确,但是使用以下代码不会显示 quotedbl/quotesingle:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\newcommand{\blackSquare}{\symbol{9632}} %<-- works fine
\newcommand{\straightQuoteDbl}{\symbol{34}} %<-- does not work
\newcommand{\straightQuoteSingle}{\symbol{39}} %<-- does not work
\begin{document}
{\straightQuoteDbl}Hello World! \blackSquare\straightQuoteDbl
{\straightQuoteSingle}Hello World! \blackSquare\straightQuoteSingle
\end{document}
该代码产生以下输出:
这两个引述显然与 MS Word 生成的结果不同(见上文)。
System environment: Win 7 Pro 64-bit
TeX-Environment: texlive 2014 (frozen)
Font: Garamond Premier Pro Version 2.0.104
我究竟做错了什么?
答案1
出现花括号是因为在 的最新版本中 TeX 连字默认处于启用状态fontspec
。如果您的文档仅包含代码,您可以使用 禁用 TeX 连字\setmainfont
,如下所示:
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}[RawFeature=-tlig]
\newcommand{\blackSquare}{\symbol{9632}}
\begin{document}
"Hello World! \blackSquare"
\end{document}
或者,正如 egreg 所建议的,您可以\defaultfontfeatures{}
在序言中加入;这会影响 Garamond 和文档中使用的任何其他字体:
\documentclass[12pt]{article}
\usepackage{fontspec}
\defaultfontfeatures{RawFeature=-tlig}% put before specific fonts to affect them all
\setmainfont{Garamond Premier Pro}
\newcommand{\blackSquare}{\symbol{9632}}
\begin{document}
"Hello World! \blackSquare"
\end{document}
如果您只想在文档的一部分中使用直接引号,请使用此方法:
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\newcommand{\blackSquare}{\symbol{9632}}
\begin{document}
``Hello, beautiful World!''
{\addfontfeatures{RawFeature=-tlig}"Hello World! \blackSquare"}
\end{document}
(如果愿意的话,您可以定义一个宏来缩短它。)
或者,您可以全局禁用 TeX 连字,如两个示例所示,并在需要时在源中输入真正的“,”,',',- 和 —。
答案2
您可以使用csquotes
定义使用这些直引号的引用样式:
该\DeclareQuoteStyle
命令有 5 个位置参数、样式的名称、外部和内部引号的开始和结束标记:
然后您可以将该样式与 一起使用\setquotestyle{<name>}
。
\documentclass[border=5pt]{standalone}
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{csquotes}
\DeclareQuoteStyle{straight}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{34}}}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{34}}}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{39}}}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{39}}}
\setquotestyle{straight}
\begin{document}
John said: \enquote{Harry said \enquote{Hello World!} yesterday}.
\end{document}
需要额外的花括号来使字体特征的改变仅限于引号局部。
结果如下: