# Automatically convert <= to \leq

Is there a way to automatically convert instances of <= and >= to \leq and \geq ? I keep typing <= and >= by mistake.

• If you're not using => in any other contexts, a simple find and replace in your editor would help. – Torbjørn T. Oct 10 '11 at 15:35
• possible duplicate of unescaped macros – Aditya Oct 11 '11 at 2:57

It's doable, in principle.

\makeatletter
\mathchardef\realless=\mathcode<
\newcommand{\perhapsless}{\@ifnextchar={\leq\@gobble}{\realless}}
\mathcode<="8000
{\catcode<=\active \global\let<\perhapsless}

\mathchardef\realgreater=\mathcode>
\newcommand{\perhapsgreater}{\@ifnextchar={\geq\@gobble}{\realgreater}}
\mathcode>="8000
{\catcode>=\active \global\let>\perhapsgreater}
\makeatother


Then $a<=b<c$ will resolve into the correct symbols.

But I wouldn't rely on such automatisms. Better doing a "search and replace" and accustom to write \leq and \geq (or, as I do, \le and \ge).

• Thanks =) Interesting solution (although not really pretty ;) – Clément Oct 10 '11 at 15:56
• @Clément Just add it to the preamble and forget about it; however I don't recommend going this way. – egreg Oct 10 '11 at 16:05

IMHO, it is better to instruct your text editor to correct automatically all your favorite misprints on fly. For my favorite editor WinEdt I have coded several such rules. Here are two rules which convert << and ББ (ББ is << typed on Russian keybord) into right quote '«' and automatically add the left quote '»' after current word.

STRING="<<"
ENABLED=1
FILTER="TeX"
ACTION="[BeginGroup;Backspace;Backspace;SelWord(1);InsLabel('','«','»');EndGroup]"

STRING="ББ"
ENABLED=1
FILTER="TeX"
ACTION="[BeginGroup;Repeat(2,'CMD(""Backspace"")');SelWord(1);InsLabel("""",""«"",""»"");EndGroup]"


In current version 6.0 of WinEdt these rulles are to placed into Active Strings throug Options | Delimiters, Active Strings, Abbreviations... menu.

Probably not what you want unless you're using it anyway, but siunitx does this (and <<, >> to $\ll$, $\gg$ respectively) automagically.