我在 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}