尺寸过大问题

尺寸过大问题

我陷入了此代码中发生的“尺寸太大”问题:

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

在此处输入图片描述

相关内容