如何创建有两个头的向上箭头?

如何创建有两个头的向上箭头?

我们\twoheadrightarrow可以获得两个头的箭头。有没有命令可以用向上箭头获得两个头?

答案1

可以旋转现有的双头箭头之一(根据箭头基线的所需位置,可能需要进行一些调整):

\documentclass{article}
\usepackage{amssymb}
\usepackage{graphicx}

\newcommand\twoheaduparrow{\mathrel{\rotatebox{90}{$\twoheadrightarrow$}}}

\begin{document}

\[
A\twoheadrightarrow B\quad A\twoheaduparrow B
\]

\end{document}

在此处输入图片描述

添加[origin=<origin>]一个选项\rotate,可以改变旋转中心(可能的值是<origin>t顶部)、b(底部)、l(左)、r(右)、c(中心)和B(基线)):

\documentclass{article}
\usepackage{amssymb}
\usepackage{graphicx}

\newcommand\twoheaduparrow{\mathrel{\rotatebox[origin=c]{90}{$\twoheadrightarrow$}}}

\begin{document}

\[
A\twoheadrightarrow B\quad A\twoheaduparrow B
\]

\end{document}

在此处输入图片描述

在一条评论中,有人要求在不使用额外包的情况下进行定义;在这种情况下,只需稍加努力,就可以使用\ooalign和两个移位的\uparrows 来构建符号:

\documentclass{article}

\makeatletter
\newcommand\twoheaduparrow{%
\mathrel{\mathchoice
  {\raise2pt\hbox{%
  \ooalign{\hss$\uparrow$\hss\cr\lower2pt\hbox{%
  $\uparrow$}}}}
  {\raise2pt\hbox{%
  \ooalign{\hss$\uparrow$\hss\cr\lower2pt\hbox{%
  $\uparrow$}}}}
  {\raise1.5pt\hbox{%
  \ooalign{\hss$\scriptstyle\uparrow$\hss\cr\lower1.5pt\hbox{%
  $\scriptstyle\uparrow$}}}}
  {\raise1.1pt\hbox{%
  \ooalign{\hss$\scriptscriptstyle\uparrow$\hss\cr\lower1.1pt\hbox{%
  $\scriptscriptstyle\uparrow$}}}}
}}

\begin{document}

\[
A\twoheaduparrow B\quad {\textstyle A\twoheaduparrow B}\quad A_{A\twoheaduparrow B}\quad L_{A_{A\twoheaduparrow B}}
\]

\[
A\uparrow B\quad {\textstyle A\uparrow B}\quad A_{A\uparrow B}\quad L_{A_{A\uparrow B}}
\]

\end{document}

在此处输入图片描述

答案2

箭头之间的间隙设置为.3\arrowheight,并且可以更改。此解决方案中值得注意的是\ThisStyle{...\SavedStyle...}构造,它允许将当前(调用时)数学样式导入到否则会丢失的地方。

该功能允许将四叉\mathchoice替换为单叉\ThisStyle{}(当然,\mathchoice位于 内\ThisStyle,但它确实节省了输入时间)。而且因为我.3\arrowheight根据当前数学样式箭头的长度定义了箭头间隙( ),所以我不需要为每个数学样式应用不同的堆栈间隙(即箭头偏移长度)。此外,使用箭头高度本身来定义偏移量意味着如果以 呈现,此解决方案将正常工作\Huge。其他解决方案不会那么好。

最后要注意的是,该解决方案保留了原始的基线\uparrow,而旋转箭头解决方案如果不进行进一步的操作则无法做到这一点。

\documentclass{minimal}
\usepackage{scalerel}
\usepackage{stackengine}
\newlength\arrowheight
\newcommand\doubleuparrow{%
  \mathrel{\ThisStyle{%
    \setlength{\arrowheight}{\heightof{$\SavedStyle\uparrow$}}%
    \stackengine{.3\arrowheight}{$\SavedStyle\uparrow$}%
      {$\SavedStyle\uparrow$}{O}{c}{F}{F}{L}}
}}
\begin{document}
\begin{equation}
A \doubleuparrow C \quad A_{A \doubleuparrow C}
\end{equation}
\end{document}

在此处输入图片描述

补充

有评论者询问是否可以将垂直尺寸调整为与正常尺寸一致\uparrow可以裁剪底部。但是,在这里,我选择将结果缩小到与 相同的高度\uparrow

\documentclass{minimal}
\usepackage{scalerel}
\usepackage{stackengine}
\newlength\arrowheight
\newcommand\doubleuparrow{%
  \mathrel{\ThisStyle{%
    \setlength{\arrowheight}{\heightof{$\SavedStyle\uparrow$}}%
    \scalerel*{\stackengine{.3\arrowheight}{$\SavedStyle\uparrow$}%
      {$\SavedStyle\uparrow$}{O}{c}{F}{F}{L}}{\uparrow}}
}}
\begin{document}
\begin{equation}
A \uparrow \doubleuparrow C \quad A_{A \uparrow \doubleuparrow C}
\end{equation}
\end{document}

在此处输入图片描述

如果有人希望拉紧规模,只需替换\stretchrel\scalerel即可获得

在此处输入图片描述

相关内容