\text 与 \scalebox

\text 与 \scalebox

我正在编辑的稿件的作者正在使用\medcup下面 MWE 中的宏。我们注意到,如果在命令中使用宏,它会完全缩放\text。有人能解释一下为什么吗?

\documentclass[a4paper]{memoir}
\usepackage{amsmath}%,scalerel}
\usepackage{graphicx}

\def\medcup{%
  \operatornamewithlimits{%
    \mathchoice{\vcenter{\hbox{\scalebox{1.2}{$\bigcup$}}}}
    {\vcenter{\hbox{$\bigcup$}}}%
    {\bigcup}%
    {\bigcup}%
  }%
}

\begin{document}

\[
  \text{Inside \cs{text}: $ \medcup_{n = 1}^{\infty} $}
\]

\[
  \text{Not inside \cs{text}: }  \medcup_{n = 1}^{\infty}
\]

\end{document}

在此处输入图片描述

答案1

\medcup在显示方程中使用时,它通常会生成文本样式的缩放版本。然而,在第一个方程中,由于导致命令插入,因此使用了\bigcup显示样式的缩放版本。\bigcup\text\displaystyle$\bigcup$

\text命令的设计使得其参数中的任何方程式都以当前数学样式排版,\displaystyle在本例中为。其定义包含一个\mathcoice,其\displaystyle分支实际上由

\hbox{{\everymath{\displaystyle}\let\f@size\f@size\selectfont #1}}

因为这设置了\everymath={\displaystyle}\displaystyle将被插入到每一个的参数内的方程。这包括的定义中的\text第一个方程。因此,您的第一个方程实际上变成了$\bigcup$\medcup

\[
  \hbox{Inside \cs{text}: 
    $\displaystyle
      \operatornamewithlimits{
        \vcenter{\hbox{{\scalebox{1.2}{$\displaystyle\bigcup$}}}}
      }_{n = 1}^{\infty}
    $
  }
\]

从而生成了 的显示样式版本的缩放版本\bigcup,而不是文本样式版本。


为了确保始终使用 的文本样式版本,您可以在 的定义中\bigcup明确插入:\textstyle\medcup

\newcommand*\medcup{%
  \operatorname*{%
    \mathchoice{\vcenter{\hbox{\scalebox{1.2}{$\textstyle\bigcup$}}}}%
    {\bigcup}%
    {\bigcup}%
    {\bigcup}%
  }%
}

(我还按照 egreg 的建议替换了已弃用\operatnamewithlimits\operatorname*并简化了分支\textstyle此评论

答案2

\[\text{$\mathchoice{D}{T}{S}{s}$}\]这与产生Displaystyle 而不是 extstyle 的事实有关T

因此,\textstyle需要添加定义来克服这种行为。

\documentclass[a4paper]{memoir}
\usepackage{amsmath}%,scalerel}
\usepackage{graphicx}

\def\medcup{%
  \operatornamewithlimits{%
    \mathchoice{\vcenter{\hbox{\scalebox{1.2}{$\bigcup$}}}}
    {\vcenter{\hbox{$\bigcup$}}}%
    {\bigcup}%
    {\bigcup}%
  }%
}

\begin{document}

\[
  \text{Inside \cs{text}: $\textstyle \medcup_{n = 1}^{\infty} $}
\]

\[
  \text{Not inside \cs{text}: }  \medcup_{n = 1}^{\infty}
\]

\[\text{$\mathchoice{D}{T}{S}{s}$}\]
\[\bigcup\scalebox{1.2}{$\bigcup$}\text{$\scalebox{1.2}{$\bigcup$}$}\]
\[\bigcup\scalebox{1.2}{$\bigcup$}\text{$\scalebox{1.2}{$\textstyle\bigcup$}$}\]

\def\medcup{%
  \operatornamewithlimits{%
    \mathchoice{\vcenter{\hbox{\scalebox{1.2}{$\textstyle\bigcup$}}}}
    {\vcenter{\hbox{$\textstyle\bigcup$}}}%
    {\bigcup}%
    {\bigcup}%
  }%
}

\[
  \text{Inside \cs{text}: $\textstyle \medcup_{n = 1}^{\infty} $}
\]

\[
  \text{Not inside \cs{text}: }  \medcup_{n = 1}^{\infty}
\]
\end{document}

在此处输入图片描述

输出的前两行来自 OP 的原始定义。然后我用“D”行演示了显示/文本样式问题。

然后我在下一行展示了第三个大杯应该与第二个大杯相同,但由于这种行为,事实并非如此。

下一行通过明确调用来解决这个问题\textstyle

最后,我改变了 OP 的定义,明确添加了\textstyle,以解决整个问题。

相关内容