Это продолжениеэтот вопросо стрелках, необходимых для бирациональной геометрии, с той же базовой предпосылкой, что иэтот вопросо xdashrightarrow
и т.д.
Мне нужна стрелка, как на картинке xmapsto
, но со mapsto
стрелкой пунктирной. У меня сейчас есть
\def\dashmapsto{\mapstochar\dashrightarrow}
что дает dashmapsto
стрелу. Я был бы рад, если бы мог иметь xdashmapsto
к нему.
Спасибо за любую помощь, которую вы можете предложить.
решение1
Я просто объединил два ответа, которые вы цитируете, используя технику Дэвида, примененную к коду Хайко. Это их заслуга. Вот мое дополнение к коду Хайко:
\newcommand\xdashmapsto[2][]{\mathrel{\mapstochar\xdashrightarrow[#1]{#2}}}
Единственной хитростью было не забыть использовать аргументы таким же образом, как это делает \xdashrightarrow
.
\documentclass{article}
\usepackage{amsfonts}
\usepackage{amsmath}
\newcommand\xdashmapsto[2][]{\mathrel{\mapstochar\xdashrightarrow[#1]{#2}}}
\makeatletter
\newcommand*{\da@rightarrow}{\mathchar"0\hexnumber@\symAMSa 4B }
\newcommand*{\da@leftarrow}{\mathchar"0\hexnumber@\symAMSa 4C }
\newcommand*{\xdashrightarrow}[2][]{%
\mathrel{%
\mathpalette{\da@xarrow{#1}{#2}{}\da@rightarrow{\,}{}}{}%
}%
}
\newcommand{\xdashleftarrow}[2][]{%
\mathrel{%
\mathpalette{\da@xarrow{#1}{#2}\da@leftarrow{}{}{\,}}{}%
}%
}
\newcommand*{\da@xarrow}[7]{%
% #1: below
% #2: above
% #3: arrow left
% #4: arrow right
% #5: space left
% #6: space right
% #7: math style
\sbox0{$\ifx#7\scriptstyle\scriptscriptstyle\else\scriptstyle\fi#5#1#6\m@th$}%
\sbox2{$\ifx#7\scriptstyle\scriptscriptstyle\else\scriptstyle\fi#5#2#6\m@th$}%
\sbox4{$#7\dabar@\m@th$}%
\dimen@=\wd0 %
\ifdim\wd2 >\dimen@
\dimen@=\wd2 %
\fi
\count@=2 %
\def\da@bars{\dabar@\dabar@}%
\@whiledim\count@\wd4<\dimen@\do{%
\advance\count@\@ne
\expandafter\def\expandafter\da@bars\expandafter{%
\da@bars
\dabar@
}%
}%
\mathrel{#3}%
\mathrel{%
\mathop{\da@bars}\limits
\ifx\\#1\\%
\else
_{\copy0}%
\fi
\ifx\\#2\\%
\else
^{\copy2}%
\fi
}%
\mathrel{#4}%
}
\makeatother
\begin{document}
\[ X \xdashmapsto{x} Y \xdashmapsto{\mathrm{longer}} Z
\xdashmapsto[\mathrm{underset}]{\mathrm{longer}} W
\]
\end{document}
Если интервал после стрелки покажется вам слишком большим, его можно переопределить с помощью небольшого отрицательного пробела:
\newcommand\xdashmapsto[2][]{\mathrel{\mapstochar\xdashrightarrow[#1]{#2}\!}}