我想定义一个新命令,\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
}
大概\larger
从relsize
包装上来说比较适合展示的风格:
\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}