以较浅的颜色打印稀疏矩阵中的零

以较浅的颜色打印稀疏矩阵中的零

对于报告,我需要将一些稀疏矩阵打印为完整矩阵,这意味着有很多零。如果我用与有意义的条目相同的颜色打印它们,它看起来就不太有条理。而且当我根本不打印零时,它看起来也不太好。所以我想用更浅的颜色打印零。

当然,我可以定义一种颜色(例如 \definecolor{lightgrey}{RGB}{200,200,200},然后为每个 0 写入 \textcolor{lightgrey}{0}。但这不是很有效。也可以定义一个新命令,最好使用简短的名称,只插入灰色的 0。但我想知道,是否有其他更简洁的方法来实现这一点?

对于相对较小的矩阵,MWE:

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\begin{document}

\begin{align}
\left(\begin{array}{ccccccccc} 
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 
0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 
0 & \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 & 0\\ 
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\ 
0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0\\ 
0 & 0 & 0 & 0 & \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0\\ 
0 & 0 & 0 & \frac{1}{2} & 0 & 0 & \frac{1}{2} & 0 & 0\\ 
0 & 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & \frac{1}{2} & 0\\ 
0 & 0 & 0 & 0 & \frac{1}{4} & \frac{1}{4} & 0 & \frac{1}{4} & \frac{1}{4} 
\end{array}\right)
\end{align}

\end{document}

答案1

我基本上输入了太多带有大量数字等的矩阵,因此对我来说使用 TikZ 来做这件事是很自然的,但可以理解的是,你可能不想使用它。但是,matrix库中有一个特定选项,你可以决定当特定条目为空时要做什么。这是一个例子

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

I like lower triangular matrices so does Gauss while eliminating.
\[
\begin{tikzpicture}[baseline=(current bounding box.center)]% To center the matrix in the equation
\matrix[matrix of math nodes,execute at empty cell={\node[black!20]{0};},%Node color and text "0"
        every left delimiter/.style={xshift=1ex},%tighter delimiter spacing
        every right delimiter/.style={xshift=-1ex},
                left delimiter={(},right delimiter={)}
                ] {
1 &  &  &  &  &  &  &  & \\ 
 & 1 &  &  &  &  &  &  & \\ 
 & \frac{1}{2} & \frac{1}{2} &  &  &  &  &  & \\ 
 &  &  & 1 &  &  &  &  & \\ 
 &  &  &  & 1 &  &  &  & \\ 
 &  &  &  & \frac{1}{2} & \frac{1}{2} &  &  &\\ 
 &  &  & \frac{1}{2} &  &  & \frac{1}{2} &  & \\ 
 &  &  &  & \frac{1}{2} &  &  & \frac{1}{2} & \\ 
 &  &  &  & \frac{1}{4} & \frac{1}{4} &  & \frac{1}{4} & \frac{1}{4} \\
};
\end{tikzpicture}
\]
\end{document}

在此处输入图片描述

答案2

如果您想避免重新编码您的文档,那么您可以使用array包来改变颜色:

在此处输入图片描述

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{color,array}
\def\zerotest{0}
\newcommand\greytest[2]{%
  \def\test{#2}%
  \ifx\test\zerotest
     \def\next{\textcolor[gray]{0.7}{0}}%
  \else
     \def\next{#1#2}%
  \fi
  \next}

\begin{document}

\begin{align}
\left(\begin{array}{*{9}{>{\greytest}c}} 
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 
0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 
0 & \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 & 0\\ 
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\ 
0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0\\ 
0 & 0 & 0 & 0 & \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0\\ 
0 & 0 & 0 & \frac{1}{2} & 0 & 0 & \frac{1}{2} & 0 & 0\\ 
0 & 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & \frac{1}{2} & 0\\ 
0 & 0 & 0 & 0 & \frac{1}{4} & \frac{1}{4} & 0 & \frac{1}{4} & \frac{1}{4} 
\end{array}\right)
\end{align}

\end{document}

相关内容