强制线性缩放下标和上标

强制线性缩放下标和上标

也许我太挑剔了,但是我使用的字体在我想使用缩放字体时却使用了设计好的字体作为上标和下标。他们设计的上标和下标字体太短太粗了,我不喜欢。有没有人愿意想办法强制所有上标和下标使用缩放字体而不是设计字体?例如,第一级上标或下标将缩放到原始字体的 70%,而不是使用另一组专门设计为上标或下标的字体。

为了更清楚起见,我谈论的只是数学的下标/上标,是的,我也想要二阶下标/上标的缩放字体。我主要感兴趣的字体是 Math Time Pro 2(精简版),但这更像是一个一般性问题。我想要这种行为的原因是我读过一些书(例如 Griffiths Intro to Quantum Mechanics、McQuarrie & Simon Physical Chemistry),我相信这些书使用的是旧版 Math Time,但没有 Pro 2 版本,因此这些书的下标/上标具有线性缩放(而不是设计的下标/上标),而且看起来好多了。

答案1

LaTeX 使用两种机制选择数学字体大小;第一种是通过\DeclareMathSizesfontmath.ltx在格式创建时读入的文件)包含以下几行

 \DeclareMathSizes{5}{5}{5}{5}
 \DeclareMathSizes{6}{6}{5}{5}
 \DeclareMathSizes{7}{7}{5}{5}
 \DeclareMathSizes{8}{8}{6}{5}
 \DeclareMathSizes{9}{9}{6}{5}
 \DeclareMathSizes{\@xpt}{\@xpt}{7}{5}
 \DeclareMathSizes{\@xipt}{\@xipt}{8}{6}
 \DeclareMathSizes{\@xiipt}{\@xiipt}{8}{6}
 \DeclareMathSizes{\@xivpt}{\@xivpt}{\@xpt}{7}
 \DeclareMathSizes{\@xviipt}{\@xviipt}{\@xiipt}{\@xpt}
 \DeclareMathSizes{\@xxpt}{\@xxpt}{\@xivpt}{\@xiipt}
 \DeclareMathSizes{\@xxvpt}{\@xxvpt}{\@xxpt}{\@xviipt}

该命令有四个参数

  1. #1是字体大小;
  2. #2\displaystyle是当或生效时选择的字体大小\textstyle,即公式中的常用符号;
  3. #3是一级下标和上标的字体大小;
  4. #4是二级(及以上)下标和上标的字体大小。

如果当前字体大小与 声明的字体大小匹配\DeclareFontSizes,则 LaTeX 使用指定的字体大小。否则,它会使用一些启发式方法:或多或少,它在\displaystyle或中使用相同的字体大小\textstyle,其中 70% 用于第一级 {sub|super} 脚本,50% 用于第二级脚本。

控制序列用于从 10pt 开始的尺寸(例如,由于历史原因,实际上\@xipt扩展到)。10.95

因此,为了将 {sub|super}script 大小更改为 12pt,您只需在文档序言中声明,

\makeatletter
\DeclareMathSizes{\@xiipt}{\@xiipt}{7}{5}
\makeatother

对于您使用的每种字体大小以及排版公式,都需要其他类似的声明。

MathTimePro 字体附带的包 ( .sty) 应该包含以下一些声明:查看它们,因为它们与 中的不同;我手头的fontmath.ltx一个旧版本包含mathtime.sty

\DeclareMathSizes{5}     {6}   {6}  {6}
\DeclareMathSizes{6}     {6}   {6}  {6}
\DeclareMathSizes{7}     {6.8} {6}  {6}
\DeclareMathSizes{8}     {8}   {6.8}{6}
\DeclareMathSizes{9}     {9}   {7.6}{6}
\DeclareMathSizes{10}   {10}   {7.6}{6}
\DeclareMathSizes{10.95}{10.95}{7.6}{6}
\DeclareMathSizes{12}   {12}   {9}  {7}
\DeclareMathSizes{14.4} {14.4} {10} {8}
\DeclareMathSizes{17.28}{17.28}{12} {9}
\DeclareMathSizes{20.74}{20.74}{14.4}{10}
\DeclareMathSizes{24.88}{24.88}{17.28}{12}

回想一下,\@xpt是 10,\@xipt是 10.95,\@xiipt是 12,\@xivpt是 14.4,\@xviipt是 17.28,\@xxpt是 20.74,\@xxvpt是 24.88

这是一个例子,五点大小只是为了表明业务有效。

\documentclass[12pt]{standalone}

\DeclareMathSizes{12}{12}{5}{5}

\begin{document}
$A^{2}$---A\textsuperscript{2}
\end{document}

在此处输入图片描述

添加

如果问题不在于使用 MathTimePro (Lite) 字体提供的光学尺寸,则文档序言应该覆盖mtpro2.sty和相关文件中的设置:

% From mtpro2.sty
\DeclareFontShape{LMP1}{mtt}{m}{it}{<-> mt2mit}{}
\DeclareFontShape{LMP1}{mtt}{b}{it}{<-> mt2bmit}{}
\DeclareFontShape{LMP2}{mtt}{m}{n}{<-> mt2syt}{\skewchar\font32}
\DeclareFontShape{LMP2}{mtt}{b}{n}{<-> mt2bsyt}{\skewchar\font32}
\DeclareFontShape{LMP2}{mtt}{eb}{n}{<-> mt2hsyt}{\skewchar\font32}
\DeclareFontShape{U}{mtt}{b}{n}{<-> mt2mbt}{}
\DeclareFontShape{U}{mt2sya}{m}{n}{<-> mt2syat}{}
\DeclareFontShape{U}{mt2sya}{b}{n}{<-> mt2bsyat}{}
\DeclareFontShape{U}{mt2sya}{eb}{n}{<-> mt2hsyat}{}
% From umt2bb.fd
\DeclareFontShape{U}{mt2bb}{m}{n}{<-> mt2bbt}{}
\DeclareFontShape{U}{mt2bb}{m}{it}{<-> mt2bbit}{}
\DeclareFontShape{U}{mt2bb}{b}{n}{<-> mt2bbdt}{}
% From umt2hrb.fd
\DeclareFontShape{U}{mt2hrb}{m}{n}{<-> mt2hrbt}{}
\DeclareFontShape{U}{mt2hrb}{m}{it}{<-> mt2hbit}{}
\DeclareFontShape{U}{mt2hrb}{b}{n}{<-> mt2hrbdt}{}
% From umt2mf.fd
\DeclareFontShape{U}{mt2mf}{m}{n}{<-> mt2mft}{}
\DeclareFontShape{U}{mt2mf}{b}{n}{<-> mt2bmft}{}
% From umt2ms.fd
\DeclareFontShape{U}{mt2ms}{m}{n}{<-> mt2mct}{}
\DeclareFontShape{U}{mt2ms}{m}{it}{<-> mt2mst}{}
\DeclareFontShape{U}{mt2ms}{b}{it}{<-> mt2bmst}{}

并非所有字体形状都可以在精简版中定义。

答案2

对于当前字体,您可以重新定义上标宏。下标也同样可以。

\documentclass{article}
\usepackage{fixltx2e}
\begin{document}

2\textsuperscript{nd} floor H\textsubscript{2}O

\makeatletter
\def\@textsuperscript#1{%
  {\m@th\ensuremath{^{\mbox{\fontsize{5pt}\z@#1}}}}}
\def\@textsubscript#1{%
  {\m@th\ensuremath{_{\mbox{\fontsize{5pt}\z@#1}}}}}
\makeatother
2\textsuperscript{nd} floor H\textsubscript{2}O

\end{document}

在此处输入图片描述

相关内容