有没有什么方法可以猜测我们所在的文本是否是上标/下标?

有没有什么方法可以猜测我们所在的文本是否是上标/下标?

我有一个宏,用于在书中文本罗马字的任何地方打印(重心)\CM。但是当在下标中时,我希望它比默认的正常下标大小小得多,所以我有这个:

\newcommand\CM{\ifmmode\textrm{\fontsize{3.5}{5}\selectfont CM}\else{{\textrm{CM}}}\fi}

但我不想,\ifmathmode但我想:\ifsubsupmode或者任何猜测参数打印方式的东西都是较小的尺寸(上标/下标)

但我没有找到类似的东西

答案1

我只需使用\mathrm{CM}

\documentclass[twocolumn]{article}
\usepackage{amsmath}

\newcommand{\CM}{\mathrm{CM}}

\begin{document}

\begin{gather}
\CM_{\CM_{\CM}}
\\
\CM=x_{\CM}+y
\\
\CM=x^{}_{\CM}+y
\end{gather}

\end{document}

在此处输入图片描述

注:twocolumn只是为了制作一张较小的图片。

你会看到,在 (3) 中,下标被降低了。无论如何,我都会选择 (2)。

如果你真的想要减小下标的大小,你可以。

\documentclass[twocolumn]{article}
\usepackage{amsmath}

\usepackage{unicode-math}

\makeatletter
\newcommand{\CM}{{\mathpalette\CM@\relax}}
\newcommand{\CM@}[2]{%
  \ifx#1\displaystyle\mathrm{CM}\else
  \ifx#1\textstyle\mathrm{CM}\else
  \ifx#1\scriptstyle\CM@@{\sf@size}\else
  \CM@@{\ssf@size}\fi\fi\fi
}
\newcommand{\CM@@}[1]{%
  \mbox{\fontsize{\fpeval{#1*0.8}}{0}$\m@th\mathrm{CM}$}%
}
\makeatletter

\begin{document}

\begin{gather}
\CM_{\CM_{\CM}}
\\
\CM=x_{\CM}+y_{z_{\CM}}
\end{gather}

\end{document}

在此处输入图片描述

答案2

正如 Mico 所说,\mathrm在数学模式下使用。

正如 yannisl 提到的,数学选择允许自定义四种数学样式(\displaystyle\textstyle\scriptstyle\scriptscriptstyle。您可以强制\scriptscriptstyle代替\scriptstyle

\documentclass{article}

\newcommand\CM{\mathchoice
  {\mathrm{CM}}% \displaystyle
  {\mathrm{CM}}% \textstyle
  {\scriptscriptstyle\mathrm{CM}}% \scriptstyle
  {\mathrm{CM}}% \scriptscriptstyle
}


\begin{document}

\begin{displaymath}
  \displaystyle \CM \qquad
  \textstyle \CM \qquad
  \scriptstyle \CM \qquad
  \scriptscriptstyle \CM
\end{displaymath}

\begin{displaymath}
  \CM_{{\CM}_{\CM}}
\end{displaymath}

\end{document}

使用 mathchoice 进行定制

答案3

我的最终解决方案(感谢您的帮助!)

\documentclass[border=2pt]{standalone}

\newcommand\CM{\ifmmode{\mathchoice%
  {\textrm{CM}}% \displaystyle
  {\textrm{CM}}% \textstyle
  {\textrm{\fontsize{4.5}{6}\selectfont CM}}% \scriptstyle
  {\textrm{\fontsize{3}{4}\selectfont CM}}% \scriptscriptstyle
}\else{\textrm{CM}}\fi}

\newcommand\wCM{\ifmmode\mathrm{CM}\else{CM}\fi}

\begin{document}

$A^\textrm{\fontsize{2}{3}\selectfont A}$
$A^\mathrm{\fontsize{2}{3}\selectfont A}$

\begin{tabular}{lll}
  Normal text:  & a \wCM    & a \CM   \\
  Math text:    & $a \wCM$  & $a \CM$ \\
  Disp. math:   & $\displaystyle a\wCM$  & $\displaystyle a\CM$ \\
  Script:       & $a_\wCM$ & $a_\CM$ \\
  Scriptscript: & $a_{\wCM_\wCM}$ & $a_{\CM_\CM}$ \\
\end{tabular}

\end{document}

在此处输入图片描述

相关内容