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 à LaTeX
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}}