Je cherche comment présenter correctement les tableaux tabular en obtenant des lignes de hauteurs correctes, en particulier quand figurent des fractions dans l'entête et dans les lignes du tableau. J'ai mis un ECM avec un tableau qui n'est pas vraiment joli.

Ouvrir dans l'éditeur
\documentclass[a4paper,10pt,oneside]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}

\usepackage{mathrsfs,amssymb,mathtools,cellspace}
\everymath{\displaystyle}

\begin{document}

\newcolumntype{C}{>{$\displaystyle}Sc<{$}}
\newcolumntype{D}{>{\centering$}m{1cm}<{$}}
\begin{center}
\begin{tabular}{|l|*{3}{D|}}
\hline
$g_i$&-3&2&5\tabularnewline
\hline
$p_i=P\left(G=g_i\right)$&\dfrac{1}{2}&\dfrac{1}{3}&\dfrac{1}{6}\tabularnewline
\hline
\end{tabular}
\end{center}
\end{document}

Avec le package tabvar, je peux régler ce genre de problème dans les tableaux de variations avec une commande \TVarraystretch{}{}, mais je ne sais pas comment œuvre cette commande pour m'en inspirer dans des tableaux normaux.

Posée 19 Déc '15, 12:30

pzorba75's gravatar image

pzorba75
15621122
Taux d'acceptation : 20%

Modifiée 28 Déc '15, 21:36

Pathe's gravatar image

Pathe ♦♦
6.4k5123200


Bon, allez, c'est reparti : le package cellspace permet, avec le spécificateur de colonne S, d'insérer si c'est nécessaire une espace en haut et en bas d'une cellule pour justement que le contenu ne touche pas les filets horizontaux. Le déclenchement de l'insertion de l’espace dépend des paramètres \celltoplimit et \cellbottomlimit qui représentent l'espace minimale demandée en haut ou en bas de la cellule.

Ce spécificateur S fonctionne un peu comme une macro et admet un argument qui est le spécificateur de la colonne. On peut donc écrire Sc pour une colonne centrée ou S{m{<longueur>}} pour une colonne de type m{<longueur>}.

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{cellspace}
\newcolumntype{C}{>{$\displaystyle}Sc<$}
\cellspacetoplimit=3pt
\cellspacebottomlimit=3pt
\begin{document}
\begin{center}
    \begin{tabular}{|l|*{3}{C|}}\hline
        $g_i$&-3&2&5\\\hline
        $p_i=P\left(G=g_i\right)$&\frac12&\frac13&\frac16\\\hline
    \end{tabular}
\end{center}
\end{document}
Lien permanent

Publiée 19 Déc '15, 21:39

unbonpetit's gravatar image

unbonpetit ♦♦
1.7k18
Taux d'acceptation : 68%

Modifiée 19 Déc '15, 22:12

Pathe's gravatar image

Pathe ♦♦
6.4k5123200

Le package cellpsace est justement fait pour ça : la colonne C définie dans votre code semble faire exactement ce que vous demandez en plus !

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{array,cellspace}
\newcolumntype{C}{>{$\displaystyle}Sc<$}
\cellspacetoplimit=3pt
\cellspacebottomlimit=3pt
\begin{document}
\begin{center}
    \begin{tabular}{|l|*{3}{C|}}\hline
        $g_i$&-3&2&5\\\hline
        $p_i=P\left(G=g_i\right)$&\frac12&\frac13&\frac16\\\hline
    \end{tabular}
\end{center}
\end{document}
Lien permanent

Publiée 19 Déc '15, 12:40

unbonpetit's gravatar image

unbonpetit ♦♦
1.7k18
Taux d'acceptation : 68%

La réponse se trouve dans la documentation de cellspace, chapitre "How to solve this" !

Ouvrir dans l'éditeur
\newcolumntype{D}{>{\centering$}S{m{1cm}}<$}
Lien permanent

Publiée 19 Déc '15, 17:41

unbonpetit's gravatar image

unbonpetit ♦♦
1.7k18
Taux d'acceptation : 68%

Dans l'ECM, j'ai oublié de mettre l'appel de cellspace, mais dans mes documents j'ai bien cette extension. Je vais reprendre avec mes documents complets avant de valider la réponse ou redonner un exemple avec un ECM fidèle. Voici un ECM modifié intégrant la réponse d'unbonpetit et une description plus précise de ce que je cherche à obtenir

Ouvrir dans l'éditeur
    \documentclass[a4paper,10pt,oneside]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}

\usepackage{mathrsfs,amssymb,mathtools,cellspace}
\everymath{\displaystyle}

\begin{document}

\newcolumntype{C}{>{$\displaystyle}Sc<{$}}
\newcolumntype{D}{>{\centering$}m{1cm}<{$}}
\cellspacetoplimit=3pt
\cellspacebottomlimit=3pt
\begin{center}
\begin{tabular}{|l|*{3}{C|}}
\hline
$g_i$&-\dfrac{3}{2}&2&5\tabularnewline
\hline
$p_i=P\left(G=g_i\right)$&\dfrac{1}{2}&\dfrac{1}{3}&\dfrac{1}{6}\tabularnewline
\hline
\end{tabular}
\end{center}
Je n'utilise pas le code C dans la définition des 3 colonnes mais le code D qui permet d'obtenir un tableau avec ces 3 colonnes de la même largeur, et dans ce cas les fractions heurtent les lignes horizontales comme le montre le tableau ci-dessus.

\newcolumntype{C}{>{$\displaystyle}Sc<{$}}
\newcolumntype{D}{>{\centering$}m{1cm}<{$}}
\cellspacetoplimit=3pt
\cellspacebottomlimit=3pt
\begin{center}
\begin{tabular}{|l|*{3}{D|}}
\hline
$g_i$&-\dfrac{3}{2}&2&5\tabularnewline
\hline
$p_i=P\left(G=g_i\right)$&\dfrac{1}{2}&\dfrac{1}{3}&\dfrac{1}{6}\tabularnewline
\hline
\end{tabular}
\end{center}

En résumé, il me faut combiner le S et m\{1cm\} est cellspacetop et cellspacebottom mais je ne trouve pas comment le codifier sans erreur de compilation.
\end{document}

``

Lien permanent

Publiée 19 Déc '15, 15:20

pzorba75's gravatar image

pzorba75
15621122
Taux d'acceptation : 20%

Modifiée 19 Déc '15, 17:27

Ayant un préambule personnel, non présentable tellement il regroupe de réglages en tous genres, je me demande s'il est possible d'ajouter les lignes cellspacetoplimit=3pt et cellspacebottomlits=3pt dans ce préambule pour alléger les documents avec plusieurs tableaux.

Je rédige sous TeXmaker et j'ai un raccourci qui m'insère automatiquement la défintion tabular que je n'ai qu'à modifier en adaptant le nombre et la largeur des colonnes identiques maintenant codées avec S{m{***}}.

Lien permanent

Publiée 19 Déc '15, 19:02

pzorba75's gravatar image

pzorba75
15621122
Taux d'acceptation : 20%

Modifiée 19 Déc '15, 20:00

Pathe's gravatar image

Pathe ♦♦
6.4k5123200

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×14
×1

Question posée : 19 Déc '15, 12:30

Question vue : 10,640 fois

Dernière mise à jour : 28 Déc '15, 21:36