可扩展注入箭头

可扩展注入箭头

我想标记一个\rightarrowtail,但箭头对于我的标签来说太短了。所以我想要一个这个箭头的可扩展版本。我试过 extpfeil 包,但不确定如何使用它来创建我的箭头。目前,如果我有一个如下所示的箭头状符号,我会知道如何做:

“>--”

但是,我不知道有这样的符号。Detexify 和符号列表似乎也没有。我应该如何制作箭头?

答案1

另一种选择是使用 TikZ 定义\xrightarrowtail宏:

\documentclass{amsart}
\usepackage{tikz}

\makeatletter
\newbox\xrat@below
\newbox\xrat@above
\newcommand{\xrightarrowtail}[2][]{%
  \setbox\xrat@below=\hbox{\ensuremath{\scriptstyle #1}}%
  \setbox\xrat@above=\hbox{\ensuremath{\scriptstyle #2}}%
  \pgfmathsetlengthmacro{\xrat@len}{max(\wd\xrat@below,\wd\xrat@above)+.6em}%
  \mathrel{\tikz [>->,baseline=-.75ex]
                 \draw (0,0) -- node[below=-2pt] {\box\xrat@below}
                                node[above=-2pt] {\box\xrat@above}
                       (\xrat@len,0) ;}}
\makeatother

\begin{document}
  \[ f : G \xrightarrowtail[{\star}]{\text{\textbf{Grp}}} H \]
\end{document}

这将产生输出

用 TikZ 绘制的带有尾部的可扩展右箭头。

amsart文档类只用于获取\text,不用于宏定义。)

编辑:我意识到我应该解释一下这里发生了什么。这并不太复杂:我们分配框\xrat@below\xrat@above来存储我们要放置在上方和下方的文本,并使用设置为脚本样式数学的参数填充它们。然后,我们将\xrat@len箭头长度设置为两个宽度中较大的一个加上两边的 0.6 em 作为填充。然后我们只需绘制箭头,将下方框放在下方,将上方框放在下方。值得注意的是+.6em,、、baseline=.75ex和中的值below=-2pt都是above=-2pt完全任意的,是我简单调整的结果;更改它们可能会为您的用例提供更好的结果。选项baseline将箭头向上移动到中间,而不是沿着地面移动,和below选项above将文本设置得更靠近箭头,这是本上下文所需的。

更好的解决方案可能是弄清楚如何使用amsmath\ext@arrow命令(它使用该命令来定义\xleftarrow\xrightarrow,其他类似命令的软件包似乎也使用该命令),但我不知道它是如何工作的。删除它,这将需要您首先询问的 缺失的\arrowtail( ) 宏(因为在后台也使用)。 我想最好的办法可能是在 Metafont 或类似程序中创建这样的字符,但我不确定如何做到这一点。>--extpfeil\ext@arrow

答案2

类似于以下三个中的一个,或者其变体:

\documentclass{article}
\usepackage{extpfeil}
\newextarrow{\injecta}{5599}{\succ\relbar\relbar}
\newextarrow{\injectb}{5599}{>\relbar\relbar}
\newextarrow{\injectc}{5599}{\succ\relbar\rightarrow}
\begin{document}
  \[x\injecta[under]{above}y\]
  \[x\injectb[under]{above}y\]
  \[x\injectc[under]{above}y\]
\end{document}

编辑:输出如下:

在此处输入图片描述

答案3

像这样吗?

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\makeatletter
\newcommand\xlongrightarrow[2][]{\ext@arrow 0055{\longrightarrowfill@}{#1}{#2}}
\def\longrightarrowfill@{\arrowfill@{>\mkern3mu}\relbar\relbar}
\makeatother
\begin{document}

$\xlongrightarrow[foo]{\text{looooong}}$

\end{document}

在此处输入图片描述

相关内容