# Will two-letter font style commands (\bf , \it , …) ever be resurrected in LaTeX?

I understand that \bf and \it are now obsolete in LaTeX and that \textbf and \textit are proper, as they produce more sophisticated (in particular, cumulative and properly kerned) changes to font style. I have read the English version of "Obsolete commands and packages", v. 1.8.5.7 of l2tabu, Sec. 2.1 and I understand the rules and their reasons, as well as the several other commands that are affected.

However, I find it convenient to use LaTeX for notetaking during lectures, and in that rushed environment, shortening a command by any number of keystrokes helps keep me from falling behind. \bf and its two-letter kin are still very useful to me for that reason, and once a presentation is finished I can go through and replace all appearances of \bf et al. with \textbf et al.

My question is this: is there a plan eventually to replace the short font style commands like \bf with the implementations of \textbf etc. some day, or should I expect \bf always to remain in existence but obsolete, for reasons of backward compatibility with original TeX? Original TeX has been greatly improved on in countless ways, but in the heat of transcription I sometimes miss its conciseness.

-
You can alias the commands, \let\tt\texttt and you will be ok. –  Yiannis Lazarides Apr 9 '11 at 3:37
Perhaps you could migrate to a markdown format like multimarkdown? –  Emre Apr 9 '11 at 3:41
Why don't you use a LaTeX editor that has keyboard shortcut support for the formatting commands? If you know how to use Emacs (or are willing to learn), AucTeX is best-of-breed, but there are other more GUI-oriented options (Texmaker, to name one) as well. –  Aaron Apr 9 '11 at 8:48
@Yiannis: I think you mean \let\tt\ttfamily! –  Martin Scharrer Jul 29 '11 at 20:10

The simple answer is no, because the new font commands work better for the reasons in the links you cite.

The best way to reduce your typing to customize your editor. In my editor (TeXShop on a Mac) I have the command \textbf{} bound to Command-B, and \emph{} to Command-I. (I generally don't use textit{}) This makes it simple to use the "new" font commands in my source but with drastically reduced typing.

Most editors should be able to do this sort of shortcut.

-
I'd imagine that if we ever succeed in writing LaTeX3 as a stand-alone format, we won't even include \bf, etc. There's nothing stopping you doing \let\bf\textbf, though. –  Joseph Wright Apr 9 '11 at 7:37
@Joseph: Shouldn't it be \let\bf\bfseries? After all \bf doesn't take an argument. –  Martin Scharrer Apr 9 '11 at 10:03
@Martin: From the question, it seemed that the idea was to use \bf as a short-hand for \textbf, not for \bfseries. Hence my suggestion. (I'd say that \bf is not a LaTeX command, so it does not have a 'defined' LaTeX syntax. So the OP can do what he likes!) –  Joseph Wright Apr 9 '11 at 10:05
@Joseph: Ok, in his own document he can. As long no one still used \bf in some package. –  Martin Scharrer Apr 9 '11 at 10:08

To expand on Alan's good answer (and to reiterate his ‘no’) there's another big reason that \bf and \it are not recommended now: they are short and easy to type, but they do not have semantics. LaTeX attempts to separate content and formatting in its markup, and these font changing commands break such ideals.

In the rough, commands to type often as part of your document should be short and meaningful; commands to define formatting decisions should be long and descriptive.

-

Following on the markdown idea mentionned in comments by @Emre, it can be coded in LaTeX. For instance, the code below gets *italics* and **bold** to work (with nesting as well).

\documentclass{article}
\makeatletter
\newcommand{\star@out}{%
\star@ifnext{\bgroup\bfseries\let\star@current\star@inbf\@gobble}%
{\bgroup\itshape\let\star@current\star@init}}
\newcommand{\star@inbf}{%
\star@ifnext{\egroup\@gobble}{\bgroup\itshape\let\star@current\star@initbf}}
\newcommand{\star@init}{%
\star@ifnext{\bgroup\bfseries\let\star@current\star@initbf}{\egroup}}
\newcommand{\star@initbf}{\star@ifnext{\egroup\@gobble}{\egroup}}
\let\star@current\star@out

\newcommand{\star@ifnext}[2]{%
\def \reserved@a {#1}%
\def \reserved@b {#2}%
\futurelet \@let@token \star@ifnext@aux
}
\begingroup
\catcode\*=13
\@firstofone{\endgroup
\newcommand{*}{\star@current}
\newcommand{\star@ifnext@aux}{%
\ifx \@let@token *\let \reserved@c \reserved@a
\else             \let \reserved@c \reserved@b
\fi
\reserved@c
}
}
\makeatother

\AtBeginDocument{\catcode\*=13}

\begin{document}

Hello, *th**i**s* is a **test, *to see* whether** it works.

\end{document}


EDIT as per Hendrik Vogt's suggestion. The construction

\begingroup
\catcode\*=13
\@firstofone{\endgroup ... }


ensures that every * within the argument of \@firstofone has catcode 13. Namely, a group is started, in which * are active, then \@firstofone does nothing but forces TeX to read its argument, converting characters of the input file to tokens (with catcode fixed, except if someone later uses \scantokens), and the group then ends with \endgroup. The catcode of * is restored, which means that any * which is read later (i.e., not those in the argument of \@firstofone) will be of catcode 12 (other). The advantage of this construction over doing \catcode*=13 before and \catcode*=12 after is that the catcode of * keeps whichever value it had, even if it wasn't 12.

-
It would be great to see an explanation what \@firstofone does here. –  Hendrik Vogt Jun 21 '11 at 15:38
See edit. Thanks for the tip. –  Bruno Le Floch Jun 21 '11 at 21:11
Thanks for the edit! Now I remember: This trick reminded me of the \lccode trick I saw in several of Phillip Goutet's answers, but it's somewhat different. –  Hendrik Vogt Jun 22 '11 at 9:08
@Hendrik: it is definitely inspired from the \lccode` trick (which I think I learnt from Philippe Goutet). It is less powerful, though, since that won't work to change the catcode of a letter (except if that letter appears nowhere in control sequences in the argument). –  Bruno Le Floch Jun 22 '11 at 12:50
Surely it would be easier at this stage to just write in markdown and then use e.g. Pandoc to convert it to LaTeX later… –  Seamus May 26 '12 at 15:38