Цвет номера в соответствии с его значением в LaTeX - PullRequest
0 голосов
/ 01 сентября 2018

Мне нужно создать таблицу с числовым содержимым, и, основываясь на ее значении, мне нужно, чтобы она автоматически приняла цвет. Например. если X принимает следующие значения:

x < 0; then x will be red
0 <= x < 0.5; then x will be green
0.5 <= x <= 1; then x will be blue

т.е.: если я создаю таблицу со следующим

\documentclass{article}
\begin{document}
\begin{table}[]
\begin{tabular}{ccc}
\hline\\
\textbf{a} & \textbf{b} & \textbf{c} \\
\hline\\
-1   & 0   & 1    \\
0.3  & 0.5 & -1   \\
-0.2 & 0.7   & -0.5 \\
\hline\\
\end{tabular}
\end{table}
\end{document}

тогда вывод должен быть:

enter image description here

но автоматически я знаю, что это можно сделать, программируя с tex, но я не знаю, с чего начать. Пожалуйста, любые предложения приветствуются

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете передать каждую запись ячейки таблицы через макрос (используя collcell) и условие на основе значения (используя xfp):

enter image description here

\documentclass{article}

\usepackage{collcell,xcolor,xfp}

\newcommand{\fmtnum}[1]{%
  \ifnum\fpeval{#1 < 0} = 1
    \textcolor{red}{$#1$}%
  \else
    \ifnum\fpeval{#1 < 0.5} = 1
      \textcolor{green}{$#1$}%
    \else
      \textcolor{blue}{$#1$}%
    \fi
  \fi
}

\begin{document}

\begin{tabular}{ *{3}{>{\collectcell\fmtnum}c<{\endcollectcell}} }
  \hline
  \multicolumn{1}{c}{\bfseries a} & \multicolumn{1}{c}{\bfseries b} & \multicolumn{1}{c}{\bfseries c} \\
  \hline
  -1   & 0   &  1   \\
   0.3 & 0.5 & -1   \\
  -0.2 & 0.7 & -0.5 \\
  \hline
\end{tabular}

\end{document}

Установка заголовков в \multicolumn s позволяет избежать их обработки также \fmtnum.

...