For comparison, here’s an image of TeX’s output for an AMS array, an xymatrix, and a TikZ picture of the above (note that the resolution of the image isn’t fantastic).

Here’s the diagram with only the arrows as SVG:
\begin{matrix}
f^{-1} B & \begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} & B \\
\begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt">
<g transform="translate(0 2) scale(1 -1) translate(0 42)">
<g stroke="#000">
<g fill="#000">
<g stroke-width=".4pt">
<path d="m0-2.3v-37" fill="none"/>
<g transform="matrix(0 1 -1 0 0 -2.3)">
<g stroke-dasharray="none" stroke-dashoffset="0pt">
<g stroke-linecap="round">
<path d="m0 0h.42c.98 0 1.7-.93 1.7-1.7 0-.9-.7-1.7-1.7-1.7" fill="none"/>
</g>
</g>
</g>
<g transform="matrix(0 -1 1 0 0 -39)">
<g stroke-width=".4pt">
<g stroke-dasharray="none" stroke-dashoffset="0pt">
<g stroke-linecap="round">
<g stroke-linejoin="round">
<path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\end{svg}
\mathrlap{\array{\arrayopts{\align{bottom}}\;\begin{svg}<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10.40001pt" height="10.40001pt" viewBox="-0.2 -0.2 10.40001 10.40001 "><g transform="translate(0,10.20001 ) scale(1,-1) translate(0,0.2 )"><g><g stroke="rgb(0.0%,0.0%,0.0%)"><g fill="rgb(0.0%,0.0%,0.0%)"><g stroke-width="0.4pt"><g><path d=" M 0.0 0.0 L 10.00002 0.0 L 10.00002 10.00002 " style="fill:none"/></g></g></g></g></g></g></svg>\end{svg}\\ \space{30}{10}{1}}} && \begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt">
<g transform="translate(0 2) scale(1 -1) translate(0 42)">
<g stroke="#000">
<g fill="#000">
<g stroke-width=".4pt">
<path d="m0-2.3v-37" fill="none"/>
<g transform="matrix(0 1 -1 0 0 -2.3)">
<g stroke-dasharray="none" stroke-dashoffset="0pt">
<g stroke-linecap="round">
<path d="m0 0h.42c.98 0 1.7-.93 1.7-1.7 0-.9-.7-1.7-1.7-1.7" fill="none"/>
</g>
</g>
</g>
<g transform="matrix(0 -1 1 0 0 -39)">
<g stroke-width=".4pt">
<g stroke-dasharray="none" stroke-dashoffset="0pt">
<g stroke-linecap="round">
<g stroke-linejoin="round">
<path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\end{svg} \\
X & \underset{\scriptsize f}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} & Y
\end{matrix}An equation
\begin{matrix}
1 & \overset{0}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} & \mathbb{N} & \stackrel{s}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} & \mathbb{N} \\
& x \begin{svg}<svg viewBox="-5.99991 -42.00003 51.99988 44.0 " width="52pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0l39-39" fill="none"/><g transform="matrix(.71 -.71 .71 .71 39 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} &\begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0v-39" fill="none"/><g transform="matrix(0 -1 1 0 0 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} f & &\begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0v-39" fill="none"/><g transform="matrix(0 -1 1 0 0 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} f \\
&&X &\stackrel{r}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} &X
\end{matrix}commutes
First Sentence
An equation
\begin{matrix}
1 & \overset{0}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} & \mathbb{N} & \stackrel{s}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} & \mathbb{N} \\
& x \begin{svg}<svg viewBox="-5.99991 -42.00003 51.99988 44.0 " width="52pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0l39-39" fill="none"/><g transform="matrix(.71 -.71 .71 .71 39 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} &\begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0v-39" fill="none"/><g transform="matrix(0 -1 1 0 0 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} f & &\begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0v-39" fill="none"/><g transform="matrix(0 -1 1 0 0 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg} f \\
&&X &\stackrel{r}{\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} &X
\end{matrix}commutes
\begin{matrix}
&& Y \\
&\array{\arrayopts{\rowalign{center} \padding{0}}&\mathrlap{s} & \begin{svg}<svg viewBox="-1.99997 -5.99991 44.0 51.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="52pt"><g transform="translate(0 46) scale(1 -1) translate(0 6)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0l39 39" fill="none"/><g transform="matrix(.71 .71 -.71 .71 39 39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}} & \begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0v-39" fill="none"/><g transform="matrix(0 -1 1 0 0 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}\mathrlap{\array{p \\ \space{20}{10}{1}}} \\
U & \begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt">
<g transform="translate(0 4) scale(1 -1) translate(0 4)">
<g stroke="#000">
<g fill="#000">
<g stroke-width=".4pt">
<path d="m2.3 0h37" fill="none"/>
<g transform="matrix(-1 0 0 -1 2.3 0)">
<g stroke-dasharray="none" stroke-dashoffset="0pt">
<g stroke-linecap="round">
<path d="m0 0h.42c.98 0 1.7-.93 1.7-1.7 0-.9-.7-1.7-1.7-1.7" fill="none"/>
</g>
</g>
</g>
<g transform="matrix(1 0 0 1 39 0)">
<g stroke-width=".4pt">
<g stroke-dasharray="none" stroke-dashoffset="0pt">
<g stroke-linecap="round">
<g stroke-linejoin="round">
<path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\end{svg} & X
\end{matrix}First sentence
Second sentence
\begin{svg}<svg viewBox="-1.99997 -3.99994 44.0 7.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="8pt"><g transform="translate(0 4) scale(1 -1) translate(0 4)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0h39" fill="none"/><g transform="matrix(1 0 0 1 39 0)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}First sentence
Second sentence
\begin{svg}<svg viewBox="-5.99991 -42.00003 51.99988 44.0 " width="52pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0l39-39" fill="none"/><g transform="matrix(.71 -.71 .71 .71 39 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}First sentence
Second sentence
\begin{svg}<svg viewBox="-3.99994 -42.00003 7.99988 44.0 " width="8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="44pt"><g transform="translate(0 2) scale(1 -1) translate(0 42)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0v-39" fill="none"/><g transform="matrix(0 -1 1 0 0 -39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}First sentence
Second sentence
\begin{svg}<svg viewBox="-1.99997 -5.99991 44.0 51.99988 " width="44pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="52pt"><g transform="translate(0 46) scale(1 -1) translate(0 6)"><g stroke="#000"><g fill="#000"><g stroke-width=".4pt"><path d="m0 0l39 39" fill="none"/><g transform="matrix(.71 .71 -.71 .71 39 39)"><g stroke-width=".4pt"><g stroke-dasharray="none" stroke-dashoffset="0pt"><g stroke-linecap="round"><g stroke-linejoin="round"><path d="m-2.4 3.2c.2-1.2 2.4-3 3-3.2-.6-.2-2.8-2-3-3.2" fill="none"/></g></g></g></g></g></g></g></g></g></svg>\end{svg}Let be a category with finite limits. Then the presheaf topos classifies finite-limit-preserving functors out of .
Here’s the current set of SVG arrows:
SVG twoheadrightarrowtail? Could not include SVG twoheadrightarrowtail
SVG twoheadleftarrowtail? Could not include SVG twoheadleftarrowtail
SVG twoheaduparrowtail? Could not include SVG twoheaduparrowtail
SVG twoheaddownarrowtail? Could not include SVG twoheaddownarrowtail
SVG twoheadnearrowtail? Could not include SVG twoheadnearrowtail
SVG twoheadnwarrowtail? Could not include SVG twoheadnwarrowtail
SVG twoheadsearrowtail? Could not include SVG twoheadsearrowtail
SVG twoheadswarrowtail? Could not include SVG twoheadswarrowtail