Pourquoi éviter d’utiliser les commandes \bf, \it, etc. ?#

1.  Les commandes historiques#

Les commandes de sélection de police de 2.09 étaient \rm, \sf, \tt, \it, \sl, \em et \bf. Il s’agissait de commandes modales, utilisées comme suit :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
La {\bf typographie} est l'art {\it d'assembler\/} des caractères.
\end{document}

Le changement de police était généralement inclus dans un groupe, afin de limiter son effet. L’ajout manuel de la correction d’italique avec la commande \/ était nécessaire à la fin d’une section en italique.

Lors de la sortie de à l’été 1994, ces commandes simples étaient devenues obsolètes, mais comme leur utilisation est profondément ancrée dans le cerveau des utilisateurs, les commandes elles-mêmes restèrent dans avec leur saveur 2.09. L’obsolescence de ces commandes s’explique ainsi : chacune d’elles remplace tous les autres paramètres de police, en ne conservant que la taille. Voici une illustration de ce point :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
La typographie est {\bf\it l'art d'assembler\/} des caractères.
Et {\it\bf l'art\/} est difficile !
\end{document}

Dans la première phrase, la commande \bf est ignorée et le texte est mis en italique (et la correction d’italique à un effet réel). Dans la seconde phrase, la commande \it est ignorée et le texte est mis en gras (la correction d’italique ne sert à rien). Ce type d’effet persiste si des commandes sont mélangées à ces commandes :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
La typographie est \textbf{\tt l'art d'assembler} des caractères.
\end{document}

Ici, la commande \textbf qui encadre le texte est ignorée. Le texte est alors présenté en police à chasse fixe.

Alors, pourquoi ces commandes sont obsolètes ? Tout simplement à cause des confusions qu’elles peuvent engendrer, comme l’illustre l’exemple précédent.

2.  Les commandes actuelles#

Les commandes de fontes de se présentent sous deux formes : les commandes modales et les commandes de bloc de texte. Le jeu de commandes modales par défaut permettent de sélectionner la graisse (\mdseries et \bfseries), la forme (\upshape, \itshape, \scshape et \slshape) et la famille (\rmfamily, \sffamily et \ttfamily). Une sélection de police nécessite une famille, une forme et une graisse (ainsi qu’une taille, bien sûr).

L’exemple suivant permet d’obtenir du texte en gras en fonte à chasse fixe ou de l’italique sans empattement :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
La {\ttfamily typographie} est l'art d'assembler 
des {\bfseries\ttfamily caractères}.
Et {\slshape\sffamily l'art\/} est difficile !
\end{document}

Les commandes de bloc de texte de ont toutes la forme \text⟨suffixe⟩⟨suffixe⟩ correspond aux deux premières lettres des commandes modales. Ainsi \bfseries devient \textbf{}, \itshape devient \textit{}, et \ttfamily devient \texttt{}. Bien entendu, les commandes de bloc peuvent être imbriquées :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
La typographie est \textit{\textbf{l'art d'assembler}} des caractères.
\end{document}

Nous obtenons ici du texte en italique gras (notez au passage que les commandes de bloc s’occupent automatiquement des corrections d’italique).

Ces commandes de bloc de texte peuvent s’imbriquer aussi avec les commandes modales

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
La \texttt{\bfseries typographie} est l'art {\slshape 
\textbf{d'assembler}\/} des caractères.
\end{document}

Il faut cependant penser à mettre manuellement la correction d’italique à la fin du groupe si vous utilisez les commandes modales.

Avec les commandes de vous évitez sans le savoir beaucoup de bizarreries typographiques, par exemple des caractères droits et penchés à la fois ! Il reste cependant quelques cas qui peuvent être souhaités et qu’empêche mécaniquement ce système de sélection de fonte :

  • vouloir une fonte italique (\itshape) ou penchée (\slshape) en petites capitales (\scshape). Si certains considèrent ce choix comme malheureux, de telles fontes existent. En l’occurrence, l’extension smallcap de Daniel Taupin permet de les obtenir pour les fontes EC et des techniques similaires peuvent être appliquées à de nombreux autres jeux de fontes ;

  • vouloir une fonte italique (\itshape) droite (\upshape). Donald Knuth a mis à disposition une telle fonte et l’utilise pour le symbole de la livre sterling « £ » dans le jeu de polices par défaut. Cette combinaison est suffisamment étrange pour que, bien qu’il y ait une fonte définie, aucune commande ne l’utilise par défaut. Si jamais vous deviez en avoir besoin, il vous faudra utiliser les commandes de sélection de police les plus simples de

    \documentclass[french]{article}
      \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
      \usepackage{lmodern}        % Caractères plus lisibles
      \usepackage{babel}          % Réglages linguistiques (avec french)
      \pagestyle{empty}           % N'affiche pas de numéro de page
    
    \begin{document}
    {\fontshape{ui}\selectfont La typographie... demande à rester 
    raisonnable avec les caractères !}
    \end{document}