我使用 stackrel 定义自定义堆叠关系符号:
\def\qMapsfrom{\stackrel{?}{\Mapsfrom}}
但是问号没有正确居中,并且与 的距离太大\Mapsfrom
。有没有办法微调 的垂直和水平间距\stackrel
?
答案1
对于垂直间距,您可以使用它\raisebox{<amount>}{<content>}
来提高或降低(负量)内容。水平居中已在类似问题中显示
用另一个符号覆盖符号,这里可能需要稍微调整一下:
这是我的建议。它适用于所有不同数学模式下显示的测试。
\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\newcommand\qMapsfrom{\mathrel{%
\mathchoice{\qmf}{\qmf}{\scriptsize\qmf}{\tiny\qmf}%
}}
\newcommand\qmf{{%
\setbox0\hbox{$\Mapsfrom$}%
\rlap{\hbox to \wd0{\hss\hss\hss\raisebox{-.15\height}{?}\hss}}\box0
}}
\textwidth=2cm
\begin{document}
$ A \qMapsfrom B $
$ A \Mapsfrom B $
\[ A \qMapsfrom B \]
\[ A \Mapsfrom B \]
$ S_{ A \qMapsfrom B } $
$ S_{ A \Mapsfrom B } $
$ S_{S_{ A \qMapsfrom B }} $
$ S_{S_{ A \Mapsfrom B }} $
\end{document}
更新:
我刚想amsmath
起来\text
可用于数学样式依赖缩放。它已经使用与上面类似的代码。这将宏简化为:
\newcommand\qMapsfrom{\mathrel{\text{%
\setbox0\hbox{$\Mapsfrom$}%
\rlap{\hbox to \wd0{\hss\hss\hss\raisebox{-.15\height}{?}\hss}}\box0
}}}
答案2
有一个更简洁的方法,可以避免马丁的许多盒子
\newcommand{\qMapsfrom}{\mathrel{\mathpalette\qmf\relax}}
\newcommand{\qmf}[2]{%
\ooalign{$#1\Mapsfrom$\cr
\hidewidth\raisebox{-.15ex}{$#1\mkern6mu?$}\hidewidth\cr}}
该代码实际上是受马丁的启发,但似乎更清晰,更容易适应其他字体(需要一些反复试验才能正确定位问号)。