Page 1 sur 1

Largeur de colonne dans un tableau

MessagePosté: Samedi 22 Août 2009, 13:35
par goems
Bonjour,

Je désire fixer la largeur d'une colonne dans un de mes tableaux. De plus, j'aimerais que le texte de cette colonne soit centré. J'ai trouvé une technique pour faire cela dans la faqfr version 3.00 mais ça ne fonctionne pas.

Code: Tout sélectionner
\documentclass[a4paper,12pt]{report}
%Permet d'utiliser les accents dans winedt
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
%Définit la police utilisée
\usepackage{fouriernc}
%Permet de définir les marges des pages
\usepackage[
    paper=a4paper,
    tmargin=2.5cm,
    bmargin=2.5cm,
    lmargin=2.5cm,
    rmargin=2.5cm]{geometry}
\usepackage[frenchb]{babel}
%Permet de faire varier les paramètres des titres
\usepackage{sectsty}
%Permet de souligner
\usepackage[normalem]{ulem}
%Permet d'encadrer
\usepackage{fancybox}
%Permet la gestion des hauts et bas de page
\usepackage{fancyhdr}
%Permet la gestion des figures
\usepackage{graphicx,subfigure}
%******************************
\usepackage{shadow}
\usepackage{subfigure}
%Permet de colorier le texte ou de surligner
\usepackage{color}
%Gestion des colonnes dans les tableaux
\usepackage{multirow}
%Permet de changer les légendes
\usepackage[small,hang]{caption2}
%Pour la gestion des flottants
\usepackage{float}
%Permet l'utilisation de \topcaption
\usepackage{topcapt}
% Pour crer une liste de Symboles
\usepackage{nomencl}                           
%Crée la liste de symboles
%***************************************************************************

%Définit la commande \hlinewd pour les tableaux
%***************************************************************************
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
%***************************************************************************

%Change la légende des figures et des tableaux
%***************************************************************************
\renewcommand{\captionfont}{\normalsize}            %taille de la légende
\renewcommand{\captionlabelfont}{\it \bf \small}    %?
\renewcommand{\captionlabeldelim}{\bf \space : }    %Un espace puis :
\renewcommand\captionlabelsep{\space }              %un espace après le :
\addto\captionsfrench{%                             % renomme les légende (pas nécessaire, mais cela enlève les majuscules
\renewcommand{\figurename}{{\bfseries\normalsize  Figure}}}
\addto\captionsfrench{%
\renewcommand{\tablename}{{\bfseries\normalsize Tableau}}}
%***************************************************************************

\begin{document}

\makeatletter
\newcommand\justify{\let\\\@centercr\rightskip\z@skip
\leftskip\z@skip}
\makeatother


\begin{table}
\begin{center}
       \caption{Un tableau avec une colonne problématique}
       
       \begin{tabular}[!t]{@{\vrule width 0.3mm\hskip\tabcolsep} c | c | >{\justify}m{3cm} @{\hskip\tabcolsep\vrule width 0.3mm} }
        \hlinewd{0,3mm}
                            & Normal      & Expérience problèmatique\tabularnewline
        \hlinewd{0,3mm}
        Masse               & 7800g       & 700g\tabularnewline
        \hlinewd{0,3mm}
       
        \end{tabular}
\end{center}
\end{table}

\end{document}


Le titre de colonne Normal est bel et bien centré sur la hauteur. Par contre, le titre suivant et le 700g ne sont pas centré par rapport à l'horizontale.

Merci

Re: Largeur de colonne dans un tableau

MessagePosté: Samedi 22 Août 2009, 20:33
par rebouxo
Ça c'est normal ! m{3cm} va centrer verticalement cette colonne et pas les autres.

Olivier

Re: Largeur de colonne dans un tableau

MessagePosté: Samedi 22 Août 2009, 20:42
par goems
D'accord, mais as-tu une solution?

Re: Largeur de colonne dans un tableau

MessagePosté: Dimanche 23 Août 2009, 10:29
par pg
goems a écrit:le titre suivant et le 700g ne sont pas centré par rapport à l'horizontale

Pour centrer par rapport à l'horizontale, c'est plutôt :

Code: Tout sélectionner
>{\centering}m{3cm}

Re: Largeur de colonne dans un tableau

MessagePosté: Dimanche 23 Août 2009, 13:02
par goems
Merci beaucoup, tu as toujours solution à tout à ce que je vois.

Tant que j'y suis, voici une nouvelle colle: Je cherche à créer de nouvelles macro. Pour cela, j'utilise \makeatletter, \newcommand et \makeatother.

Voici le scipt.

Code: Tout sélectionner

\documentclass[a4paper,12pt]{report}
%Permet d'utiliser les accents dans winedt
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
%Définit la police utilisée
\usepackage{fouriernc}
%Permet de définir les marges des pages
\usepackage[
    paper=a4paper,
    tmargin=2.5cm,
    bmargin=2.5cm,
    lmargin=2.5cm,
    rmargin=2.5cm]{geometry}
\usepackage[frenchb]{babel}
%Permet de faire varier les paramètres des titres
\usepackage{sectsty}
%Permet de souligner
\usepackage[normalem]{ulem}
%Permet d'encadrer
\usepackage{fancybox}
%Permet la gestion des hauts et bas de page
\usepackage{fancyhdr}
%Permet la gestion des figures
\usepackage{graphicx,subfigure}
%******************************
\usepackage{shadow}
\usepackage{subfigure}
%Permet de colorier le texte ou de surligner
\usepackage{color}
%Gestion des colonnes dans les tableaux
\usepackage{multirow}
%Permet de changer les légendes
\usepackage[small,hang]{caption2}
%Pour la gestion des flottants
\usepackage{float}
%Permet l'utilisation de \topcaption
\usepackage{topcapt}
\usepackage{array}
% Pour crer une liste de Symboles
\usepackage{nomencl}                           
%Crée la liste de symboles
%***************************************************************************

%Définit la commande \hlinewd pour les tableaux
%***************************************************************************
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
%***************************************************************************

%Définit la commande \vlinewd pour les tableaux
%***************************************************************************
\makeatletter
\def\vlinewd#1{%
\noalign{\ifnum0=`}\fi\vrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
%***************************************************************************

%Change la légende des figures et des tableaux
%***************************************************************************
\renewcommand{\captionfont}{\normalsize}            %taille de la légende
\renewcommand{\captionlabelfont}{\it \bf \small}    %?
\renewcommand{\captionlabeldelim}{\bf \space : }    %Un espace puis :
\renewcommand\captionlabelsep{\space }              %un espace après le :
\addto\captionsfrench{%                             % renomme les légende (pas nécessaire, mais cela enlève les majuscules
\renewcommand{\figurename}{{\bfseries\normalsize  Figure}}}
\addto\captionsfrench{%
\renewcommand{\tablename}{{\bfseries\normalsize Tableau}}}
%***************************************************************************
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{colortbl}
%Définition des couleurs utilisée*******************************************
\definecolor{rouge}{rgb}{0.9692,0.2,0}
\definecolor{orange}{rgb}{0.9808,0.5885,0.2033}
\definecolor{vert}{rgb}{0.4038,0.9769,0.1923}
\definecolor{blanc}{rgb}{1,1,1}
%***************************************************************************

\makeatletter
\newcommand{\lcol}{\vrule width 0.3mm\hskip\tabcolsep}
\makeatother

\makeatletter
\newcommand{\rcol}{\hskip\tabcolsep\vrule width 0.3mm}
\makeatother

\makeatletter
\newcommand{\col}{\hskip\tabcolsep\vrule width 0.3mm\hskip\tabcolsep}
\makeatother

\begin{document}

\begin{table}
\begin{center}
       \caption{Un tableau avec une colonne problématique}

       \begin{tabular}[!t]{@{\lcol} c | c | >{\centering}m{3cm} @{\rcol} }
        \hlinewd{0,3mm}
        & Normal      & Expérience problèmatique\tabularnewline
        \hlinewd{0,3mm}
        Masse               & 7800g  & \multicolumn{1}{|>{\color{blanc}\columncolor{rouge}}c @{\rcol}}{700g}\tabularnewline
        \hlinewd{0,3mm}
        \end{tabular}
\end{center}
\end{table}

\end{document}


J'ai donc utilisé par exemple :
\makeatletter
\newcommand{\rcol}{\hskip\tabcolsep\vrule width 0.3mm}
\makeatother

pour utiliser @{\rcol} à la place de @{\hskip\tabcolsep\vrule width 0.3mm}.

Est-il possible d'en créer une pour remplacer \color{blanc}\columncolor{rouge} en une macro plus courte? genre \c{b} et \c{r} ou \colB et \colR?

D'avance merci

Re: Largeur de colonne dans un tableau

MessagePosté: Lundi 24 Août 2009, 11:25
par pg
goems a écrit:\makeatletter
\newcommand{\rcol}{\hskip\tabcolsep\vrule width 0.3mm}
\makeatother

\makeatletter et \makeatother sont inutiles ici car le code ne contient pas de @.

Est-il possible d'en créer une pour remplacer \color{blanc}\columncolor{rouge} en une macro plus courte? genre \c{b} et \c{r} ou \colB et \colR?

Le package array permet de définir de nouveaux types de colonnes. Par exemple :

Code: Tout sélectionner
\newcolumntype{a}{>{\color{blanc}\columncolor{rouge}}c}

(Le premier argument de \newcolumntype doit être une lettre et cette lettre ne doit pas être r, l, c, p, m, b ou toute autre lettre déjà prise dans ce contexte.) Ensuite, il suffira d'utiliser "\multicolumn{1}{|a@{\rcol}}{700g}". On peut aussi mettre le @{\rcol} dans la définition si c'est pratique :

Code: Tout sélectionner
\newcolumntype{a}{>{\color{blanc}\columncolor{rouge}}c@{\rcol}}

En tout, cela donnera :
Code: Tout sélectionner
\documentclass[a4paper,12pt]{report}
%Permet d'utiliser les accents dans winedt
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
%Définit la police utilisée
\usepackage{fouriernc}
%Permet de définir les marges des pages
\usepackage[
    paper=a4paper,
    tmargin=2.5cm,
    bmargin=2.5cm,
    lmargin=2.5cm,
    rmargin=2.5cm]{geometry}
\usepackage[frenchb]{babel}
%Permet de faire varier les paramètres des titres
\usepackage{sectsty}
%Permet de souligner
\usepackage[normalem]{ulem}
%Permet d'encadrer
\usepackage{fancybox}
%Permet la gestion des hauts et bas de page
\usepackage{fancyhdr}
%Permet la gestion des figures
\usepackage{graphicx,subfigure}
%******************************
\usepackage{shadow}
\usepackage{subfigure}
%Permet de colorier le texte ou de surligner
\usepackage{color}
%Gestion des colonnes dans les tableaux
\usepackage{multirow}
%Permet de changer les légendes
\usepackage[small,hang]{caption2}
%Pour la gestion des flottants
\usepackage{float}
%Permet l'utilisation de \topcaption
\usepackage{topcapt}
\usepackage{array}
% Pour crer une liste de Symboles
\usepackage{nomencl}                           
%Crée la liste de symboles
%***************************************************************************

%Définit la commande \hlinewd pour les tableaux
%***************************************************************************
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
%***************************************************************************

%Définit la commande \vlinewd pour les tableaux
%***************************************************************************
\makeatletter
\def\vlinewd#1{%
\noalign{\ifnum0=`}\fi\vrule \@height #1 %
\futurelet\reserved@a\@xhline}
\makeatother
%***************************************************************************

%Change la légende des figures et des tableaux
%***************************************************************************
\renewcommand{\captionfont}{\normalsize}            %taille de la légende
\renewcommand{\captionlabelfont}{\it \bf \small}    %?
\renewcommand{\captionlabeldelim}{\bf \space : }    %Un espace puis :
\renewcommand\captionlabelsep{\space }              %un espace après le :
\addto\captionsfrench{%                             % renomme les légende (pas nécessaire, mais cela enlève les majuscules
\renewcommand{\figurename}{{\bfseries\normalsize  Figure}}}
\addto\captionsfrench{%
\renewcommand{\tablename}{{\bfseries\normalsize Tableau}}}
%***************************************************************************
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{colortbl}
%Définition des couleurs utilisée*******************************************
\definecolor{rouge}{rgb}{0.9692,0.2,0}
\definecolor{orange}{rgb}{0.9808,0.5885,0.2033}
\definecolor{vert}{rgb}{0.4038,0.9769,0.1923}
\definecolor{blanc}{rgb}{1,1,1}
%***************************************************************************

\newcommand{\lcol}{\vrule width 0.3mm\hskip\tabcolsep}
\newcommand{\rcol}{\hskip\tabcolsep\vrule width 0.3mm}
\newcommand{\col}{\hskip\tabcolsep\vrule width 0.3mm\hskip\tabcolsep}

% nouveau type de colonne :
\newcolumntype{a}{>{\color{blanc}\columncolor{rouge}}c}

\begin{document}

\begin{table}
\begin{center}
       \caption{Un tableau avec une colonne problématique}

       \begin{tabular}[!t]{@{\lcol} c | c | >{\centering}m{3cm} @{\rcol} }
        \hlinewd{0,3mm}
        & Normal      & Expérience problèmatique\tabularnewline
        \hlinewd{0,3mm}
        Masse               & 7800g  & \multicolumn{1}{|a@{\rcol}}{700g}\tabularnewline
        \hlinewd{0,3mm}
        \end{tabular}
\end{center}
\end{table}

\end{document}

Re: Largeur de colonne dans un tableau

MessagePosté: Mercredi 26 Août 2009, 09:40
par goems
Encore une fois, merci beaucoup.