就像\xrightarrow
允许用上面和下面的文字装饰\rightarrow
一样,我想对\sim
或者做同样的事情\rightarrow
有没有简单的方法可以做到这一点?
\sim
PS:我可以通过以下方式获得固定长度
$A \overset{x}{\underset{\mathclap{\varphi}}{\sim}} B$
答案1
以下代码定义了一个名为 的用户命令extoverset
,它接受两个强制参数,其作用类似于\overset
,只不过它会将第二个参数(例如\sim
)的宽度拉伸至等于第一个参数的宽度。可选的第三个参数可用于微调结果宽度。
当然不是完美的——但希望这是一个(不错的?)开始。
\documentclass{article}
\usepackage{amsmath} % for '\overset' macro
\usepackage{calc} % for '\widthof' macro
\usepackage{graphicx} % for '\resizebox' macro
\newcommand\xxoverset[3]{%
\resizebox{#1+\widthof{\scriptsize #2}}{\height}{$#3$}}
\newcommand\extoverset[3][0pt]{%
\mathrel{\overset{\textup{#2}}{\xxoverset{#1}{#2}{#3}}}}
\begin{document}
\obeylines % just for this example
$A \overset{aa}{\sim} B$
$A \extoverset{$aa$}{\sim} B$
$A \extoverset[6pt]{long expression}{\sim} B$
$A \extoverset[8pt]{long expression}{=} B$
\end{document}