我正在尝试写出矩阵 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 节点)。