将给定符号放在 \cup 内,如 \uplus

将给定符号放在 \cup 内,如 \uplus

有人知道如何创建一个命令,将给定的符号作为参数放在 \cup 里面吗?

例如,命令 \uplus 在 \cup 内有符号“+”。我希望能够将任何给定符号放在 \cup 内(特别是字母“k”)。一个重要的问题是符号的大小必须符合上标数学模式。实际上,这个符号的大小必须小一点,\uplus 中 \cup 内的“+”也是如此。

下图更好地解释了我所说的内容。

在此处输入图片描述

我希望获得与第二种情况(从左到右)类似的结果。

提前致谢!

答案1

\stackinset来自的命令可以stackengine做到这一点:

\documentclass[border = 2pt]{standalone}

 \usepackage{stackengine} %
\newcommand\cupk{\ensurestackMath{\stackinset{c}{0ex}{c}{0.2ex}{\scriptscriptstyle k}{\scriptstyle\cup}}}

\begin{document}

$B^{\cupk} $

\end{document} 

在此处输入图片描述

答案2

为此,我们需要完全可扩展的字体,因此fix-cm如果文档采用的是标准 Computer Modern 字体,则无需选择其他字体。

\RequirePackage{fix-cm}
\documentclass{article}
\usepackage{amsmath}

\makeatletter
\DeclareRobustCommand{\vcup}[1]{%
  \mathbin{\vphantom{\cup}\mathpalette\vcup@{#1}}%
}
\newcommand{\vcup@}[2]{%
  \ooalign{%
    $\m@th#1\cup$\cr
    \hidewidth
    \raisebox{%
      \dimexpr\depth+\demote@{#1}\dimexpr1.5pt\relax\relax
    }{\fontsize{\demote@{#1}\dimexpr\f@size pt}{\z@}\selectfont\check@mathfonts
      $\m@th#2$}%
    \hidewidth\cr
  }%
}
\newcommand{\demote@}[1]{%
  \ifx#1\displaystyle 0.7
  \else\ifx#1\textstyle 0.7
  \else\ifx#1\scriptstyle 0.5
  \else 0.4\fi\fi\fi
}
\makeatother

\begin{document}

$A\vcup{k}B^{\vcup{k}}$

$\uplus\scriptstyle\uplus\scriptscriptstyle\uplus$
$\vcup{k}\scriptstyle\vcup{k}\scriptscriptstyle\vcup{k}$
$\vcup{y}\scriptstyle\vcup{y}\scriptscriptstyle\vcup{y}$
$\vcup{g}\scriptstyle\vcup{g}\scriptscriptstyle\vcup{g}$

\end{document}

在此处输入图片描述

相关内容