我有一个很长的 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}