Afin d'ajouter une couleur de fond uniforme pour mettre en valeur les tableaux, j'utilise \colorbox dans un code basique du type:

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\begin{table}
\centering\small
\colorbox{yellow!10}{\begin{tabular}{l}\hline
ligne 1 \\
ligne 2\\\hline
\end{tabular}}
\end{table}
\end{document}

Quel serait l'équivalent avec un \renewenvironment agissant sur table?

Posée 20 Avr '20, 17:45

pluton's gravatar image

pluton
1.2k22937
Taux d'acceptation : 34%

Modifiée 20 Avr '20, 18:39

Merci de fournir un ECM.

(20 Avr '20, 17:57) denis ♦♦ denis's gravatar image

Avec l'extension adjustbox :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{xcolor}
\usepackage{graphicx}

\usepackage{adjustbox}

\newenvironment{colbox}[1][yellow!50!white]{%
  \begin{adjustbox}{bgcolor=#1}  
}{%
    \end{adjustbox}%
}

\begin{document}

\begin{table}
\centering\small
\begin{colbox}
\begin{tabular}{l}\hline
ligne 1 \\
ligne 2\\\hline
\end{tabular}
\end{colbox}
\end{table}

\begin{table}
\centering\small
\begin{colbox}[red]
\begin{tabular}{l}\hline
ligne 1 \\
ligne 2\\\hline
\end{tabular}
\end{colbox}
\end{table}

\end{document}

alt text

Ou avec table :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{xcolor}
\usepackage{graphicx}

\usepackage{adjustbox}

\let\originaltable\table
\let\endoriginaltable\endtable
\renewenvironment{table}[1][htbp]{%
  \originaltable[#1]
  \centering\small%
    \begin{adjustbox}{bgcolor=yellow!50!white}%
    }%
  {\end{adjustbox}\endoriginaltable}

\begin{document}

\begin{table}
\begin{tabular}{l}\hline
ligne 1 \\
ligne 2\\\hline
\end{tabular}
\end{table}

\begin{table}[b]
\begin{tabular}{l}\hline
ligne 1 \\
ligne 2\\\hline
\end{tabular}
\end{table}

\end{document}
Lien permanent

Publiée 20 Avr '20, 18:04

samcarter's gravatar image

samcarter
8.4k2817
Taux d'acceptation : 56%

Modifiée 20 Avr '20, 21:46

1

Très ingénieux! Je n'avais pas pensé à cette utilisation d'adjustbox.

(20 Avr '20, 18:10) Bernard Bernard's gravatar image

@Bernard merci :)

(20 Avr '20, 18:12) samcarter samcarter's gravatar image

Ah oui c'est beau! je vais imbriquer cela dans une redéfinition de table pour ne pas avoir à écrire \begin{colbox}...\end{colbox} à chaque fois. Ca permettra aussi d'intégrer le \small...

(20 Avr '20, 18:20) pluton pluton's gravatar image

@samcarter oui mais dans le sens inverse, avec une nouvelle definition de table qui inclut colbox afin de ne pas avoir à connaître un nouvel environnement. La commande colbox serait transparente pour l'utilisateur et tous les tableaux auraient la même couleur de fond. En fait, il faudrait aller chercher la definition de table dans latex.ltx (??), l'inclure dans un colbox et inclure le tout dans un table. Enfin, les deux versions fonctionnent! Super!

(20 Avr '20, 18:37) pluton pluton's gravatar image
1

@pluton Vous n'avez pas besoin de connaître la définition de table. Latex peut se souvenir de la définition.

(20 Avr '20, 21:48) samcarter samcarter's gravatar image

L'environnement {NiceTabular} de nicematrix a des commandes intégrées pour colorier les cellules, les rangées, les colonnes et aussi le tableau complet (avec \arraycolor).

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{c}
\CodeBefore
  \arraycolor{yellow!50}
\Body
\hline
  ligne 1 \\
  ligne 2 \\
\hline
\end{NiceTabular}

end{document}
Lien permanent

Publiée 18 Sep '21, 15:34

fpantigny's gravatar image

fpantigny
1.3k44
Taux d'acceptation : 36%

Autre solution, basée sur le package environ et incluant l'environnement table dans la redéfinition :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{xcolor}
\usepackage{environ}

\NewEnviron{test}[2][yellow!10]{%
  \begin{table}
    \centering\small
    \colorbox{#1}{%
      \begin{tabular}{#2}
        \BODY
      \end{tabular}
    }
  \end{table}
}

\begin{document}
\begin{table}
\centering\small
 \colorbox{yellow!10}{\begin{tabular}{l}\hline
ligne 1 \\
ligne 2\\\hline
\end{tabular}}
\end{table}

\begin{test}{l}
  \hline
  ligne 1 \\
  ligne 2 \\
  \hline
\end{test}

\begin{test}[red!10]{l}
  \hline
  ligne 1 \\
  ligne 2 \\
  \hline
\end{test}
\end{document}
Lien permanent

Publiée 20 Avr '20, 18:28

denis's gravatar image

denis ♦♦
7.3k1510
Taux d'acceptation : 53%

Bon, les deux solutions suggérées par samcarter et denis conviennent. Initialement, j'avais en tête quelque chose comme la deuxième solution de samcarter (avec let). J'en propose une troisième qui passe par etoolbox, mais qui agit sur tabular (et pas sur table comme demandé dans ma question)

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{xcolor}
\usepackage{etoolbox}
\usepackage{adjustbox}
\BeforeBeginEnvironment{tabular}{\centering\small\begin{adjustbox}{bgcolor=red!10}}
\AfterEndEnvironment{tabular}{\end{adjustbox}}
\begin{document}
\begin{table}[ht]
\begin{tabular}{l}\hline
    ligne 1 \\
    ligne 2\\\hline
\end{tabular}
\caption{ploplo}
\end{table}
\end{document}

En pensant à la solution ci-dessus, j'étais plutôt parti sur une redéfinition de table avec quelque chose comme

Ouvrir dans l'éditeur Overleaf
\AfterBeginEnvironment{table}{\centering\small\begin{adjustbox}{bgcolor=red!10}}
\BeforeEndEnvironment{table}{\end{adjustbox}}

Malheureusement, ça ne fonctionne pas parce que la commande \AfterBeginEnvironment n'existe pas. Par contre, dans l'esprit \BeforeEndEnvironment serait bien équivalent à \AtEndEnvironment. Je ne suis pas sûr de comprendre pourquoi quelque chose comme \AfterBeginEnvironment n'et pas proposé dans etoolbox? (En tous les cas, c'est ce que j'ai compris de la lecture du guide d'utilisation).

Lien permanent

Publiée 22 Avr '20, 08:29

pluton's gravatar image

pluton
1.2k22937
Taux d'acceptation : 34%

Modifiée 22 Avr '20, 08:35

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.