\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}
正如您所见,这种方法存在一些问题:
- 带圆圈的 omega 的基线与普通 omega 的基线不对齐。当然,我可以进行调整
baseline=
以获得更好的效果。但是有没有办法让它自动对齐? - 带圆圈的 omega 比正常的 omega 粗体。这是为什么?我该如何修复?
- 圆的尺寸和线宽与 不匹配
\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}