如何让定义的bigcupdot中的点自动改变大小?

如何让定义的bigcupdot中的点自动改变大小?

我在 TSE 中搜索并找到了解决方案定义。如您所见,无论是否采用显示样式,\bigcupdot中的点的大小都是固定的。我尝试使用命令让点自动改变其大小,但失败了!\bigcupdot\ifx谁能修复以下代码? 欢迎任何帮助。

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\makeatletter
\providecommand*{\bigcupdot}{%
  \mathop{%
    \vphantom{\bigcup}%
    \mathpalette\@bigcupdot{}%
  }%
}
\newcommand*{\@bigcupdot}[2]{%
  \ooalign{%
    $\m@th#1\bigcup$\cr
    \sbox0{$#1\bigcup$}%
    \dimen@=\ht0 %
    \advance\dimen@ by -\dp0 %
    \sbox0{%
    \ifx\displaystyle\scalebox{1.7}{$\m@th#1\cdot$}\else
    \ifx\textstyle\scalebox{1.4}{$\m@th#1\cdot$}\else
    \ifx\scriptstyle\scalebox{1.2}{$\m@th#1\cdot$}\else
    \scalebox{1.1}{$\m@th#1\cdot$}\fi\fi\fi
    }%
    \advance\dimen@ by -\ht0 %
    \dimen@=.5\dimen@
    \hidewidth\raise\dimen@\box0\hidewidth
  }%
}
\makeatother

\begin{document}
\[ \bigcupdot a=\biguplus mn\]
\end{document}

答案1

您可以参数化比例因子:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}

\makeatletter
\providecommand*{\bigcupdot}{%
  \mathop{%
    \vphantom{\bigcup}%
    \mathpalette\@bigcupdot{}%
  }%
}
\newcommand*{\@bigcupdot}[2]{%
  \ooalign{%
    $\m@th#1\bigcup$\cr
    \sbox0{$#1\bigcup$}%
    \dimen@=\ht0 %
    \advance\dimen@ by -\dp0
    \sbox0{\scalebox{\@dotscale{#1}}{$\m@th#1\cdot$}}%
    \advance\dimen@ by -\ht0
    \dimen@=.5\dimen@
    \hidewidth\raise\dimen@\box0\hidewidth
  }%
}
\newcommand{\@dotscale}[1]{%
  \ifx#1\displaystyle 1.7\else\ifx#1\textstyle 1.4\else
  \ifx#1\scriptstyle 1.2\else 1.1\fi\fi\fi
}
\makeatother

\begin{document}

$\displaystyle\bigcupdot$
$\textstyle\bigcupdot$
$\scriptstyle\bigcupdot$
$\scriptscriptstyle\bigcupdot$

\end{document}

在此处输入图片描述

相关内容