如何突出显示矩阵中的单个元素?

如何突出显示矩阵中的单个元素?

我正在尝试写出矩阵 A 的 LU 分解。除了最后一列之外,我能够突出显示元素低于主元列的元素。有人知道如何以相同的格式突出显示最后一个元素 2 吗?或者您有其他方法可以做到这一点的建议吗?

这就是我正在尝试做的事情。

 \documentclass[12pt,letterpaper]{report}


\usepackage{amsmath}
\usepackage{color}
\usepackage{arydshln}
\usepackage{tikz}
\usetikzlibrary{arrows,matrix,positioning}
\usetikzlibrary{fit}
\tikzset{%
 highlight/.style={rectangle,rounded corners,fill=blue!30,draw,
 fill opacity=0.2,thick,inner sep=0pt}
 }
\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,
 baseline=(#1.base)] \node (#1) {#2};}
 %
\newcommand{\Highlight}[1][submatrix]{%
\tikz[overlay,remember picture]{
\node[highlight,fit=(left.north west) (right.south east)] (#1) {};}
}



\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{%
\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\array{#1}}
\makeatother

\begin{document}


\begin{align*}
A =
\left[ 
\begin{array} {*4{c}}
 \tikzmark{left}{2}& 1 & -1 & 4 \\ 
-4 & -3 & 6 & -3 \\ 
2 & -3 & 20 & 23 \\
 \tikzmark{right}{4} & 2 & 13 & 7
\end{array}
\right] 
\Highlight[first]
\sim 
\begin{matrix} 
\\ 
\mbox{$R_2+2R_1$} \\ 
\mbox{$R_3-R_1$} \\
\mbox{$R_4-2R_2$}
\end{matrix}
&\left[ 
2 & 1 & -1 & 4 \\ 
0 & \tikzmark{left}{-1} & 4 & 5 \\ 
0 & -4 & 21 & 19 \\
0 & \tikzmark{right}{0} & 15 & -1
\end{matrix}
\right]
\Highlight[first] \\
\sim
\begin{matrix} 
\\ 
\\ 
\mbox{$R_3-4R_2$} \\
\mbox{ }
\end{matrix}
&\left[ 
\begin{matrix} 
2 & 1 & -1 & 4 \\ 
0 & -1 & 4 & 5 \\ 
0 & 0 & \tikzmark{left}{5} & -1 \\
0 & 0 & \tikzmark{right}{15} & -1
\end{matrix}
\right]
\Highlight[first]\\
\sim
\begin{matrix} 
\\ 
\\ 
\\
\mbox{$R_4-3R_3$}
\end{matrix}
&\left[ 
\begin{matrix} 
2 & 1 & -1 & 4 \\ 
0 & -1 & 4 & 5 \\ 
0 & 0 & 5 & -1 \\
0 & 0 & 0 & 2
\end{matrix}
\right]
=U
\end{align*}



\end{document}

我需要最后一个元素 2 像其他数据透视表列一样突出显示。

我是新用户,所以不允许发布图片,但我希望有人可以帮助解决这个问题。

答案1

更新

\documentclass{article}
\usepackage{tikz,amsmath}

\begin{document}​  
\newcommand\hlight[1]{\tikz[overlay, remember picture,baseline=-\the\dimexpr\fontdimen22\textfont2\relax]\node[rectangle,fill=blue!50,rounded corners,fill opacity = 0.2,draw,thick,text opacity =1] {$#1$};} 

\begin{equation*}
  \begin{pmatrix}
           c &  -a    &   0    & \dots  & \dots  & \dots  &  0 \\
          -b &   \hlight{a}   &  -a    & \ddots &        &        & \vdots \\
           0 &  -b    &   c    & \ddots & \ddots &        & \vdots \\
      \vdots & \ddots & \ddots & \ddots & \ddots & \ddots & \vdots \\
      \vdots &        & \ddots & \ddots &   c    &  -a    &  0 \\
      \vdots &        &        & \ddots &  -b    &   c    & -a \\
           0 & \dots  & \dots  & \dots  &   0    &  -b    &  c
  \end{pmatrix}
\end{equation*}  
\end{document}​

在此处输入图片描述

答案2

这里有一个tikz-免费版本使用xcolor这应该可以帮助你开始:

在此处输入图片描述

\documentclass[12pt,letterpaper]{report}

%\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\newcommand{\highlight}[1]{%
  \ooalign{\hss\makebox[0pt]{\fcolorbox{green!30}{red!40}{$#1$}}\hss\cr\phantom{$#1$}}%
}

\begin{document}

\[
  A = \left[\begin{array} {*4{c}}
    \highlight{2} &  1 & -1 &  4 \\ 
   -4 & -3 &  6 & -3 \\ 
    2 & \highlight{-3} & 20 & 23 \\
    4 &  2 & \highlight{13} &  7
  \end{array}\right] 
\]

\end{document}​

有关快速课程\ooalign,请参阅\subseteq+\circ作为单个符号(“开子集”)当然,其他改进,如颜色选择(比如,通过可选参数)都是可能的。

答案3

这是另一个基于 TikZ 的仅适用于矩阵的解决方案。

基本上,使用 TikZ 的属性matrices,可以选择单个元素,然后通过库突出显示该元素background。使用这种方法,您不必在矩阵内放置标记,但必须将代码放在环境内以突出显示元素。pgfonlayer请注意,矩阵在数学环境中垂直对齐,这要归功于[baseline=-\the\dimexpr\fontdimen22\textfont2\relax ](请参阅在对齐或聚集环境中使用 tikzpicture 矩阵)。

\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{calc,matrix,backgrounds}
\pgfdeclarelayer{myback}
\pgfsetlayers{myback,background,main}

\tikzset{mycolor/.style = {rounded corners,line width=1bp,color=#1}}%
\tikzset{myfillcolor/.style = {rounded corners,draw,fill=#1}}%

\NewDocumentCommand{\highlight}{O{blue!40} m m}{%
\draw[mycolor=#1] (#2.north west)rectangle (#3.south east);
}

\NewDocumentCommand{\fhighlight}{O{blue!40} m m}{%
\draw[myfillcolor=#1] (#2.north west)rectangle (#3.south east);
}    

\begin{document}

\[P=
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax ]
\matrix (m)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
2 & 1 & -1 & 4 \\ 
0 & -1 & 4 & 5 \\ 
0 & 0 & 5 & -1 \\
0 & 0 & 15 & -1\\
};
\begin{pgfonlayer}{myback}
\highlight{m-2-2}{m-2-2}
\fhighlight{m-3-3}{m-3-3}
\fhighlight[orange]{m-4-4}{m-4-4}
\end{pgfonlayer}
\end{tikzpicture}
\]
\end{document}

结果:

在此处输入图片描述

fit再次使用该库,可以使用背景层来实现相同的结果。

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,matrix,backgrounds,fit}
\pgfdeclarelayer{myback}
\pgfsetlayers{myback,background,main}

\begin{document}

\[P=
\begin{tikzpicture}[baseline=-\the\dimexpr\fontdimen22\textfont2\relax ]
\matrix (m)[matrix of math nodes,left delimiter=(,right delimiter=)]
{
2 & 1 & -1 & 4 \\ 
0 & -1 & 4 & 5 \\ 
0 & 0 & 5 & -1 \\
0 & 0 & 15 & -1\\
};
\begin{pgfonlayer}{myback}
\node[fit=(m-2-2),rounded corners,draw=blue,scale=0.6]{};
\node[fit=(m-3-3),rounded corners,draw,fill=blue!40,scale=0.6]{};
\node[fit=(m-4-4),rounded corners,draw,fill=orange,scale=0.6]{};
\end{pgfonlayer}
\end{tikzpicture}
\]
\end{document} 

答案4

这是一个{pNiceMatrix}使用 的解决方案nicematrix

 \documentclass{article}
 \usepackage{nicematrix}

 \begin{document}

 \newcommand\focus[2]{\Block[draw,fill=#1,rounded-corners]{}{#2}}

 $\begin{pNiceMatrix}[margin]
 p & q & r \\
 \focus{red!15}{p} & q & r \\
 p & \focus{blue!15}{q} & r \\
 \end{pNiceMatrix}$

 \end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容