我在一个较大的文档中设置了相当复杂的字体,最近我注意到数学模式中的希腊字母和下标有一些奇怪的间距。
我在 MWE 上验证过(见下文),它不是cmap
、microtype
,甚至不是lato
(为什么会是?)。罪魁祸首似乎是mathdesign
。我有一种用大锤修复的方法——在感觉正确的地方使用负空间,但这不可能是一个正确的解决方案。它还要求每个字母对的间距量不同。这种效果在 TeXLive 2016 和 2017 中存在。
正确的解决方法是什么?
带有,的 MWE 版本mathdesign
:garamondx
标准字体(lmodern
):
\!
手动添加负空间:
梅威瑟:
%\documentclass[a4paper,11pt,twoside,openright,final]{memoir}
\documentclass{standalone}
\usepackage{cmap} %% copy-paste usable
%% hyphenation?
%\usepackage[english]{babel}
\usepackage[main=british,ngerman,french]{babel}
%% quotes
\usepackage[babel=true]{csquotes}
\defineshorthand{"`}{\openautoquote}
\defineshorthand{"'}{\closeautoquote}
\useshorthands{"}
\useshorthands{"}
\addto\extrasenglish{\languageshorthands{ngerman}}
\usepackage[T1]{fontenc}
\usepackage[full]{textcomp}
\usepackage{lmodern}
\usepackage{amsmath}
%% works too, finer
%% the current standard
\usepackage[garamond]{mathdesign}
%\usepackage[garamondx]{newtxmath} %% does not work, unsure if better
\usepackage[full]{textcomp}
%\usepackage{garamondx}
\usepackage[swashQ]{garamondx}
\usepackage[T1]{fontenc}
%\newcommand{\mathbold}[1]{\ensuremath{\boldmath{#1}}}
\newcommand{\mathbold}[1]{\ensuremath{\mathbf{#1}}}
\usepackage[supstfm=NewG8-sups]{superiors}
%% the real sans-serif for texts
\usepackage[scale=0.91,defaultsans]{lato}
\usepackage[activate={true,nocompatibility},kerning=true,spacing=true,tracking=true,final]{microtype}
\microtypecontext{spacing=nonfrench} %% log said so
\begin{document}
The subscripts with greek letters have too much horizontal spacing:
$\epsilon_l$, $\varepsilon_l$, $\varepsilon_{\textup{\emph{l}}}$, $\varepsilon{}_l$.
$\epsilon_g$, $\varepsilon_g$, $\varepsilon_{\textup{\emph{l}}}$, $\varepsilon{}_g$.
$d_l$, $d_l$, $d_{\textup{\emph{l}}}$.
$\xi_l$, $\xi_\phi$, $\xi_{\textup{\emph{l}}}$.
\end{document}