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» в нижнем индексе.)

EDIT: Это было исправлено в версии 1.612 (01.12.2019).

введите описание изображения здесь

решение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}

введите описание изображения здесь

Связанный контент