Comment modifier la justification du texte dans une cellule ?#

Il est parfois nécessaire de modifier la justification d’une cellule d’un tableau de type p (pour « paragraphe ») mais cela peut être source de problème à la fin d’une ligne de tableau. La solution intuitive ressemble souvent à :

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

Il y a de grandes chances que se manifestent des erreurs décrites aux questions :

Ces problèmes ont pour origine la variété des sens de la commande \\. Dans l’environnement tabular, cette commande est modifiée et n’est plus compatible avec les commandes \centering, \raggedright et \raggedleft. Il faut ici noter que le problème ne se pose que dans la dernière cellule d’une ligne.

1.  Avec des commandes de base#

Anciennement, la valeur réelle de la commande \\ utilisée par l’environnement tabular n’était disponible que sous forme de commande interne, \tabularnewline. De nos jours, cette commande est publique et vous pouvez en principe l’utiliser explicitement (avec le défaut d’avoir un code un peu plus long) :

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

Il est également possible de modifier cette justification avec la commande \multicolumn. Voici un exemple :

\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}
\begin{tabular}{||p{2cm}|}
  Tous les \\
  mots sont \\
  alignés \\
  à gauche \\
  \multicolumn{1}{||r|}{sauf} \\
  \og sauf \fg{}.
\end{tabular}
\end{document}

Notez que dans l’exemple précédent, nous avons placé les mêmes filets dans \multicolumn et tabular pour qu’il n’y ait pas de problème au niveau des raccords des cellules.

2.  Avec l’extension array#

L’extension array fournit une commande \arraybackslash qui restitue à la commande \\ sa signification correcte (dans la table). Cette commande peut être utilisée dans les spécifications du préambule du tableau :

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

3.  Avec une solution plus ancienne#

Si les commandes \tabularnewline et \arraybackslash s’avèrent indisponibles, vous pouvez essayer une solution plus ancienne qui préserve le sens de la commande \\ :

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

Elle s’utilise comme suit :

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

Elle peut être également être placée dans le préambule du tableau :

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