我的问题是:如何在一组点上方写索引?我的意思是
\mathbb{R} \cdots^{HERE} \mathbb{R}
只是说我有“n”次 R 的笛卡尔积。
答案1
让我们举一个更现实的例子:你想把n点上方,表示省略了术语。以下是可能的代码:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ X_{1}\times \stackrel{n}{\cdots} \times X_{n} \]
\[ X_{1}\times \overset{n}{\cdots} \times X_{n} \]
\[ X_{1}\times \cdots \times X_{n} \]
\end{document}
最后一项只是为了比较。结果如下:
一眼就能看出,第一行的所有间距都是错误的,因为按照规则,TeX 会将二进制操作符号转换\times
为普通符号,因为它们不在“合法”操作数之间。\overset
但这种情况不会发生,事实上,如果我们比较第二行和第三行,间距是正确的。
如果二元运算符之间没有出现“上标” \cdots
,则可能需要帮助 TeX 添加正确的间距和
\mathinner{\overset{n}{\cdots}}
是正确的咒语。
最终版本
考虑到以上所有因素,我认为最好的办法是定义一个新命令:
\newcommand{\scdots}[2][]{\mathinner{#1\overset{#2}{\cdots}#1}}
其中,可选参数是为了在需要时提供额外的间距而保留的(我认为上标太长了);所以
\scdots{n}
\scdots{\textup{HERE}}
或者可能,
\scdots[\,]{\textup{HERE}}
如果上标确实与相邻术语冲突。
答案2
\[ a \stackrel{\scriptstyle\mathrm{HERE}}{\cdots} b\]
如果你使用amsmath
并且想让 egreg 高兴,那么另一种选择是\overset
\[ a \overset{\mathrm{HERE}}{\cdots} b\]
答案3
如果将n
索引放在点上方,那么笛卡尔积是否包含n
或n+2
元素实际上可能会产生一些歧义(因为限定符可能被认为不包含第一个和最后一个元素)。为了避免任何此类歧义,您可以使用命令\overbrace
生成以下表达式:
\documentclass{article}
\usepackage{amsmath,amsfonts}
\newcommand{\R}{\mathbb{R}}
\begin{document}
\[ \overbrace{\R\times\cdots\times\R}^{\text{$n$ times}} \]
\end{document}