I am wondering why the \twoheadleftarrow in the code below looks so much
different from (worse than) the \leftarrow, although according to the LaTeX symbol list, the arrow heads should be of the same height etc.

\documentclass{article}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{Sweave}
\usepackage{listings}
\lstset{
language=R,
basicstyle=\ttfamily,
literate={<-}{{$\bm\leftarrow$}}2{<<-}{{$\bm\twoheadleftarrow$}}2
}
% undefine Sinput, and Soutput (due to missing 'lstrenewenvironment')
\expandafter\let\csname Sinput\endcsname\relax
\expandafter\let\csname endSinput\endcsname\relax
\expandafter\let\csname Soutput\endcsname\relax
\expandafter\let\csname endSoutput\endcsname\relax
\lstnewenvironment{Sinput}[1][]{#1}{}
\begin{document}
<<foo>>=
x <- 1
x <<- 1
@
\end{document}
