如何缩放 newtxmath 字体以匹配缩放的 garamondx

如何缩放 newtxmath 字体以匹配缩放的 garamondx

以下是 MWE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled=0.5]{garamondx}
\usepackage[garamondx]{newtxmath}
% \usepackage[garamondx,scaled=0.5]{newtxmath} % <- doesn't work
% \usepackage[scaled=0.5]{newtxmath}           % <- works, but looks wrong
\begin{document}
\textsl{aaa} $aaa$
\end{document}

数学符号明显太大了。但是,如果我使用包garamondx的选项newtxmath,该scaled选项就不再起作用了。我该如何解决这个问题,让数学符号变小?

(我使用 0.5 来使事情更加明显。实际上,我使用的是 0.95。)

答案1

如果我使用 0.95 的缩放系数测量斜体“a”的高度,我会得到 4.24648pt 的高度。对于数学斜体“a”,我会得到 4.51999pt。

因此,精确到四位小数的比例因子应该是 0.93949。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled=0.95]{garamondx}
\usepackage[garamondx,scaled=0.93949]{newtxmath}

\begin{document}

\sbox0{a}\the\ht0

\sbox0{$a$}\the\ht0

\textsl{aaa} $aaa$
\end{document}

重要的提示为了使代码正常工作,您需要garamondx使用getnonfreefonts --sys(或等效方法)进行更新;新版本于 2020-10-04 发布。

在此处输入图片描述


旧答案尚未更新

如果我使用 0.95 的缩放系数测量斜体“a”的高度,我会得到 4.24648pt 的高度。对于数学斜体“a”,我会得到 4.51999pt。

因此,四位小数的缩放因子应为 0.93949。不幸的是

\usepackage[garamondx,scale=0.93949]{newtxmath}

由于错误而omlzgmmi.fd失败

\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
  \let\ntxmath@@scaled\@empty%
\else
  \edef\ntxmath@@scaled{s*[\csname ntxmath@scaled\endcsname]}%
\fi

但代码应该是

\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
  \let\ntxmath@@scaled\@empty
\else
  \let\ntxmath@@scaled\ntxmath@scaled
\fi

因为在 的最新版本中newtxmath,宏\ntxmath@scaled已经扩展为s*[<scaling factor>]。(我猜它以前只是扩展为比例因子)。

解决方法:自己加载zgmmi

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled=0.95]{garamondx}
\usepackage[garamondx,scaled=0.9395]{newtxmath}

\makeatletter
\DeclareFontFamily{OML}{zgmmi}{\skewchar \font =127}
\DeclareFontShape{OML}{zgmmi}{m}{it}{<-> \ntxmath@scaled zgmmi}{}
\DeclareFontShape{OML}{zgmmi}{b}{it}{<-> \ntxmath@scaled zgmbmi}{}
\DeclareFontShape{OML}{zgmmi}{m}{sl}{<->ssub * zgmmi/m/it}{}
\DeclareFontShape{OML}{zgmmi}{bx}{it}{<->ssub * zgmmi/b/it}{}
\DeclareFontShape{OML}{zgmmi}{b}{sl}{<->ssub * zgmmi/b/it}{}
\DeclareFontShape{OML}{zgmmi}{bx}{sl}{<->ssub * zgmmi/b/sl}{}
\makeatother

\begin{document}

\sbox0{a}\the\ht0

\sbox0{$a$}\the\ht0

\textit{aaa} $aaa$
\end{document}

前两行显示高度差异可以忽略不计。

相关内容