扩展 \Mapsto,带上方文本

扩展 \Mapsto,带上方文本
\documentclass{standalone}

\usepackage{centernot}
\usepackage{mathtools}
\usepackage{ stmaryrd }

\begin{document}
    $\xmapsto{sdfkjhsdf}$ % This is similar to what I want

    $\Mapsto$ % however I need this kind of arrow

    %$\xMapsto{sdfkjhsdf}$ % does not exist - results in error
\end{document}

前两个的输出:

地图

我想要一个像第一个一样在顶部有文字的可扩展组件mapsto,但像第二个一样带有箭头。有没有办法从现有包中做到这一点?

答案1

mathtools软件包提供了构建此程序所需的几乎所有东西,并stmaryrd具有额外的符号。将它们放在一起可得到

示例输出

\documentclass{article}

\usepackage{centernot}
\usepackage{mathtools}
\usepackage{stmaryrd}

\makeatletter
\newcommand{\xMapsto}[2][]{\ext@arrow 0599{\Mapstofill@}{#1}{#2}}
\def\Mapstofill@{\arrowfill@{\Mapstochar\Relbar}\Relbar\Rightarrow}
\makeatother

\begin{document}
\begin{gather*}
   \mapsto \qquad \xmapsto[A]{sdfkjhsdf} \\
 \Mapsto \qquad \xMapsto[A]{sdfkjhsdf}
\end{gather*}
\end{document}

参数0599用于标签的放置以及箭头在标签上的延伸程度。我使用的数字与 相同mathtools\xmapsto\Mapstochar开头的短条,来自stmaryrd包,\Relbar是与 final 相配的双线\Rightarrow。内部宏名称包括@字符,因此必须成对包含\makeatletter / \makeatother

也许最好使用extpfeil包裹为此,但不幸的是,它加载stmaryrd了冲突的选项。

答案2

fp包用于计算箭头的适当宽度。如果您更改字体,字距将很重要。它设置为提供一定最小宽度的箭头长度,而不管上/下限。然后,随着上/下限的增长,箭头宽度也会随之增长。

\documentclass{article} 
\usepackage{stackengine}
\usepackage{scalerel}
\usepackage{fp}
\def\clipeq{\kern -.65pt\mathrm{=}\kern -1pt}
\def\Lla{\rule[-.1ex]{.3pt}{1.3ex}}
\def\Lra{\kern -3.5pt\Longrightarrow}
\newcount\argwidth
\newcount\clipeqwidth
\savestack\tempstack{\stackon{$\clipeq$}{}}%
\clipeqwidth=\wd\tempstackcontent\relax
\newcommand\xMapsto[2]{%
  \savestack\tempstack{\stackon{$\scriptstyle#1$}{$\scriptstyle#2$}}%
  \argwidth=\wd\tempstackcontent\relax%
  \FPdiv\scalefactor{\the\argwidth}{\the\clipeqwidth}%
  \FPsub\scalefactor{\scalefactor}{1.5}% <---CAN PLAY WITH THIS VALUE
  \FPmax\scalefactor{\scalefactor}{.05}%
  \mathrel{%
  \stackunder[2pt]{\stackon[3pt]{$\Lla\hstretch{\scalefactor}{\clipeq}\Lra$}%
     {$\scriptstyle#1~$}}{$\scriptstyle#2~$}%
  }%
}
\parskip 1ex
\begin{document} 
$X \xMapsto{ABC}{defghi} Y$

$\xMapsto{}{}$

$\xMapsto{a}{}$

$\xMapsto{ab}{}$

$\xMapsto{abc}{}$

$\xMapsto{abcd}{}$

$\xMapsto{abcde}{}$
\end{document}

在此处输入图片描述

相关内容