小 \oplus 和 \otimes

小 \oplus 和 \otimes

我想要有命令\smalloplus\smallotimes可以打印相同符号oplusotimes尺寸较小的命令。

它看起来像(但以更美观的方式并且符号应该相对于字母“居中”)以下内容

在此处输入图片描述

是否有一个经典或方便的方法来做到这一点?

答案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}

在此处输入图片描述

相关内容