Comment changer le style d’une ligne entière dans un tableau ?#

Chaque cellule d’un tableau est placée dans une boîte, de sorte qu’un changement de style (par exemple un chgangement de police) ne dure que jusqu’à la fin de la cellule. Un tableau peut contenir de nombreuses cellules, et placer une commande de changement de style de police dans chacune serait extrêmement fastidieux.

L’extension array permet de définir des modificateurs de colonne qui changeront le style de la colonne entière. Cependant, avec un peu d’astuce, on peut faire en sorte que ces modificateurs affectent les lignes plutôt que les colonnes. Notre préambule contiendra ceci :

\usepackage{array}

\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

Maintenant, il nous reste à mettre $ devant le premier spécificateur de colonne, puis ^ devant les spécificateur des colonnes suivantes. Enfin, il faudra utiliser la commande \rowstyle au début de chaque ligne dont on veut modifier le style :

\begin{tabular}{|$l|^l|^l|}   \hline
  \rowstyle{\bfseries}
  Heading & Big and & Bold \\ \hline
  Meek & mild & entry      \\
  Meek & mild & entry      \\
  \rowstyle{\itshape}
  Strange & and & italic   \\
  Meek & mild & entry      \\ \hline
\end{tabular}
\documentclass{article}
  \usepackage{array}
  \usepackage[french]{babel}
  \pagestyle{empty}

\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
\begin{tabular}{|$l|^l|^l|}   \hline
  \rowstyle{\bfseries}
  Heading & Big and & Bold \\ \hline
  Meek & mild & entry      \\
  Meek & mild & entry      \\
  \rowstyle{\itshape}
  Strange & and & italic   \\
  Meek & mild & entry      \\ \hline
\end{tabular}
\end{document}

À faire

L’exemple ne compile pas sur le serveur.

Avertissement

L’extension array fonctionne avec plusieurs autres environnements similaires à tabular, par exemples ceux fournis par longtable, mais malheureusement cette astuce ne fonctionnera pas toujours.