扩展 \mapsto 以耗尽给定表的列元素之间的空间

扩展 \mapsto 以耗尽给定表的列元素之间的空间

我有以下问题:我想通过某些元素的图像来表达函数的组成。下表是一个例子:

\begin{center}
    \begin{tabular}{ccccc}
        & $A(e_0,\dots,\widehat{e_i},\dots,e_p)$& &$A(v_0,\dots,v_p)$&\\
        $e_0$ & $\longmapsto$ & $e_0$ & $\longmapsto$ & $v_0$\\
        $\dots$ & & $\dots$ & & $\dots$\\
        $e_{i-1}$ & $\longmapsto$ & $e_{i-1}$ & $\longmapsto$ & $v_{i-1}$\\
        $e_i$ & $\longmapsto$ & $e_{i+1}$ & $\longmapsto$ & $v_{i+1}$\\
        $\dots$ & & $\dots$ & & $\dots$\\
        $e_{p-1}$ & $\longmapsto$ & $e_p$ & $\longmapsto$ & $v_p$\\
    \end{tabular}
\end{center}

但是,您可能已经意识到,函数的名称太宽,以至于 \mapsto 无法使这个表格看起来好看。我如何才能延长 \mapsto 的长度,使其与列中最宽元素的长度相匹配?这可能吗?如果可能的话,我该如何改进这个演示?

在此先感谢您的时间。

PS 这是我在这个网站上的第一篇文章,也是我第一次用 LaTeX 打字写文章,所以如果可能的话,我将非常感激一个清晰、完整的答案。

答案1

您可以\mapstofill按照类似的方式进行定义\rightarrowfill

我习惯于array减少符号的数量$;这导致必须\mapstofill$符号之间关闭数学模式并在最后重新打开它。

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\DeclareRobustCommand\mapstofill{%
  $\m@th
  {\mapstochar}%
  \smash-\mkern-7mu
  \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
  \mkern-7mu
  \mathord\rightarrow
  $%
}
\makeatother

\begin{document}

\[
\begin{array}{ccccc}
        & A(e_0,\dots,\widehat{e_i},\dots,e_p) &         & A(v_0,\dots,v_p)           \\
e_0     & $\mapstofill$                        & e_0     & $\mapstofill$    & v_0     \\
\vdots  & \vdots                               &         & \vdots                     \\
e_{i-1} & $\mapstofill$                        & e_{i-1} & $\mapstofill$    & v_{i-1} \\
e_i     & $\mapstofill$                        & e_{i+1} & $\mapstofill$    & v_{i+1} \\
\vdots  & \vdots                               &         & \vdots                     \\
e_{p-1} & $\mapstofill$                        & e_p     & $\mapstofill$    & v_p     \\
\end{array}
\]

\end{document}

在此处输入图片描述

答案2

\mapsto可以将其制成可扩展的箭头,其方式与\x...arrow扩展 s 的方式相同,同样借鉴中amsmath的定义 。\mapstoplain.tex

这是一个例子,将其与任何 LaTeX 设置\longmapsto中定义和提供的内容进行比较。plain.tex

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\xmapsto}[2][]{\mapstochar \ext@arrow 0359\rightarrowfill@{#1}{#2}}
\makeatother

\begin{document}
some text
\[
 x \overset{a very long modifier}{\longmapsto} y
\]
more text
\[
 x \xmapsto{a very long modifier} y
\]
more text

\end{document}

示例代码的输出

要按要求在表中使用它,可以将修饰符替换为\hspace*并将整个表达式埋入\mathclap(在 中定义mathtools)。这确实需要明确选择长度,但也许其他人可以将其调整为更自动化。

更新:
正如@Schrödinger's cat 所提醒的,\xmapsto中已经存在mathtools,因此不需要重新定义。(但我将保留定义,因为喜欢探索细节的人可能会对了解它的构造方式感兴趣。)

相关内容