\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}