如何实现在强大的命令中下标/上标随着字体大小缩放?

如何实现在强大的命令中下标/上标随着字体大小缩放?

我想在用户定义的 LaTeX 命令中使用较小的字体作为下标和上标。您知道如何按比例缩小下标/上标吗?我的 MWE 如下:

\documentclass{article}

\usepackage{etoolbox}
\usepackage{ifmtarg}

\newcommand{\defineSpecies}[2]{\csdef{spec@#1}{#2}}
\newrobustcmd{\spec}[1]{%
  \ifcsname spec@#1\endcsname%
    \csuse{spec@#1}%
  \else
    \GenericError{}{Undefined species `#1'}{}{}
  \fi
}

\defineSpecies{hhe3+}{HHe$_3^+$}

\begin{document}

\fontsize{5}{6}\selectfont
\spec{hhe3+}

\end{document}

在这里,我希望下标3和上标小得多+。最好采用全局修改命令的解决方案\spec{},因为我有很多物种都是这样定义的。我不会切换到其他“化学”包,而是坚持使用此命令。

答案1

我假设你的问题是

我将文本字体大小更改为 5pt,但现在上标和下标看起来太大;我该如何更改它们以匹配?

由于您使用数学模式创建上标/下标,因此需要更改数学大小。这是\DeclareMathSizes{}{}{}{}通过命令完成。在下面的例子中,我将脚本大小更改为 3pts,将脚本大小更改为 2pts。

(顺便说一句,由于你没有指定花哨的字体,我们使用 Computer Modern,它不允许任意缩放;为了解决这个问题,我们加载fix-cm

\RequirePackage{fix-cm}
\documentclass{article}
\usepackage{etoolbox}
\usepackage{ifmtarg}

\newcommand{\defineSpecies}[2]{\csdef{spec@#1}{#2}}
\newrobustcmd{\spec}[1]{%
  \ifcsname spec@#1\endcsname%
    \csuse{spec@#1}%
  \else
    \GenericError{}{Undefined species `#1'}{}{}
  \fi
}

\defineSpecies{hhe3+}{HHe$_3^+$}

\DeclareMathSizes{5}{5}{3}{2}

\begin{document}

\fontsize{5}{6}\selectfont
\spec{hhe3+}

\end{document}

在此处输入图片描述

相关内容