Tableaux croisés

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 utilisateurs 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.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2203
Inscription : samedi 29 décembre 2007, 00:58

Re: Tableaux croisés

Message non lu par projetmbc »

Je me suis permis une petite amélioration retirant la case inutile en haut à gauche, et les deux cline qui ne sont pas nécessaires ici, sauf erreur de ma part.

Code : Tout sélectionner

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{tabularray}

\begin{document}

\begin{scriptsize}
\begin{tblr}{
    colspec    = {*{5}{c}},
    hlines     = 0.9pt,
    vlines     = 0.9pt,
    row{1}     = gray!25, 
    column{1}  = gray!25,
    stretch    = 0.82,
    cell{1}{1} = white,
    vline{1}   = {1}{0pt},
    hline{1}   = {1}{0pt},
    cell{2}{3} = {cmd=\bfseries}, 
    cell{4}{2} = {cmd=\bfseries}
}
  & A                    & B                              & C & D \\
1 & \SetCell[r=2,c=1]{c} & \SetCell[r=1,c=3]{c} blablabla         \\ 
2 &                      & a                              & b & c \\ 
3 &  texte               & d                              & e & f \\ 
\end{tblr}
\end{scriptsize}

\end{document}
Capture d’écran 2023-03-25 à 17.18.44.png
Dernière modification par projetmbc le dimanche 26 mars 2023, 18:20, modifié 1 fois.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2203
Inscription : samedi 29 décembre 2007, 00:58

Re: Tableaux croisés

Message non lu par projetmbc »

Une autre solution via nicematrix.

Code : Tout sélectionner

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{*{5}{c}}[hvlines,corners=NW]
  & A               & B                                & C & D \\
1 & \Block{2-1}{}   & \Block{1-3}{\bfseries blablabla}         \\ 
2 &                 & a                                & b & c \\ 
3 & \bfseries text  & d                                & e & f \\ 
\end{NiceTabular}

\end{document}
Capture d’écran 2023-03-25 à 21.29.52.png
Laurentfz
Utilisateur confirmé
Utilisateur confirmé
Messages : 32
Inscription : vendredi 22 mai 2020, 20:30
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Laurentfz »

Merci pour vos solutions.
Je vais regarder ça de près (Je pensais qu'une petite modification pouvait suffire sans changer de package).
Laurentfz
Utilisateur confirmé
Utilisateur confirmé
Messages : 32
Inscription : vendredi 22 mai 2020, 20:30
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Laurentfz »

Je pense adopter le package tabularray ;)

Merci encore.
F. Pantigny
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : dimanche 07 juillet 2019, 14:37

Re: Tableaux croisés

Message non lu par F. Pantigny »

Explication concernant le problème de laurentfz avec le \cline{1-1} qui semble ne pas fonctionner.

En fait, pour des raisons techniques (et historiques), aucun espace horizontal n'est réservé pour les filets tracés par la commande \cline. Cela veut dire que, en fait, ces filets empiètent sur la cellule située en-dessous. Dans le cas présent, le filet est bien tracé dans la cellule en-dessous... mais ensuite recouvert par le fond gris de cette cellule (demandé par >{\columncolor{gray!25}}). D'ailleurs, avec un logiciel capable de modifier les PDF (comme Adobe Acrobat), on peut supprimer le fond grisé et voir alors dessous le filet qui était caché.

Avec l'extension nicematrix, il suffit de remplacer l'environnement {tabular} par l'environnement {NiceTabular} (et d'utiliser la clé colortbl-like) pour que le filet réapparaisse (car dans les environnements de nicematrix, le comportement de \cline a été rectifié, si je puis dire).

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fourier}
\usepackage[scaled=0.875]{helvet} 
\usepackage[left=2cm, right=2cm, top=1cm, bottom=1cm]{geometry}
\usepackage{xcolor} 
\usepackage{colortbl}

\usepackage{nicematrix}


\begin{document}


\renewcommand{\arraystretch}{1.25}
\setlength{\arrayrulewidth}{0.9pt}

\begin{scriptsize}

   \begin{NiceTabular}{|>{\columncolor{gray!25}}c|c|c|c|c|}[colortbl-like]
    \hline
     \rowcolor{gray!25}& A & B & C & D \\
       \hline
        1 & \multicolumn{1}{c|}{} & \multicolumn{3}{c|}{\textbf{blablabla}}  \\ 
         \cline{1-1}  \cline{3-5}
        2 &\multicolumn{1}{c|}{} & a & b & c  \\ \hline
        3 &  \textbf{texte} & d & e & f  \\ \hline
  \end{NiceTabular}

          
\end{scriptsize}

\end{document}
Néanmoins, avec nicematrix, un tel tableau se ferait plus simplement ainsi :

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage[scaled=0.875]{helvet} 
\usepackage[left=2cm, right=2cm, top=1cm, bottom=1cm]{geometry}
\usepackage{xcolor} 
\usepackage{nicematrix}

\begin{document}

\renewcommand{\arraystretch}{1.25}
\setlength{\arrayrulewidth}{0.9pt}

\begin{scriptsize}

\begin{NiceTabular}{ccccc}[hvlines]
\CodeBefore
   \columncolor{gray!25}{1}
   \rowcolor{gray!25}{1}
\Body
     & A & B & C & D \\
   1 & \Block{2-1}{}    & \Block{1-3}{\textbf{blablabla}} \\ 
   2 &                        & a & b & c  \\ 
   3 &  \textbf{texte} & d & e & f  \\ 
\end{NiceTabular}
          
\end{scriptsize}

\end{document}

Laurentfz
Utilisateur confirmé
Utilisateur confirmé
Messages : 32
Inscription : vendredi 22 mai 2020, 20:30
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Laurentfz »

Merci pour ces explications et pour les deux versions.