The problem is this: \Longrigtharrow
(over which \implies
is defined) is built with two characters that come from different fonts.
The equals sign for lengthening the arrow is taken from \textfont0
(the normal text font), while the arrow (\Rightarrow
) is taken from \textfont2
(the math symbol font).
When a current font size is 10pt, lmodern
defines \textfont0
as rm-lmr10
(the prefix rm
means OT1 encoding) and \textfont2
as lmsy10
and all is good. If the current font size is 11pt, the fonts are rm-lmr10 at 10.95pt
and lmsy10 at 10.95pt
, which again agree with each other.
The problem is at 12pt: in this case \textfont0
is rm-lmr12
, while \textfont2
is lmsy10 at 12pt
. Here is where the problem arises: the thickness of the strokes is scaled for \Rightarrow
but not with =
and the difference is noticeable, particularly at low resolution.
The following image is taken at 4x magnification (\mag=4000
) by compiling with pdftex
the input
\mag=4000
\font\xy=lmsy10 at 12pt
\font\xz=rm-lmr12
\textfont2=\xy \textfont0=\xz
$\Longrightarrow$
\bye
and the difference cannot be attributed to pixel adjustments of the onscreen previewer.
A possible workaround is to redefine the font used for \textfont0
to use scaled rm-lmr10
when the current font size is above 10pt and using T1 as the default encoding for text fonts.
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\makeatletter
% Load the OT1 definitions for lmodern
\input{ot1lmr.fd}
% Change the definition for \OT1/lmr/m/n/<size>
\DeclareFontShape{OT1}{lmr}{m}{n}%
{<-5.5> rm-lmr5 <5.5-6.5> rm-lmr6
<6.5-7.5> rm-lmr7 <7.5-8.5> rm-lmr8
<8.5-9.5> rm-lmr9 <9.5-> rm-lmr10
}{}
\makeatother
\begin{document}
\noindent
$\Longrightarrow$\\
The text font\\
is \expandafter\texttt\expandafter{\fontname\font}
\end{document}
You can use something like A$\,\to\,$B
or A\textrightarrow B
(in text mode) from the textcomp
package:
\documentclass{article}
\usepackage{textcomp}
\begin{document}
A$\,\to\,$B
A\textrightarrow B
\end{document}
Best Answer
You can use
\xRightarrow[below]{above}
from themathtools
(orextpfeil
) package or\xLongrightarrow[below]{above}
fromextarrows
. (Have a look at “How to look up a math symbol?” for ideas how you can easily find a particular symbol.)If you want to keep the the same arrow length as implies, you can use
\underset
and\overset
fromamsmath
, e.g.\underset{below}{\implies}
, or maybe\underset{\mathclap{below}}{\implies}
(\mathclap
makes it so that “below” doesn’t introduce extra vertical space if it is longer than the arrow. It is included in the immensely usefulmathtools
package).