
Tengo una matriz que se muestra a continuación. Me gustaría tener toda la fila en verde en lugar de solo las celdas.
¿Cómo puedo hacer eso?
\begin{equation}\label{eq:appendrow}
\newcommand\x{\times}
\newcommand\y{\colorbox{mygreen}{$1$}}
\left(\begin{array}{cccc}
\x & \x & \x & \x \\
0 & \x & \x & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
\y & \y & \y & \y \\
\end{array}\right)
\end{equation}
La salida es:
Respuesta1
Puedes usar \rowcolor
, \columncolor
y \cellcolor
desde el colortbl
paquete, cargado en mi ejemplo a través del xcolor
paquete:
\documentclass{article}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\newcommand\x{\times}
\newcommand\y{\cellcolor{green!10}}
\begin{document}
\begin{equation}\label{eq:appendrow}
\left(\begin{array}{cccc}
\rowcolor{red!20}
\x & \x & \x & \x \\
0 & \x & \x & \x \\
\rowcolor{blue!20}
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
\y a & b & \y c & d\\
\end{array}\right)
\end{equation}
\begin{equation}
\left(\begin{array}{>{\columncolor{olive!20}}cc>{\columncolor{yellow!20}}cc}
\x & \x & \x & \x \\
0 & \x & \x & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
a & b & c & d \\
\end{array}\right)
\end{equation}
\end{document}
Respuesta2
Otro enfoque podría ser utilizar elhf-tikz
paquete.
Ejemplo:
\documentclass{article}
\usepackage{amsmath}
\newcommand\x{\times}
% requires version 0.3 of the package
\usepackage[customcolors]{hf-tikz}
\tikzset{style green/.style={
set fill color=green!50!lime!60,
set border color=white,
},
style cyan/.style={
set fill color=cyan!90!blue!60,
set border color=white,
},
style orange/.style={
set fill color=orange!80!red!60,
set border color=white,
},
hor/.style={
above left offset={-0.15,0.31},
below right offset={0.15,-0.125},
#1
},
ver/.style={
above left offset={-0.1,0.3},
below right offset={0.15,-0.15},
#1
}
}
\begin{document}
\begin{equation}\label{eq:appendrow}
\left(\begin{array}{cccc}
\x & \x & \x & \x \\
0 & \tikzmarkin[hor=style orange]{el} \x & \x\tikzmarkend{el} & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
\tikzmarkin[hor=style green]{row} a & b & c & d \tikzmarkend{row}\\
\end{array}\right)
\end{equation}
\begin{equation}\label{eq:appendcol}
\left(\begin{array}{cccc}
\tikzmarkin[ver=style cyan]{col 1}\x & \x & \tikzmarkin[ver=style green]{col 2} \x & \x \\
0 & \x & \x & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
a \tikzmarkend{col 1} & b & c \tikzmarkend{col 2} & d \\
\end{array}\right)
\end{equation}
\end{document}
Resultado:
Respuesta3
Dentro {pNiceMatrix}
de nicematrix
, tiene un comando \Block
que puede usarse para resaltar una parte de la matriz.
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$\begin{pNiceMatrix}[margin]
a & b & c & d \\
\Block[fill=red!15,rounded-corners]{1-4}{}
a & b & c & d \\
a & b & c & d \\
a & b & \Block[draw,fill=blue!15,rounded-corners]{2-2}{}
c & d \\
a & b & c & d \\
\end{pNiceMatrix}$
\end{document}
Necesita varias compilaciones (porque nicematrix
utiliza nodos PGF/Tikz bajo el capó).
Respuesta4
Si el borde redondeado de las barras no es esencial, entonces una alternativa aCarLaTeXLa respuesta, que se utiliza como base para preparar la mía, es:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{matrix}
\newcommand\x{\times}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of math nodes,
nodes={rectangle, %draw, very thin,
minimum size=1.2em, text depth=0.25ex,
inner sep=0pt, outer sep=0pt,
fill opacity=0.5, text opacity=1,
anchor=center},
column sep=-0.5\pgflinewidth,
row sep=-0.5\pgflinewidth,
column 2/.append style = {nodes={fill=cyan!50}},
row 2/.append style = {nodes={fill=cyan!50}},
row 2 column 2/.append style={nodes={fill=cyan}},
inner sep=0pt,
left delimiter=(, right delimiter=),
]
{
a_1 & \x & a_3 \\
a_4 & \x & a_6 \\
a_7 & \x & a_9 \\
};
\end{tikzpicture}
\end{document}
(bueno, la matriz no es original sino de algunos de mis experimentos), lo que da:
apéndice:
La respuesta anterior contiene algunas suposiciones erróneas: (i) cómo funciona la transparencia (a nivel de nodos no tiene ningún sentido, por lo que es mejor no usarla de esa manera); (ii) la transparencia tuvo que resolverse en la definición del estilo de la fila 2 y la columna (ver mwe a continuación); (iii) los nodos con solo relleno no deben superponerse entre sí para el ancho de las líneas de borde, por lo que sep=-0.5\pgflinewidth, row sep=-0.5\pgflinewidth
tuvieron que eliminarse; (iv) de la comparación de la definición de nodos enCarLaTeXLa respuesta y la mía recientemente observo una diferencia importante: nodes={text width=.75em, text height=1.75ex, text depth=.5ex, align=center}
pero trato de usarla en el formulario nodes={minimum size=1.75ex, text depth=.5ex, align=center}
donde align=center
causa el error (eliminarla elimina el error).
Para comparar, dejé el primer mwe arriba como está. el corregido es:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{matrix}
\newcommand\x{\times}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of math nodes,
nodes={rectangle,
minimum size=1.5em, text depth=0.25ex,
inner sep=0pt, outer sep=0pt,
anchor=center},
row 2/.append style = {nodes={preaction={fill=cyan!30}}},
column 2/.append style = {nodes={fill=red!60},fill opacity=0.5, text opacity=1},
inner sep=0pt,
left delimiter=(, right delimiter=),
]
{
a_1 & \x & a_3 \\
a_4 & \x & a_6 \\
a_7 & \x & a_9 \\
};
\end{tikzpicture}
\end{document}
lo que da: