自动调整括号中数学运算符的大小

自动调整括号中数学运算符的大小

我想定义一个新命令,\mathbb{E}以相同的方式格式化\sum- 显示/内联公式中的相同大小,以及下标/上标的相同处理。以下似乎有效...

\newcommand*{\bbe}{%
   \ifinner
      \mathbb{E}%
   \else
      \mathop{\displaystyle\vcenter{\hbox{\huge$\mathbb{E}$}}}%
   \fi
}

...除了在显示公式中,当在自动调整大小的括号内(例如\left( \bbe_x \right))时,它会恢复将其视为内联公式(因此尺寸较小,下标在右侧而不是下方)。

我不确定是什么导致了这个问题;如能得到任何建议我将非常感激!

答案1

对于此应用程序来说,该\ifinner测试并不安全。事实上,只要 TeX 在数学模式下打开新的数学列表,条件就会为真。

以下 Plain TeX 代码显示了这一点:

\def\x{\ifinner\message{inner}\else\message{outer}\fi}
$${\x}$$

将会打印inner在日志文件中。在\left-\right对中也会发生同样的情况。

您需要的是\mathchoice,它仅取决于当前的数学风格,它不会在数学子列表中改变。

\newcommand*{\bbe}{%
  \mathop{
    \mathchoice{\vcenter{\hbox{\huge$\mathbb{E}$}}}
               {\kern0pt\mathbb{E}}
               {\kern0pt\mathbb{E}}
               {\kern0pt\mathbb{E}}
  }\displaylimits
}

大概\largerrelsize包装上来说比较适合展示的风格:

\usepackage{relsize}
\newcommand*{\bbe}{%
  \mathop{
    \mathchoice{\vcenter{\hbox{\larger[4]$\mathbb{E}$}}}
               {\kern0pt\mathbb{E}}
               {\kern0pt\mathbb{E}}
               {\kern0pt\mathbb{E}}
  }\displaylimits
}

答案2

\ifinner这是错误的测试,你需要\mathchoice

在此处输入图片描述

\documentclass{article}
\usepackage{amssymb}
\def\xbbe#1#2{\hbox{#1$#2\mathbb{E}$}}
\def\bbe{\mathop{%
\mathchoice
{\xbbe\huge\displaystyle}%
{\xbbe{}\displaystyle}%
{\xbbe{}\scriptstyle}%
{\xbbe{}\scriptscriptstyle}%
}}

\begin{document}

$a \bbe_0^1 $

\[ \bbe_0^1 \qquad \frac{\bbe_0^1}{\bbe_0^1} \]

\end{document}

相关内容