[Tex/LaTex] What makes LaTeX typeset basic \rightarrow arrowheads differently

arrows

Recently I typeset the same document on two different computers—once on my Mac and once on a machine running Ubuntu. (Both have the latest release of TeX Live, or whatever the standard distro is.) The two PDFs were identical, except that the heads of the \rightarrows (hence \tos) the Ubuntu machine produced were slightly fatter (and uglier) than those the Mac produced. Does this style feature vary across versions of LaTeX, and how can I control which arrowheads are typeset?

The code

\documentclass{article}

\begin{document}

This document was created on the Ubuntu machine, using \TeX\ Live 2009, \LaTeX\ 2e, etc.
Here is an arrow:
    \[ \rightarrow\]

\end{document}

on the Ubuntu machine generated arrowtest.pdf.

And the code

\documentclass{article}

\begin{document}

This document was created using the Mac, using \LaTeX\ 2e, etc.
This is an arrow:
    \[ \rightarrow \]

\end{document}

on my Mac generated arrowtest2.pdf.

Best Answer

There are two versions of the arrow heads in circulation, so it is possible that on one machine a font uses the first while on the other machine a font uses the other one.

What happened is that Knuth changed the styles of arrows in 1992 as he says in his Important Message to all Users of TeX :

Many characters were improved in 1992, notably the arrows, which now are darker and have larger arrowheads, so that they don't disappear so easily after xeroxing.

Here is the two versions side by side by comparison:

comparison of the two arrows

The problem is that when the fonts based on Computer Modern where converted in type1 format, some of them stayed with the old version and some with the new version. For example, the amssymb \twoheadrightarrow uses the short arrowhead whereas the bluesky type1 \rightarrow uses the large one:

enter image description here

\documentclass{article}
\usepackage{amssymb}
\begin{document}
$\rightarrow$ $\twoheadrightarrow$
\end{document}

If you load an old lmodern package (e.g. version 1.3 from 2007/01/14) the \rightarrow will use the old arrow head (but the text arrow the new one). However, in the newest lmodern, the correct arrow heads are now being used, as the lm-hist.txt file says:

Ver. 2.003, 16.09.2009: main modification: shapes of LM glyps consistent
with D.E. Knuth's recent changes in CMs plus lots of tiny changes;
most important changes are described in details below: 
* fonts and glyphs modified according to D.E. Knuth's changes in CMs
  (note that the corrections related to glyph shapes, not metric data):
  -- leftward arrow (char '040), rightward arrow (char '041),
     upward arrow (char '042), downward arrow (char '043),
     left-and-right arrow (char '044), northeast arrow (char '045),
     southeast arrow (char '046), northwest arrow (char '055),
     southwest arrow (char '056), up-and-down arrow (char char '154)
     lmsy5 lmbsy5 lmsy6 lmsy7 lmbsy7 lmsy8 lmsy9 lmsy10 lmbsy10

If you are sure that your two TeX distributions are recent, using \usepackage{lmodern} on both should solve the issue.

Related Question