Is there any reason not to use \let to redefine a deprecated control sequence to the currently recommended one?

Is there any reason(s) not to use \let to redefine \bf to \bfseries and \it to \itshape?

Yes, there are good reasons. :-) With the above \let-based setup, {\bf\it ...} produces bold-italic. In contrast, in a plain-TeX document {\bf\it ...} produces italic text. If the goal is to make \bf and \it behave the same way in LaTeX and plain-TeX, the \let-based setup isn't the way to go.

The LaTeX kernel doesn't define \bf, \it, \rm, \sc, \sf, \sl, and \tt. However, the standard LaTeX document classes -- article, report, and book -- and classes that are based on the standard classes do define these macros. For instance, article.cls features the following instructions:

\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}

The macro \DeclareOldFontCommand takes three arguments. It is defined in latex.ltx (the LaTeX "kernel") as follows:

\def\DeclareOldFontCommand #1#2#3{\DeclareRobustCommand #1{\@fontswitch {#2}{#3}}}

As you can see, considerable care is being taken in the "porting" of the plain-TeX font-switching macros to LaTeX. For one, different commands are needed for text mode and for math mode. And, the \normalfont instructions (in the text-mode cases) assure that the font-switching commands behave the same in LaTeX as they do in plain-TeX.

Incidentally, \@nomath is defined as follows:

\def\@nomath#1{\relax\ifmmode
   \@font@warning{Command \noexpand#1invalid in math mode}\fi}

Attempts to use \sl and \sc in math mode will therefore trigger warning messages, to the effect that these commands are invalid in math mode. (Of course, to generate words rendered in slanted or small-cap letters while in math mode, one can use \textsl{...} and \textsc{...}.)

Addendum: For completeness, here's the definition of \@fontswitch (also from latex.ltx):

\def \@fontswitch #1#2{%
  \ifmmode
     \let \math@bgroup \relax
     \def \math@egroup {\let \math@bgroup \@@math@bgroup
                        \let \math@egroup \@@math@egroup}%
     #2\relax
  \else
     #1%
  \fi
}

Thus, if one of the deprecated commands is encountered in text mode, the command appropriate for text mode is chosen; conversely, if it's encountered in math mode, the math-mode-appropriate command is selected after fine-tuning some of the math-grouping commands.


The commands \rm, \bf etc are called "deprecated" because they have been removed from the latex kernel. The way the commands work don't fit in the (much better) "new font selection scheme" (nfss) used by latex2e.

A number of classes nevertheless provide the definitions for these commands, but the definitions differ. E.g.

memoir: \@memoldfonterr {\rm }{\textrm }{\rmfamily }

KOMA: \scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}

article: \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}

So depending on the class you get an error (memoir and now also KOMA), or large warnings (older version of KOMA) or some output (article).

In the cases where the commands work, they normally work also in math. In text the commands switch to a special font as this was the way they worked in latex 2.09. That means that \bf\it doesn't give like \bfseries\itshape a bold-italic font, but the \it wins and you get only italic.

You have every right to redefine these commands -- e.g. to get rid of the KOMA-warnings.