How to TeX an arrow with vertical stroke?
Here's a possible way
\newcommand\pto{\mathrel{\ooalign{\hfil$\mapstochar$\hfil\cr$\to$\cr}}}
Note that the definition of oz.sty
is equivalent to
\newcommand\pfun{\mathrel{\ooalign{\hfil$\mapstochar\mkern5mu$\hfil\cr$\to$\cr}}}
so it differs from the former only by a slight shift to the left of the bar.
A complete and better implementation using also the shift in oz.sty
; this one works also in subscripts and superscripts.
\documentclass{article}
\makeatletter
\newcommand{\pto}{}% just for safety
\newcommand{\pgets}{}% just for safety
\DeclareRobustCommand{\pto}{\mathrel{\mathpalette\p@to@gets\to}}
\DeclareRobustCommand{\pgets}{\mathrel{\mathpalette\p@to@gets\gets}}
\newcommand{\p@to@gets}[2]{%
\ooalign{\hidewidth$\m@th#1\mapstochar\mkern5mu$\hidewidth\cr$\m@th#1\to$\cr}%
}
\makeatother
\begin{document}
$A\pto B\pgets C$
$\scriptstyle A\pto B\pgets C$
\end{document}
You may want to use \pfun
in package oz
as listed in the overview here.
With unicode-math
package (requires XeTeX or LuaTeX) and a proper Unicode math font, you can access that Unicode arrow (and a gazillion of other Unicode math symbols):
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}
$\nvrightarrow$
\end{document}