我陷入了此代码中发生的“尺寸太大”问题:
\documentclass{article}
\usepackage{colortbl,dcolumn}
\def\a#1{%
\ifdim#1pt>2000pt\cellcolor{green}\else
\ifdim#1pt<1000pt\cellcolor{red}\else
\cellcolor{yellow}\fi\fi
#1}
\def\b#1{%
\ifdim#1pt>1000000pt\cellcolor{green}\else
\ifdim#1pt<500pt\cellcolor{red}\else
\cellcolor{yellow}\fi\fi
#1}
\begin{document}
\begin{tabular}{|c|c|}
\a{500} & \b{500} \\
\a{1000} & \b{100} \\
\a{300} & \b{1500} \\
\a{150} & \b{600} \\
\end{tabular}
\end{document}
实际上,我想根据每个列中的每个单元格的值来为其着色,当我将范围设置为高于某个阈值时,会出现此错误。我发现 tex 尺寸在某种程度上受到限制,但是有没有其他方法可以实现相同的功能或解决此问题?
答案1
您不能使用大于 16384pt 的尺寸。
以下是基于浮点模块的解决方案expl3
:
\documentclass{article}
\usepackage{colortbl,xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\ca}{m}
{
\manual_cell_colors:nnnnnn { #1 } { 1000 } { 2000 } { red } { yellow } { green }
}
\DeclareExpandableDocumentCommand{\cb}{m}
{
\manual_cell_colors:nnnnnn { #1 } { 500 } { 1000000 } { red } { yellow } { green }
}
\cs_new:Nn \manual_cell_colors:nnnnnn
{
\fp_compare:nTF { #1 > #3 }
{
\cellcolor{#6}
}
{
\fp_compare:nTF { #1 < #2 }
{
\cellcolor{#4}
}
{
\cellcolor{#5}
}
}
#1
}
\ExplSyntaxOff
\begin{document}
\begin{tabular}{|c|c|}
\ca{500} & \cb{500} \\
\ca{1000} & \cb{100} \\
\ca{300} & \cb{1500} \\
\ca{150} & \cb{600} \\
\ca{3000} & \cb{2000000}
\end{tabular}
\end{document}