Kann nicht kompiliert werden, wenn versucht wird, die Schriftfarbe der angegebenen Tabellenzeilen zu ändern

Nov 22 2020

Ich versuche, die Textfarbe einer ganzen Zeile von a zu ändern tabular, ohne das tabuPaket zu verwenden. Ich möchte diese Antwort verwenden .

Was mache ich falsch, damit das folgende MWE nicht kompiliert wird? Ich erhalte die Fehlermeldung "LaTeX-Fehler: Befehl @ bereits definiert."

\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}

Antworten

2 MarianG. Nov 22 2020 at 15:33

Zu lang für einen Kommentar. Ich hoffe, dass der folgende Ansatz eine Alternative sein kann, wenn Sie die ausgewählten Zeilen Ihrer Tabelle, die Reste der Zeilen oder noch mehr Zeilen einfärben müssen, ohne die Farbspezifikation zu wiederholen.

Ausgabe

Es ist wichtig zu erwähnen, dass die Lösung nur mit pdfTeX verwendet werden kann. Es gibt auch einige andere Einschränkungen, aber in vielen Fällen funktioniert der Ansatz einwandfrei.

Verwenden Sie den Ansatz

Definieren Sie einfach Ihre bevorzugte RGB-Farbspezifikation, z \def\mycolor{.6 0 .8}. B. mithilfe von . Verwenden Sie außerdem den Befehl \rowclram Anfang der Zeile (oder im Allgemeinen irgendwo in der Zeile), um den Rest der Zeile einzufärben. Schreiben Sie, um die definierte Farbe anzuwenden \rowclr\mycolor. Wenn Sie mehr Zeilen gleichzeitig färben müssen, ist es besser, die Befehle zu verwenden \startclr\mycolorund \stopclrdie Färbung zu deaktivieren.

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