我有以下最小工作示例:
\documentclass{article}
\begin{document}
\begin{table}[!ht]
\centering
\begin{tabular}{|c|c|}
\hline a & b & c \\
\hline
0.1 & 9 \\
\hline
0.5 & 4 \\
\hline
0.9 & 12 \\
\hline
\end{tabular}
\end{table}
\end{document}
现在我希望根据值的大小来为单元格着色;我找到了这方面的例子,但我希望每一列的颜色都不同;
假设对于 a 列,我有值 0.1、0.5 和 0.9 - 假设值越大越好 - 那么我希望 0.1 的单元格颜色为柔和的红色,0.5 为柔和的橙色,0.9 为柔和的绿色;
另一方面,对于 b 列,值可能越小越好,因此 12 应该是柔和的红色,而 4 应该是柔和的绿色;
我怎能这样做?
在听了 Werner 的非常有用的评论之后,我需要添加一条额外信息:每列数字的具体范围当然是手动的,例如,我知道在 a 列中,值在区间 [0,1] 内,值越大越好;在 b 列中,值在区间 [0,20] 内,值越小越好;
我的目标是根据我提供的信息 - Latex 自动为单元格分别着色
答案1
这里有一个解决方案collcell
。我使用过,nicematrix
因为你使用了彩色单元格和规则:使用 的工具nicematrix
,你将在 PDF 查看器中获得更好的效果(在某些缩放级别下,规则在某些 PDF 查看器中似乎不会消失)。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{collcell}
\begin{document}
\ExplSyntaxOn
\newcolumntype { A } { > { \collectcell \MyColumnA } c < { \endcollectcell } }
\NewDocumentCommand \MyColumnA { m }
{
\int_compare:nT { \int_use:c { c@iRow } > 1 }
{
\fp_set:Nn \l_tmpa_fp { #1 * 100 }
\exp_args:Nx \cellcolor {red \exp_not:N ! \fp_use:N \l_tmpa_fp }
}
#1
}
\newcolumntype { B } { > { \collectcell \MyColumnB } c < { \endcollectcell } }
\NewDocumentCommand \MyColumnB { m }
{
\int_compare:nT { \int_use:c { c@iRow } > 1 }
{
\fp_set:Nn \l_tmpa_fp { 100 - ( #1 * 100 ) }
\exp_args:Nx \cellcolor {blue \exp_not:N ! \fp_use:N \l_tmpa_fp }
}
#1
}
\ExplSyntaxOff
\begin{table}
\centering
\begin{NiceTabular}{ABA}[hvlines,colortbl-like]
X & Y & Z \\
0.3 & 0.35 & 0.5 \\
0.6 & 0.7 & 0.1 \\
0 & 0.3 & 0.35 \\
0.1 & 0.5 & 0.15
\end{NiceTabular}
\end{table}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。