使用 MTPro2 在 \textstyle 和 \scriptstyle 之间切换字体

使用 MTPro2 在 \textstyle 和 \scriptstyle 之间切换字体

我很喜欢 Spivak 的 MTPro2 字体,但数字与常规 Times (ptm) 数字不太匹配。有没有巧妙的方法可以更改和数字,\displaystyle\textstyle保留\rmdefault\scriptstyle数字\scriptscriptstyle?我只知道“全有或全无”的方法。

强制性 MWE:

\documentclass{article}
\renewcommand{\rmdefault}{ptm}
\usepackage[lite]{mtpro2}
\def\swap#1{\DeclareMathSymbol{#1}{7}{operators}{`#1}}
\swap1 \swap2 \swap3 \swap4 \swap5 \swap6 \swap7 \swap8 \swap9 \swap0    

\begin{document}
This 5 is nice, but is $5$? And how does $2^5$ and $5^2$ look?
\end{document}

答案1

这是可能的,通过使用\mathchoice并使得数字“数学活跃”:

\documentclass{article}
\usepackage{times}
\usepackage[lite]{mtpro2}

\begingroup
\makeatletter
\newcommand{\adjustdigit}[1]{%
  \begingroup\lccode`~=`#1 \lowercase{\endgroup
    \expandafter\xdef\csname digit\romannumeral#1code\endcsname{\the\mathcode`#1\relax}
    \gdef~{\csname digit\romannumeral#1\endcsname}%
  }
  \expandafter\gdef\csname digit\romannumeral#1\endcsname{{%
    \mathchoice
      {\operator@font\mathchar\csname digit\romannumeral#1code\endcsname}%
      {\operator@font\mathchar\csname digit\romannumeral#1code\endcsname}%
      {\mathchar\csname digit\romannumeral#1code\endcsname}%
      {\mathchar\csname digit\romannumeral#1code\endcsname}%
  }}%
  \AtBeginDocument{\mathcode`#1="8000 }
}
\adjustdigit{0}\adjustdigit{1}
\adjustdigit{2}\adjustdigit{3}
\adjustdigit{4}\adjustdigit{5}
\adjustdigit{6}\adjustdigit{7}
\adjustdigit{8}\adjustdigit{9}
\endgroup

\begin{document}

This 5 is nice, but is $5$? And how does $2^5$ and $5^2$ look?

{\scriptsize 5}$\scriptstyle 5$

{\scriptsize 01234567890}

$\scriptstyle 01234567890$

$\displaystyle 01234567890$

$\textstyle 01234567890$

\end{document}

在此处输入图片描述

\mathit然而,当采用文本或显示样式时,数字不会遵守。

相关内容