# Decorated arrow - New math symbols

I would like to add new arrows to the list of arrows below. This arrows will be used as math symbols.

The first problem I met is that the first arrow has a bigger head than to two others.

I would also like to add vertical lines like in the picture below.

The last thing I would like to achieve is to superimpose the two last arrows so as to build a last new one.

Here is the code giving the arrows of the screenshot.

\documentclass[12pt]{article}
\usepackage{amssymb}

\begin{document}

$\rightarrow$

$\rightarrowtail$

$\twoheadrightarrow$

\end{document}

• Depending on where and how you want to use your arrows, you might be interested in the arows from tikz: \documentclass{article} \usepackage{tikz} \usetikzlibrary{arrows, positioning} \begin{document} \begin{tikzpicture} \draw [->] (0,0)-- (1,0); \draw [>->] (0,-0.5)-- (1,-0.5); \draw [->>] (0,-1)-- (1,-1); \draw [>->>] (0,-1.5)-- (1,-1.5); \end{tikzpicture} \end{document} – leandriis Oct 20 at 22:03
• I would like to have new math symbols. – projetmbc Oct 20 at 22:07
• I have look for the symbols but I only find three black arrows without any decoration. I would like more symbols : this is to talk about partial or total applications that are injective, surjective or one-to-one. I met this formalism when reading a book about B language. – projetmbc Oct 20 at 22:14

A solution with the old-arrow package and the \stackinset command from stackengine:

    \documentclass{standalone}
\usepackage{stackengine, graphicx} %
\usepackage{mathtools, amssymb, old-arrows}%, relsize}
\newcommand\vrightarrow{\stackMath\mathrel{\stackinset{c}{-0.1ex}{c}{0.15ex}{\scalebox{1}[0.4]{$\vert$}}{ ―――→ }}}
\newcommand\vrightarrowtail{\stackMath\mathrel{\stackinset{c}{0ex}{c}{-0.02ex}{\scalebox{1}[0.3]{$\vert$}}{\rightarrowtail}}}
\newcommand\vtwoheadrightarrow{\stackMath\mathrel{\stackinset{c}{-0.22ex}{c}{-0.02ex}{\scalebox{1}[0.3]{$\vert$}}{\twoheadrightarrow}}}
\newcommand\vtwoheadrightarrowtail{\stackMath\mathrel{\stackinset{c}{-0.12ex}{c}{-0.02ex}{\scalebox{1}[0.3]{$\vert$}}{\mathrlap{\rightarrowtail}\mkern0.3mu\twoheadrightarrow}}}

\begin{document}

$\begin{matrix} A \vrightarrow B & A \vrightarrowtail B \\ A \vtwoheadrightarrow B & A \vtwoheadrightarrowtail B \end{matrix}$

\end{document}


• Thanks. It is interesting to see how to mix symbols by hand. :-) – projetmbc Oct 20 at 23:30

I would suggest you use a font that contains all the desired arrows such as the STIX fonts. Those are best to be used with XeLaTeX and installation of the fonts to the operating system of your computer.

\documentclass{standalone}
\usepackage{booktabs}

\usepackage{unicode-math}
\setmathfont{STIX2Math.otf}

\begin{document}
\begin{tabular}{ c c c }
\toprule
Glyph & Unicode & LaTeX \\
\midrule
$\char"2192$ & 2192 & \verb+$\char"2192$+ \\
$\char"21A0$ & 21A0 & \verb+$\char"21A0$+ \\
$\char"21A3$ & 21A3 & \verb+$\char"21A3$+ \\
$\char"2916$ & 2916 & \verb+$\char"2916$+ \\
\midrule
$\char"21F8$ & 21F8 & \verb+$\char"21F8$+ \\
$\char"2900$ & 2900 & \verb+$\char"2900$+ \\
$\char"2914$ & 2914 & \verb+$\char"2914$+ \\
$\char"2917$ & 2917 & \verb+$\char"2917$+ \\
\bottomrule
\end{tabular}
\end{document}


With PDFLaTeX, you can use the (deprecated) package stix with \usepackage{stix}. The arrows have the following (self explanatory) macros:

• \rightarrow
• \twoheadrightarrow
• \rightarrowtail
• \twoheadrightarrowtail
• \nvrightarrow
• \nvtwoheadrightarrow
• \nvrightarrowtail
• \nvtwoheadrightarrowtail
• Thanks for the XeLaTeX solution but I prefer the "old school" design. – projetmbc Oct 20 at 23:31
• My sincere compliments for the work and the explanation. – Sebastiano Oct 21 at 12:18