我很喜欢 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
然而,当采用文本或显示样式时,数字不会遵守。