答案1
这样就可以了,假如您只希望这些符号出现在文本和显示样式中,而不是出现在 scriptstyle 和 scriptscriptstyle 中。如果您这样做,那么我们必须更加努力:
\documentclass[]{article}
\newcommand\smallmath[2]{#1{\raisebox{\dimexpr \fontdimen 22 \textfont 2
- \fontdimen 22 \scriptscriptfont 2 \relax}{$\scriptscriptstyle #2$}}}
\newcommand\smalloplus{\smallmath\mathbin\oplus}
\newcommand\smallotimes{\smallmath\mathbin\otimes}
\begin{document}
\noindent
$ a \oplus b \otimes c$\\
$ a \smalloplus b \smallotimes c$
\end{document}
解释:\fontdimen 22
参数表示轴高数学字体。因为我们在 textstyle 设置中的 scriptscriptstyle 中设置符号,所以我们需要将符号提升两个轴高度的差值。笔记这\dimexpr
需要 eTeX;如果您的 LaTeX 没有使用 eTeX,则您的 TeX 安装非常旧,应该升级。
当然,如果这太极端的话,您可以选择用 替换所有\scriptscript…
内容。\script…
答案2
第一个版本:
\documentclass{article}
\makeatletter
\newcommand{\smalloplus}{\mathbin{\mathpalette\make@small\oplus}}
\newcommand{\smallotimes}{\mathbin{\mathpalette\make@small\otimes}}
\newcommand{\make@small}[2]{%
\vcenter{\hbox{%
$\m@th\ifx#1\displaystyle\scriptstyle\else\ifx#1\textstyle\scriptstyle
\else\scriptscriptstyle\fi\fi#2$%
}}%
}
\makeatother
\begin{document}
$a\smalloplus b\smallotimes c_{x\smalloplus y\smallotimes z}$
\end{document}
第二个版本(调整缩放因子以适应):
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcommand{\smalloplus}{\mathbin{\mathpalette\make@small\oplus}}
\newcommand{\smallotimes}{\mathbin{\mathpalette\make@small\otimes}}
\newcommand{\make@small}[2]{%
\vcenter{\hbox{%
\scalebox{0.6}{$\m@th#1#2$}%
}}%
}
\makeatother
\begin{document}
$a\smalloplus b\smallotimes c_{x\smalloplus y\smallotimes z}$
\end{document}