Impossible de compiler lors de la tentative de modification de la couleur de police des lignes tabulaires spécifiées

Nov 22 2020

J'essaie de changer la couleur du texte d'une ligne entière de a tabular, sans utiliser le tabupackage. Je veux utiliser cette réponse .

Qu'est-ce que je fais mal pour que le MWE suivant ne se compile pas? J'obtiens le message d'erreur "Erreur LaTeX: Commande @ déjà définie."

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\usepackage{siunitx}
\sisetup{%
  detect-family, detect-shape,
  product-units = power,
  list-final-separator = {, and },
  retain-explicit-plus,
  input-comparators = {<=>\approx\ge\geq\gg\le\leq\ll\sim\lesssim\gtrsim}
}
\DeclareSIUnit[number-unit-product = ]\percent{\char`\%}

% Code from https://tex.stackexchange.com/a/26364/15622
\newcommand*{\@rowstyle}{}
\newcommand*{\rowstyle}[1]{% sets the style of the next row
  \gdef\@rowstyle{#1}%
  \@rowstyle\ignorespaces%
}
\newcolumntype{=}{% resets the row style
  >{\gdef\@rowstyle{}}%
}
\newcolumntype{+}{% adds the current row style to the next column
  >{\@rowstyle}%
}
\makeatother

\begin{document}

\begin{table}
  \centering
  \begin{tabular}{=l +l +l}
    \toprule
    A & {B} & {C}\\
    \midrule
    \rowstyle{\color{red}}
    Bob & \SI{75}{\percent} & -1.11\\
    Carla & \SI{75}{\percent} & 2.22\\
    Dale & \SI{75}{\percent} & -3.33\\
    Ena & \SI{75}{\percent} & 4.44\\
    \bottomrule
  \end{tabular}
  \caption{A}
\end{table}

\end{document}

Réponses

2 MarianG. Nov 22 2020 at 15:33

Trop long pour un commentaire. J'espère que l'approche suivante peut être une alternative quand on a besoin de colorer les lignes sélectionnées de votre tableau, le reste des lignes, ou même plus de lignes sans répéter la spécification de couleur.

Production

Il est important de mentionner que la solution ne peut être utilisée qu'avec pdfTeX. En outre, il existe d'autres limitations, mais dans de nombreux cas, l'approche fonctionne correctement.

Utiliser l'approche

Définissez simplement votre spécification de couleur RVB préférée, par exemple en utilisant \def\mycolor{.6 0 .8}. En outre, utilisez la commande \rowclrau début de la ligne (ou, généralement, quelque part dans la ligne) pour colorer le reste de la ligne. Pour appliquer la couleur définie, écrivez \rowclr\mycolor. Si vous avez besoin de colorer plusieurs lignes à la fois, il est préférable d'utiliser les commandes \startclr\mycoloret \stopclrde désactiver la coloration.

Code

\documentclass[oneside,11pt]{book}

\usepackage[semibold,tt=false]{libertine}
\usepackage{libertinust1math}
\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
\usepackage[subrefformat=parens]{subcaption}
\usepackage[
  expansion = false ,
  tracking = smallcaps ,
  letterspace = 40 ,
]{microtype}
\usepackage{booktabs}
\usepackage{acro}
\usepackage{siunitx}
\sisetup{%
  detect-family, detect-shape,
  product-units = power,
  list-final-separator = {, and },
  retain-explicit-plus,
  input-comparators = {<=>\approx\ge\geq\gg\le\leq\ll\sim\lesssim\gtrsim}
}
\DeclareSIUnit[number-unit-product = ]\percent{\char`\%}


% declare your favorite rgb color specifications here
\def\mycolor{.6 0 .8}
\def\othercolor{1 .2 .5}
\def\somecolor{.5 .8 .3}

\def\stopclr{\pdfliteral{0 g}}
\def\startclr#1{\pdfliteral{#1 rg}}

% color the 'rest' of the row
\def\rowclr#1#2\\{\startclr#1#2\stopclr\\}



\begin{document}

\begin{table}
  \centering
  \begin{tabular}{ccc}
    %------------------------------------
    \toprule
    A            & B        & C\\
    \midrule
    %------------------------------------
    \rowclr\mycolor
    Bob          & \SI{75}{\percent}    & -1.11\\
    %------------------------------------
    Carla        & \startclr\othercolor \SI{75}{\percent}& 2.22\\
    %------------------------------------
    Dale\stopclr & \SI{75}{\percent}    & -3.33\\
    %------------------------------------
    Ena          & \rowclr\somecolor\SI{75}{\percent}    & 4.44\\
    %------------------------------------
    \bottomrule
  \end{tabular}
  \caption{A}
\end{table}

\end{document}
jsbibra Nov 22 2020 at 10:10

\documentclass[oneside,11pt]{book}
\usepackage{xcolor}

%\usepackage[semibold,tt=false]{libertine}
%\usepackage{libertinust1math}
%\usepackage[font={sf,small},labelsep=quad,labelfont=sc]{caption}
%\usepackage[subrefformat=parens]{subcaption}
%\usepackage[
%  expansion = false ,
%  tracking = smallcaps ,
%  letterspace = 40 ,
%]{microtype}
\usepackage{booktabs}
%\usepackage{acro}
\usepackage{siunitx}
\sisetup{%
  detect-family, detect-shape,
  product-units = power,
  list-final-separator = {, and },
  retain-explicit-plus,
  input-comparators = {<=>\approx\ge\geq\gg\le\leq\ll\sim\lesssim\gtrsim}
}
\DeclareSIUnit[number-unit-product = ]\percent{\char`\%}

% Code from https://tex.stackexchange.com/a/26364/15622
\makeatletter
\newcommand*{\@rowstyle}{}
\newcommand*{\rowstyle}[1]{% sets the style of the next row
  \gdef\@rowstyle{#1}%
  \@rowstyle\ignorespaces%
}
\newcolumntype{=}{% resets the row style
  >{\gdef\@rowstyle{}}%
}
\newcolumntype{+}{% adds the current row style to the next column
  >{\@rowstyle}%
}
\makeatother

\begin{document}

\begin{table}
  \centering
  \begin{tabular}{=l +l +l}
    \toprule
    A & {B} & {C}\\
    \midrule
    \rowstyle{\color{red}}
    Bob & \SI{75}{\percent} & -1.11\\
    Carla & \SI{75}{\percent} & 2.22\\
    Dale & \SI{75}{\percent} & -3.33\\
    Ena & \SI{75}{\percent} & 4.44\\
    \bottomrule
  \end{tabular}
  \caption{A}
\end{table}

\end{document}
t