我们\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
和两个移位的\uparrow
s 来构建符号:
\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
即可获得