Как изменить цветную ячейку в зависимости от значения, если в латексе есть другие ячейки с текстом? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь изменить цвет фона некоторых ячеек, значения которых превышают некоторое ограничение.Например, если значение ячейки больше 2, цвет фона ячейки должен быть красным.Я думаю, что я очень близок, потому что я могу сделать это, когда в таблице только цифры.Проблема в том, что я не знаю, как это сделать, когда в моей таблице есть несколько ячеек, содержащих текст, а другие - цифры.

Что я могу сделать:

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{collcell}

%The min, mid and max values
\newcommand*{\MinNumber}{0.0}%
\newcommand*{\MidNumber}{0.5} %
\newcommand*{\MaxNumber}{1.0}%

%Apply the gradient macro
\newcommand{\ApplyGradient}[1]{%
        \ifdim #1 pt > \MidNumber pt
            \pgfmathsetmacro{\PercentColor}{max(min(100.0*(#1 - \MidNumber)/(\MaxNumber-\MidNumber),100.0),0.00)} %
            \hspace{-0.33em}\colorbox{green!\PercentColor!yellow}{#1}
        \else
            \pgfmathsetmacro{\PercentColor}{max(min(100.0*(\MidNumber - #1)/(\MidNumber-\MinNumber),100.0),0.00)} %
            \hspace{-0.33em}\colorbox{red!\PercentColor!yellow}{#1}
        \fi
}

\newcolumntype{R}{>{\collectcell\ApplyGradient}c<{\endcollectcell}}
\renewcommand{\arraystretch}{0}
\setlength{\fboxsep}{3mm} % box size
\setlength{\tabcolsep}{0pt}

\begin{document}
    \begin{table}[ht]
\center{{\textbf{\huge SOME TEXT HERE}} \\Lat: -20.34 / Lon: -40.21 \\}
\caption{Some text here...}
\renewcommand{\baselinestretch}{2}
\center
        \begin{center}
            \begin{tabular}{*{10}{R}}
            \hline
            %\rowcolor{Gray}
              1.00 & 1.00 & 1.00 & 1.00 & 0.99 & 0.98 & 0.96 & 0.90 & 0.82 & 0.37 \\
              1.00 & 1.00 & 0.99 & 0.98 & 0.95 & 0.90 & 0.82 & 0.61 & 0.37 & 0.01 \\
              1.00 & 0.99 & 0.98 & 0.96 & 0.90 & 0.82 & 0.67 & 0.37 & 0.14 & 0.00 \\
              1.00 & 0.98 & 0.95 & 0.90 & 0.78 & 0.61 & 0.37 & 0.08 & 0.01 & 0.00 \\
            \end{tabular}
        \end{center}
    \end{table}
\end{document}

Что я хочу сделатьdo - это что-то похожее на:

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{collcell}

%The min, mid and max values
\newcommand*{\MinNumber}{0.0}%
\newcommand*{\MidNumber}{0.5} %
\newcommand*{\MaxNumber}{1.0}%

%Apply the gradient macro
\newcommand{\ApplyGradient}[1]{%
        \ifdim #1 pt > \MidNumber pt
            \pgfmathsetmacro{\PercentColor}{max(min(100.0*(#1 - \MidNumber)/(\MaxNumber-\MidNumber),100.0),0.00)} %
            \hspace{-0.33em}\colorbox{green!\PercentColor!yellow}{#1}
        \else
            \pgfmathsetmacro{\PercentColor}{max(min(100.0*(\MidNumber - #1)/(\MidNumber-\MinNumber),100.0),0.00)} %
            \hspace{-0.33em}\colorbox{red!\PercentColor!yellow}{#1}
        \fi
}

\newcolumntype{R}{>{\collectcell\ApplyGradient}c<{\endcollectcell}}
\renewcommand{\arraystretch}{0}
\setlength{\fboxsep}{3mm} % box size
\setlength{\tabcolsep}{0pt}

\begin{document}
    \begin{table}[ht]
\center{{\textbf{\huge SOME TEXT HERE}} \\Lat: -20.34 / Lon: -40.21 \\}
\caption{Some text here...}
\renewcommand{\baselinestretch}{2}
\center

        \begin{center}
            \begin{tabular}{*{10}{R}}
            \hline
            %\rowcolor{Gray}
             \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text} & \textbf{text}
              \textbf{Hs} & 1.00 & 1.00 & 1.00 & 0.99 & 0.98 & 0.96 & 0.90 & 0.82 & 0.37 \\
              \textbf{Tp} & 1.00 & 0.99 & 0.98 & 0.95 & 0.90 & 0.82 & 0.61 & 0.37 & 0.01 \\
              \textbf{Wind Spd.} & 0.99 & 0.98 & 0.96 & 0.90 & 0.82 & 0.67 & 0.37 & 0.14 & 0.00 \\
              \textbf{Wind Dir.} & 0.98 & 0.95 & 0.90 & 0.78 & 0.61 & 0.37 & 0.08 & 0.01 & 0.00 \\
            \end{tabular}
        \end{center}
    \end{table}
\end{document}


Теоретически, единственной разницей было бы включение некоторых ячеек с текстом, а не числами.

Кто-то может мне помочь?Я знаю, может быть, этот вопрос прост для кого-то более опытного, но для начинающего латекса, такого как я, это вызов.

...