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 ») cela est source de problème à la fin d’une ligne de tableau. La solution intuive ressemble souvent à :
% !TEX noedit
... & \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.
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) :
% !TEX noedit
... & \centering blabla... \tabularnewline
Il est également possible de modifier cette justification avec la commande \multicolumn
. Voici un exemple :
\documentclass{article}
\usepackage[french]{babel}
\pagestyle{empty}
\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.
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 :
% !TEX noedit
\begin{tabular}{... >{\centering\arraybackslash}p{50mm}}
...
Avec une solution plus ancienne#
Si les commandes \tabularnewline
et \arraybackslash
s’avéraient indisponibles, vous pouvez essayer une solution plus ancienne qui préserve le sens de la commande \\
:
% !TEX noedit
\newcommand\sautligne[1]{\let\temp=\\%
#1%
\let\\=\temp
}
Elle s’utilise comme suit :
% !TEX noedit
... & \sautligne\centering blabla... \\
Elle peut être également être placée dans le préambule du tableau :
% !TEX noedit
\begin{tabular}{...>{\sautligne\centering}p{5cm}}