如何制作一个命令让带圆圈的字母适用于所有字体大小?

如何制作一个命令让带圆圈的字母适用于所有字体大小?

我引入了以下宏

\newcommand{\malcev}{\mathop{\text{\textcircled{\scriptsize M}}}\nolimits}
\newcommand{\imalcev}{\mathop{\text{\textcircled{\tiny M}}}\nolimits} 

代码

\[
  \mathbf{V} \malcev \mathbf{W}  \qquad  F_{\mathbf{V} \imalcev \mathbf{W}} \qquad S^{\mathbf{V} \imalcev \mathbf{W}} 
\]

现在产生了可接受的结果

Malcev 示例

然而,这肯定不是一个干净的解决方案,因为我必须根据字体大小手动在 \malcev 和 \imalcev 之间切换(更不用说可能的双上标)。我正在寻找一个更好的解决方案(如果可能的话避免使用 tikz)。我查看了以下问题

  1. 制作 \textcircled 数字的好方法?
  2. 如何给操作符加上圆圈?
  3. 如何制作一个命令让组合符号适用于所有字体大小?

这些当然是相关的,但我无法从他们的回答中得到我想要的确切信息。其中一个困难是我在脚本大小的字母上使用 \textcircled(否则我的符号会太大),但这可能不是一个好主意。任何帮助都将不胜感激。

答案1

在这种情况下直接使用\mathchoice似乎更好:

\documentclass{article}
\usepackage{fix-cm} % make font arbitrarily scalable
\usepackage{amsmath}

\newcommand{\malcev}{\mathbin{
  \mathchoice
    {\mbox{\normalsize\textcircled{\scriptsize M}}}
    {\mbox{\normalsize\textcircled{\scriptsize M}}}
    {\mbox{\scriptsize\textcircled{\tiny M}}}
    {\mbox{\tiny\textcircled{\fontsize{3.5}{3.5}\selectfont M}}}
  }
}

\begin{document}
\[
\mathbf{V} \malcev \mathbf{W}  \qquad
F_{\mathbf{V} \malcev \mathbf{W}} \qquad
S^{\mathbf{V} \malcev \mathbf{W}^{\malcev}}
\]
\end{document}

在此处输入图片描述

相关内容