LaTeX 表:单元格值颜色基于其符号/条件单元格颜色

LaTeX 表:单元格值颜色基于其符号/条件单元格颜色

我有一个很长的 LaTeX 文档,其中包含许多表格。现在我想用红色显示单元格中的负值。我想知道如何全局执行。我的 MWE 如下:

\documentclass{article}

\begin{document}

\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  -4 & 5 & 6 \\
  7 & 8 & -9 \\
\end{tabular}

\end{document}

已编辑

感谢所有提供答案的人。从提供的答案来看,似乎我必须在所有包含负值的表格中进行编辑,并且没有自动解决方案。但我仍然会保留这个问题以获得更好的解决方案。再澄清一下,我需要红色的负值,而不是它们的背景。谢谢

答案1

可以在您的文档中工作。但这有点过分,可能会破坏某些内容。

彩色细胞

\documentclass{article}
\usepackage{color}
\usepackage{etoolbox}

\begingroup
\lccode`~`-
\lowercase{%
\endgroup\pretocmd{\tabular}{\catcode`~\active\def~{\color{red}-}}{}{}}

\begin{document}
Not colored here: -12, But colored within the tabular
\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  -4 & 5 & 6 \\
  7 & 8 & -9 \\
\end{tabular}
and again not colored here: -12.

\end{document}

答案2

如果您的矩阵只有数字条目,您可以这样做collcell

\documentclass{article}
\usepackage{collcell}
\usepackage[table]{xcolor}

\newcommand{\checkvalue}[1]{\ifnum#1<0 \cellcolor{red}\fi#1}

\newcolumntype{L}{>{\collectcell\checkvalue}l<{\endcollectcell}}
\newcolumntype{C}{>{\collectcell\checkvalue}c<{\endcollectcell}}
\newcolumntype{R}{>{\collectcell\checkvalue}r<{\endcollectcell}}

\begin{document}
\[
\begin{array}{ L C R }
   1 &  2 &  3 \\
  -4 &  5 &  6 \\
   7 &  8 & -9 \\
   2 & -7 &  0
\end{array}
\]
\end{document}

在此处输入图片描述

答案3

这个答案扩展了 dcmst 的回答。它定义了新的列类型L,,C用于R检查第一个标记是否为,-并在这种情况下设置\cellcolor{red}。因此,不需要更改表格单元格,只需将列规范从小写字母更改为大写字母即可。

例子:

\documentclass{article}
\usepackage{array}
\usepackage{colortbl}

\makeatletter
\newcommand*{\minuscellcolor}{}
\def\minuscellcolor\ignorespaces{%
  % \ignorespaces not really needed, because \@ifnextchar gobbles spaces
  \@ifnextchar-{\cellcolor{red}}{}%
}
\newcolumntype{L}{>{\minuscellcolor}l}
\newcolumntype{C}{>{\minuscellcolor}c}
\newcolumntype{R}{>{\minuscellcolor}r}
\makeatother

\begin{document}
\begin{tabular}{ L C R }
  1       & 2 & 3       \\
  -4 & 5 & 6       \\
  7       & 8 & -9 \\
  2 & -7 & 0 \\
\end{tabular}

\end{document}

结果

答案4

您可以定义一个\minus命令,将单元格颜色设置为红色,并添加“-”符号,然后使用搜索和替换将所有“-”替换为“\minus”。

像这样:

\documentclass{article}
\usepackage{colortbl}
\newcommand{\minus}{\cellcolor{red}-}

\begin{document}    
\begin{tabular}{ l c r }
  1       & 2 & 3       \\
  \minus4 & 5 & 6       \\
  7       & 8 & \minus9 \\
\end{tabular}

\end{document}

在此处输入图片描述

相关内容