newtxmath 与 libertine:下​​标中的“g”不同

newtxmath 与 libertine:下​​标中的“g”不同

下面的例子在简单的下标中给出了不同的“g”:

\documentclass{article}

\usepackage{mathtools,amssymb}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}


\begin{document}
\[g \ \mu_g \ A_{\mu_g}\]

\end{document}

有没有快速修复此问题的方法?(编辑:使用 MiKTex 2.9.7250,使用 overleaf 编译相同的代码会在下标中给出“正确”的“g”。)

编辑:此问题已在版本 1.612(2019-12-01)中修复。

在此处输入图片描述

答案1

显然,nxlmi字体在尺寸 10 和 5 处有错误的字形,而在尺寸 7 处有正确的字形。

在字体级别修复该问题之前,您可以通过告诉 LaTeX 从其他字体中获取“g”来解决这个问题。

\documentclass{article}

\usepackage{mathtools,amssymb}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}

\DeclareSymbolFont{libertineg}{\encodingdefault}{\familydefault}{m}{it}
\SetSymbolFont{libertineg}{bold}{\encodingdefault}{\familydefault}{b}{it}
\DeclareMathSymbol{g}{\mathalpha}{libertineg}{`g}

\begin{document}

\[g \ \mu_g \ A_{\mu_g}\ \textit{g}\]

\end{document}

在此处输入图片描述

如果想要“变体 g”,那就更复杂一些:我们只需要在脚本样式时缩小文本样式“g”。

\documentclass{article}

\usepackage{mathtools,amssymb}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\usepackage{xfp,graphicx}

\newcommand{\fixg}{{%
  \mathchoice
    {\normalg}% displaystyle
    {\normalg}% textstyle
    {\scaledg}% scriptstyle
    {\normalg}% scriptscriptstyle
}}
\makeatletter
\newcommand{\scaledg}{%
  \scalebox{\fpeval{\sf@size/\f@size}}{$\m@th\normalg$}%
}
\begingroup\lccode`~=`g \lowercase{\endgroup\let~\fixg}
\edef\normalg{\mathchar\the\mathcode`g }
\AtBeginDocument{\mathcode`g="8000 }

\begin{document}

\[g \ \mu_g \ A_{\mu_g}\]

\end{document}

在此处输入图片描述

相关内容