Comment modifier l’alignement des cellules de tableaux ?#

Il est souvent nécessaire de modifier l’alignement d’une cellule p (« paragraphe ») d’un tableau, mais les problèmes à la fin d’une ligne de tableau sont fréquents. La structure suivante avec une cellule p risque de provoquer des erreurs indiquant un \noalign mal placé ou d’autres choses du même genre (voir ainsi « Que signifie l’erreur : « Extra alignment tab has been changed to \cr » ? »).

... & \centering blabla ... \\

Le problème est que la commande \\ signifie différentes choses dans différentes circonstances : l’environnement tabular en change la signification en une valeur à utiliser dans le tableau, et \centering, \raggedright et \raggedleft en changent tous la signification en quelque chose d’alors incompatible. Notez que le problème ne se pose que pour la dernière cellule d’une ligne : puisque chaque cellule est placée dans une boîte, ses paramètres sont perdus au moment du & (ou \\) qui la termine.

Fut un temps, la signification de \\ utilisée par l’environnement tabular n’était disponible que sous la forme d’une commande interne. De nos jours, sa valeur est désormais publique, et vous pouvez en principe l’utiliser explicitement (même si le nom de commande est un peu long) :

... & \centering blabla ... \tabularnewline

L’extension array fournit une commande \arraybackslashqui redonne à` sa signification correcte (dans le tableau). La commande peut alors être utilisée dans les spécifications du préambule du format de tableau de array :

\begin{tabular}{... >{\centering\arraybackslash}p{50mm}}
...

Les commandes \tabularnewline et \arraybackslash sont des ajouts plutôt récents à et à l’extension array, respectivement. Dans le cas improbable où aucune de ces commandes n’est disponible, l’utilisateur peut essayer l’ancienne solution qui préserve la signification de \\ :

\newcommand\astuce[1]{\let\temp=\\%
  #1%
  \let\\=\temp
}

Elle s’utilise dans un tableau comme :

... & \astuce\centering blabla ... \\

De même, elle peut s’utiliser dans un préambule de tableau :

\begin{tabular}{...>{\astuce\centering}p{5cm}}