创建带圆圈的小写 Omega

创建带圆圈的小写 Omega

\omega我需要一个看起来和行为都像 的amssymb圆圈。\circledast以下是我目前所拥有的:

\documentclass[margin=2mm]{standalone}

\usepackage{amsmath}
\usepackage{amssymb}

\usepackage{tikz}

\newsavebox{\circledomegabox}
\savebox{\circledomegabox}{\tikz[baseline=-.75ex]{%
    \node [shape=circle,draw,inner sep=0,scale=0.65] (char) {\ensuremath{\hspace*{0.2mm}\omega}};}}

\newcommand{\circledomega}{\makeatletter%
  \def\c@rcled{\usebox{\circledomegabox}}%
  \smash{\mathchoice{\text{\small\ensuremath{\c@rcled}}}%
    {\text{\small\ensuremath{\c@rcled}}}%
    {\text{\scriptsize\ensuremath{\c@rcled}}}%
    {\text{\tiny\ensuremath{\c@rcled}}}}%
  \makeatother}

\begin{document}

{\scriptsize $\circledomega$} $\Sigma^{\circledomega} \Sigma^\omega \Sigma^* \Sigma^\circledast$
$\displaystyle  \Sigma^\omega \Sigma^{\circledomega} \Sigma^\circledast \Sigma^*$

\end{document}

上述代码的输出

正如您所见,这种方法存在一些问题:

  1. 带圆圈的 omega 的基线与普通 omega 的基线不对齐。当然,我可以进行调整baseline=以获得更好的效果。但是有没有办法让它自动对齐?
  2. 带圆圈的 omega 比正常的 omega 粗体。这是为什么?我该如何修复?
  3. 圆的尺寸和线宽与 不匹配\circledast。我如何确定它们的确切值?

编辑:正如在对 egreg 的回答的评论之一中出现的问题一样:该符号仅在的上下文中使用\Sigma^\circledomega,因此它在其他上下文中的外观并不重要。

答案1

一种简单的方法是使用amsmath

\usepackage{amsmath}
\newcommand*{\circledomega}{\text{\textcircled{$\omega$}}}

更长的方法是\ooalign

\documentclass{article}

\makeatletter
\newcommand*{\circledomega}{\mathpalette\@circledomega\relax}
\newcommand*{\@circledomega}[2]{%
  \setbox0=\hbox{\m@th$#1\omega$}%
  \setbox1=\hbox{\m@th$#1\bigcirc$}%
  {\ooalign{\hfil\box0\hfil\cr\hfil\box1\hfil}}%
}
\makeatother

\begin{document}
$
{\displaystyle\circledomega\omega}
{\textstyle\circledomega\omega}
{\scriptstyle\circledomega\omega}
{\scriptscriptstyle\circledomega\omega}
$
\end{document}

不过,我不确定我能否帮助你解决第 3 点。\circledast我认为周围的圆圈太小了\omega

答案2

按照老方法做,通过调整定义\textcircled

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

\makeatletter
\DeclareRobustCommand{\circledomega}{\text{\circled@omega}}

\newcommand{\circled@omega}{%
   \hmode@bgroup\fontencoding{OMS}\selectfont
   \vphantom{\char 13}%
   \ooalign{%
      \hfil\raise.07ex\hbox{$\m@th\omega$}\hfil\crcr
      \char 13 % "0D
   }%
 \egroup}
\makeatother

\begin{document}

$\circledomega$ {\scriptsize $\circledomega$}
$\Sigma^{\circledomega} \Sigma^\omega \Sigma^* \Sigma^\circledast$
$\displaystyle  \Sigma^\omega \Sigma^{\circledomega} \Sigma^\circledast \Sigma^*$

\end{document}

在此处输入图片描述

答案3

这是一种stackengine方法。它将适应当前的数学风格

\documentclass{article}
\usepackage{amsmath,stackengine,scalerel}
\newcommand\circledomega{{\ThisStyle{\stackinset{c}{}{c}{}{$%
  \SavedStyle\omega$}{$\SavedStyle\bigcirc$}}}}
\newcommand\circledast{{\ThisStyle{\stackinset{c}{}{c}{}{$%
  \SavedStyle*$}{$\SavedStyle\bigcirc$}}}}
\begin{document}
{\scriptsize $\circledomega$} $\Sigma^{\circledomega} 
 \Sigma^\omega \Sigma^* \Sigma^\circledast$
$\displaystyle  \Sigma^\omega \Sigma^{\circledomega} \Sigma^\circledast \Sigma^*$

$\circledomega\circledast\scriptstyle
\circledomega\circledast\scriptscriptstyle
\circledomega\circledast$
\end{document}

在此处输入图片描述

相关内容