Page 1 sur 1

[Résolu] Tabular cumul options *{n};p{lgr cm};>{\centering}

MessagePosté: Lundi 04 Décembre 2017, 21:31
par pitite_floeur
Bonjour,
J'ai un souci récurrent lorsque je veux faire des tableaux, notamment des tableaux de valeurs.
Je cherche à combiner les contraintes suivantes :
* Plein de colonnes donc utilisation du *{10} pour répéter 10 fois la même colonne
* Colonnes toutes de même largeur donc utilisation du p{1cm}
* Texte centré dans les cellules donc utilisation du >{\centering}

Je n'ai pas encore de solution satisfaisante.
Voici le code que je pense devoir écrire normalement :
Code: Tout sélectionner
      \begin{tabular}{|c|*{11}{>{\centering}p{1cm}|}}
         \hline $x$ & $-8$ & $-3$ & $-2$ & $0$ & $1$ & $2$ & $3$ & $4$ & $6$ & $7$ & $12$ \\
         \hline $f(x)$ & & & & & & & & & & & \\
         \hline
      \end{tabular}


Le problème est que je reçois un message d'erreur dans ce cas.
// Pour la ligne du f(x) //
! Misplaced \noalign.\hline -> \noalign{ifnum 0='}\fi \let \hskip \vskip \let \vrule \hrule \let ... \hline
! Extra alignment tab has been changed to \cr.<template> ... \width \arrayrulewidth }\endtemplate \hline $f(x)$ &
You have given more \span or & marks than there were
in the preamble to the \halign or \valign now in progress.
So I'll assume that you meant to type \cr instead.

** (voir en fin de post)

Alors je contourne en ne mettant pas l'option \centering sur la dernière colonne :

Code: Tout sélectionner
      \begin{tabular}{|c|*{10}{>{\centering}p{1cm}|}p{1cm}|}
         \hline $x$ & $-8$ & $-3$ & $-2$ & $0$ & $1$ & $2$ & $3$ & $4$ & $6$ & $7$ & $12$ \\
         \hline $f(x)$ & & & & & & & & & & & \\
         \hline
      \end{tabular}

Mais bien sûr je ne suis pas satisfaite du résultat car mon 12 n'est pas centré...
Quelqu'un aurait-il une idée ?
Je remercie ceux qui se pencheront sur mon problème...

** Pour info mon préambule est le suivant (apparemment le message d'erreur parle du préambule non ?)
Code: Tout sélectionner
\documentclass[12pt,a4paper]{article}

\usepackage{comelv}
\usepackage[left=1.5cm,right=1.5cm,top=1.2cm,bottom=1.5cm]{geometry}
\usepackage{pstricks-add}
\usepackage{pst-eucl}
\usepackage{tkz-tab}
\usepackage{enumerate}
\usepackage{pifont}

\usepackage{setspace}
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyfoot[RE,RO]{Page \thepage ~sur \pageref{LastPage}}
\fancyfoot[LE,LO]{1STI2D-STL -- Chap.4 : Les fonctions composées -- Activité}

Re: Tabular cumul options *{n} ; p{lgr cm} ; >{\centering}

MessagePosté: Lundi 04 Décembre 2017, 21:59
par un bon petit
Comme la macro \centering de LaTeX redéfinit \\, il faut donc contrer cette redéfinition et écrire en faisant appel à la macro \arraybackslash du package array.
Écrivez donc
Code: Tout sélectionner
>{\centering\arraybackslah}
et chargez le package array.

Re: Tabular cumul options *{n} ; p{lgr cm} ; >{\centering}

MessagePosté: Lundi 04 Décembre 2017, 23:21
par boobamane
Bonsoir,
Personnellement, j'utilise le package tablor qui permet aussi d'avoir son tableau de signe.
https://mathsp.tuxfamily.org/spip.php?article241
Voici certainement le code que tu cherches.
Code: Tout sélectionner
    \documentclass[12pt,a4paper]{article}
    \usepackage[left=1.5cm,right=1.5cm,top=1.2cm,bottom=1.5cm]{geometry}
    \usepackage{pstricks-add}
    \usepackage{pst-eucl}
    \usepackage{tkz-tab}
    \usepackage{enumerate}
    \usepackage{pifont}
    \usepackage{setspace}
    \usepackage{lastpage}
    \usepackage{fancyhdr}
    \usepackage{array}
    \pagestyle{fancy}
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0.5pt}
    \fancyfoot[RE,RO]{Page \thepage ~sur \pageref{LastPage}}
    \fancyfoot[LE,LO]{1STI2D-STL -- Chap.4 : Les fonctions composées -- Activité}
    \begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% CODE DU TABLEAU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{tabular}{|*{13} {>{\centering\arraybackslash}p{1 cm}|}} 
    \hline
     $x$  & $-8$  & $-3$  & $-2$  & 0  & 1  & 2  & 3  & 4  & 5  & 6  & 7 &  12\\
    \hline
     $f(x)$  &    &    &    &   &   &   &   &   &    &    &    &  \\
    \hline
\end{tabular}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% CODE DU TABLEAU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}

Re: Tabular cumul options *{n} ; p{lgr cm} ; >{\centering}

MessagePosté: Mardi 05 Décembre 2017, 00:14
par balf
Vu le nombre de colonnes, le tableau débordera dans la marge, sauf à prendre une largeur de colonnes un peu moindre. Plutôt que de calculer ces largeurs, mieux vaut utiliser tabularx et des colonnes de type X, dont la largeur sera calculée automatiquement pour remplir la largeur totale prescrite. En outre, l'entrée dans le mode mathématique peut se faire au niveau du préambule du tableau, plutôt que de le répéter dans chaque cellule.

Bref, voici le code que je propose, en utilisant l'extension cellspace pour avoir des lignes moins étriquées:
Code: Tout sélectionner
  \documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[showframe]{geometry}
\usepackage{tabularx}
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{4pt}
\setlength{\cellspacebottomlimit}{4pt}

\begin{document}

\noindent
\begin{tabularx}{\linewidth}{|>{$}Sr<{$}|*{11}{>{\centering\arraybackslash$}X<{$}|}}
 \hline x & -8 & -3 & -2 & 0 & 1 & 2 & 3 & 4 & 6 & 7 & 12 \\
 \hline f(x) & & & & & & & & & & & \\
 \hline
\end{tabularx}

\end{document} }

B. A.

Re: Tabular cumul options *{n} ; p{lgr cm} ; >{\centering}

MessagePosté: Mardi 05 Décembre 2017, 16:54
par pitite_floeur
Que de bons conseils, merci à vous !