正如问题所述,我想要一个类似于 \simeq 和 \cong 命令的 \equiv 上的波浪符号。更具体地说,波浪符号需要更靠近符号\equiv
。
我尝试过使用stackrel
,DeclareMathOperator*
但他们把它放得太高了。
我甚至尝试将其放在\equiv
数学运算符的空白处,例如
\DeclareMathOperator*{\eq}{\equiv}
\newcommand{\poly}{\eq^{\stackrel{\sim}{\hspace*{2em}}}}
但还是没有运气。
有什么建议吗?谢谢。
答案1
\cong
对代码进行简单的修改fontmath.ltx
\DeclareRobustCommand
\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign
\def\@vereq#1#2{\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@
\ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
这是新的\ccong
(根据您的喜好更改名称):
\documentclass{article}
\makeatletter
\DeclareRobustCommand{\ccong}{\mathrel{\mathpalette\@verequiv\sim}}
\newcommand{\@verequiv}[2]{%
\lower.5\p@\vbox{
\lineskiplimit\maxdimen
\lineskip-.5\p@
\ialign{%
$\m@th#1\hfil##\hfil$\crcr
#2\crcr
\equiv\crcr
}%
}%
}
\makeatother
\begin{document}
$A=B\equiv C\cong D\ccong E$
\end{document}
答案2
这里我使用了一个堆栈。
\documentclass{article}
\usepackage{amssymb,amsmath,stackengine}
\DeclareMathOperator*{\eq}{\equiv}
\newcommand{\poly}{\mathrel{\ensurestackMath{%
\stackengine{-.5pt}{\equiv}{\sim}{O}{c}{F}{F}{S}}}}
\begin{document}
$A \equiv A \simeq A \cong A \poly A$
\end{document}
编辑:这是一个适用于较小数学风格的版本
\documentclass{article}
\usepackage{amssymb,amsmath,stackengine,scalerel}
\DeclareMathOperator*{\eq}{\equiv}
\newcommand{\poly}{\mathrel{\ThisStyle{\ensurestackMath{%
\stackengine{-.5\LMpt}{\SavedStyle\equiv}{\SavedStyle\sim}{O}{c}{F}{F}{S}}}}}
\begin{document}
$A \equiv A \simeq A \cong A \poly A$\par
$\scriptstyle A \equiv A \simeq A \cong A \poly A$\par
$\scriptscriptstyle A \equiv A \simeq A \cong A \poly A$\par
\end{document}