formater les colonnes avec tabular

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 44
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

formater les colonnes avec tabular

Message non lu par bulledesavon »

Bonjour,
Je souhaiterais centrer le texte dans les cellules d'un tableau tabular tout en ayant une longueur de colonne définie.
J'utilise actuellement p{1cm} car c{1cm} ne fonctionne pas.
Quelle est la bonne commande ?
Merci.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2720
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: formater les colonnes avec tabular

Message non lu par gigiair »

Code : Tout sélectionner

\documentclass{article}
\usepackage{array}
\begin{document}

\begin{tabular}{|r|>{\centering}p{1cm}|l|}
  a&b&c\\
  66666&11111&99999
\end{tabular}

\end{document}
{}
JJR.
LaTeXien migrateur.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 44
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Re: formater les colonnes avec tabular

Message non lu par bulledesavon »

Pourquoi met-on le symbole dans la première ligne de commande

Code : Tout sélectionner

|r|>{centering}p{1cm}
?
Par ailleurs si on a 12 colonnes que l'on veut centrer, y a t il une commande pour dire que l'on répète 12 fois

Code : Tout sélectionner

{centering}p{1cm}
?
Merci.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2720
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: formater les colonnes avec tabular

Message non lu par gigiair »

bulledesavon a écrit : mercredi 17 août 2022, 07:24 Pourquoi met-on le symbole dans la première ligne de commande

Code : Tout sélectionner

|r|>{centering}p{1cm}
?
C'est la syntaxe qui a été choisie par l'auteur du package array. Celà évoque l'insertion de la commande \centering dans la cellule, j'imagine.
bulledesavon a écrit : mercredi 17 août 2022, 07:24Par ailleurs si on a 12 colonnes que l'on veut centrer, y a t il une commande pour dire que l'on répète 12 fois

Code : Tout sélectionner

{centering}p{1cm}
Comme pour toutes les répétitions :

Code : Tout sélectionner

*{12}{>{\\centering}p{1cm}}
. Exemple :

Code : Tout sélectionner

\begin{tabular}{l*{3}{>{\centering}p{1cm}}r}
  a&b&c&d&e\\
  66666&11111&11111&11111&99999
\end{tabular}
d4f8afcdb3bf35916a4befe5f3a6148efb71c332.svg
JJR.
LaTeXien migrateur.
jcs
Utilisateur chevronné
Utilisateur chevronné
Messages : 1381
Inscription : lundi 24 novembre 2008, 22:17

Re: formater les colonnes avec tabular

Message non lu par jcs »

Bonjour

Une petite question, il me semblait qu'il fallait ajouter \arraybackslash pour que \\ puisse signifier la fin d'une ligne du tableau

sinon, il fallait terminer la ligne par \tabularnewline

Cela a-t-il changé ?

Merci pour la réponse
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2720
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: formater les colonnes avec tabular

Message non lu par gigiair »

C'est exact, mais ce n'est nécessaire que si la dernière colonne est formatée par un >{}. Mon exemple le prouve.
Le problème est que le mécanisme de >{} modifie la définition de la macro \\\\ de fin de ligne s'il opère dans la dernière colonne.
la macro \\arraybackslash la redéfinit comme \tabularnewline. Sa définition est

Code : Tout sélectionner

\def\arraybackslash{\let\\\tabularnewline}

Les deux façons de faire suivantes sont donc équivalentes :

Code : Tout sélectionner

\begin{tabular}{>{\centering}p{1cm}}
  a\tabularnewline
  111
\end{tabular}

\begin{tabular}{>{\centering\arraybackslash}p{1cm}}
  a\\
  111
\end{tabular}
Mais sans ces modifications, le code est erroné.
JJR.
LaTeXien migrateur.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 44
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Re: formater les colonnes avec tabular

Message non lu par bulledesavon »

Mon code :

Code : Tout sélectionner

\begin{tabular}{*{12}{>{\centering}p{1cm}}}
c & d & u & c & d & u  &c & d & u &c & d & u 
\end{tabular}
Où dois-je insérer les
barres |
pour avoir des traits verticaux entre chaque colonne. J'ai essayé plusieurs emplacements.
Par exemple

Code : Tout sélectionner

{|*{12}{>{\centering}p{1cm}}|}
ne me donne des barres qu'aux extrémités et

Code : Tout sélectionner

{*{12}{|>{\centering}p{1cm}|}}
me donne des doubles barres alors que je souhaite de simples barres.
Merci.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2720
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: formater les colonnes avec tabular

Message non lu par gigiair »

Les barres, c'est pas beau et c'est déconseillé si l'on utilise l'extension booktabs
Mais si l'on y tient c'est :

Code : Tout sélectionner

\begin{tabular}{|*{12}{>{\centering}p{1cm}|}}
c & d & u & c & d & u  &c & d & u &c & d & u 
\end{tabular}
Avec 7 colonnes , ça donne :
5cf71bc76cf2e31d28b8a41eed289718de7606ec.svg
Mais avec 12 colonnes, on risque le débordement, et les dernières colonnes n'apparaîtront pas.
Voir par exemple

Code : Tout sélectionner

\documentclass[french]{article}
\usepackage[showframe]{geometry}
\usepackage{array}

\begin{document}
%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
}\noindent{
\begin{tabular}{|*{12}{>{\centering}p{1cm}|}}
c & d & u & c & d & u  &c & d & u &c & d & u 
\end{tabular}
%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\end{document}
JJR.
LaTeXien migrateur.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 44
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Re: formater les colonnes avec tabular

Message non lu par bulledesavon »

C'est surprenant d'avoir la deuxième barre avant l'avant dernière accolade alors que la première barre est après la première accolade. C'est contre intuitif (pour moi).
Par ailleurs j'ai un problème avec le hline "du bas", les deux premiers hline fonctionnent mais le troisième pause problème.

Code : Tout sélectionner

\begin{tabular}{|*{12}{>{\centering}p{1cm}|}}
\hline
\multicolumn{3}{|c|}{Classe des milliards} & \multicolumn{3}{c|}{Classe des millions} & \multicolumn{3}{c|}{Classe des mille} & \multicolumn{3}{c|}{classe des unités simples}\\
\hline
c & d & u & c & d & u  &c & d & u &c & d & u \\
\hline
\end{tabular}
Quand je mets le troisième hline j'obtiens le message d'erreur suivant :
! Misplaced \noalign.
\hline ->\noalign
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2720
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: formater les colonnes avec tabular

Message non lu par gigiair »

bulledesavon a écrit : jeudi 18 août 2022, 11:00 C'est surprenant d'avoir la deuxième barre avant l'avant dernière accolade alors que la première barre est après la première accolade. C'est contre intuitif (pour moi).
La syntaxe des répétitions est

Code : Tout sélectionner

*{N}{<code à répéter>}
La première barre à gauche n'est pas à répéter et doit donc figurer avant les répétitions. Le code à répéter doit inclure une barre à droite pour chaque répétition. Ce n'est peut-être pas intuitif, mais c'est logique.
bulledesavon a écrit : jeudi 18 août 2022, 11:00 Par ailleurs j'ai un problème avec le hline "du bas", les deux premiers hline fonctionnent mais le troisième pause problème.

Code : Tout sélectionner

\begin{tabular}{|*{12}{>{\centering}p{1cm}|}}
\hline
\multicolumn{3}{|c|}{Classe des milliards} & \multicolumn{3}{c|}{Classe des millions} & \multicolumn{3}{c|}{Classe des mille} & \multicolumn{3}{c|}{classe des unités simples}\\
\hline
c & d & u & c & d & u  &c & d & u &c & d & u \\
\hline
\end{tabular}
[\quote]
Quand je mets le troisième hline j'obtiens le message d'erreur suivant :

Code : Tout sélectionner

! Misplaced \noalign.
\hline ->\noalign
À quoi ça sert que les intervenants de Mathematex ils se décarcassent si les auteurs des requêtes ne les lisent pas ?
Voir la remarque de jcsdans ce même fil, et ma réponse. Il faut
  • soit remplacer \\\\ en fin de ligne de tableau par \\tabularnewline
  • soit ajouter \\arraybackslash en fin de descriptif des formats de colonne.
JJR.
LaTeXien migrateur.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 44
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Re: formater les colonnes avec tabular

Message non lu par bulledesavon »

Merci tout fonctionne bien à présent. Effectivement vous aviez déjà répondu à cette question !
jmd
Utilisateur confirmé
Utilisateur confirmé
Messages : 62
Inscription : samedi 06 février 2016, 11:08

Re: formater les colonnes avec tabular

Message non lu par jmd »

Bonjour,

Vous devriez jeter un oeil au package MAKECELL...
iMac 27'' Intel Core i9 10 coeurs, 40 Go Ram, TeX Live