我想给矩阵的对角线和非对角线元素着色:
我有:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amssymb,amsmath,amsthm,enumitem}
\usepackage[a4paper, total={6in, 8in}]{geometry}
\usepackage{hyperref}
\usepackage{tikz}
\newcommand{\tikzmark}[2]{
\tikz[overlay,remember picture,baseline]
\node[anchor=base] (#1) {$#2$};
}
\begin{document}
\begin{equation}
\begin{pmatrix}
\tikzmark{top}{A_{11}} & A_{12} & A_{13} & \cdots & A_{1n} \\
A_{21} & A_{22} & A_{23} & \cdots & A_{2n} \\
A_{31} & A_{32} & A_{33} & \cdots & A_{3n} \\
\vdots & \vdots & \vdots & \vdots & \vdots \\
A_{n1} & A_{n2} & A_{n3} & \cdots & \tikzmark{bottom}{A_{nn}} \\
\end{pmatrix}
\end{equation}
\begin{tikzpicture}[overlay,remember picture]
\draw[opacity=.5,line width=4mm,] (top.center) -- (bottom.center);
\end{tikzpicture}
\end{document}
最终结果是:
但是,我想让所有变量都变成彩色,而不是从中间开始和结束。我该怎么做?
此致
答案1
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{equation}
\begin{pmatrix}
\tikzmarknode{top}{A_{11}} & A_{12} & A_{13} & \cdots & A_{1n} \\
A_{21} & A_{22} & A_{23} & \cdots & A_{2n} \\
A_{31} & A_{32} & A_{33} & \cdots & A_{3n} \\
\vdots & \vdots & \vdots & \vdots & \vdots \\
A_{n1} & A_{n2} & A_{n3} & \cdots & \tikzmarknode{bottom}{A_{nn}} \\
\end{pmatrix}
\end{equation}
\begin{tikzpicture}[overlay, remember picture]
\draw[red, opacity=.5, line width=5mm, line cap=round] (top.north west) -- (bottom.south east);
\end{tikzpicture}
\end{document}
答案2
您可以为行的开始和结束指定一个锚点:
(top.north west) -- (bottom.south east)
除此之外,您还可以使用 和 移动绘图的开始和结束的位置xshift
:yshift
([xshift=-3pt, yshift=3pt]top.center) -- ([xshift=3pt, yshift=-3pt]bottom.center)
答案3
供参考,以下是您可以使用 执行{pNiceArray}
的操作nicematrix
。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
$\begin{pNiceArray}{cccw{c}{9mm}c}
\CodeBefore
\tikz \draw [red!30,line width=4.5mm]
(1-|1) -- (last-|last) ;
\Body
A_{11} & A_{12} & A_{13} & \cdots & A_{1n} \\
A_{21} & A_{22} & A_{23} & \cdots & A_{2n} \\
A_{31} & A_{32} & A_{33} & \cdots & A_{3n} \\
\vdots & \vdots & \vdots & \vdots & \vdots \\
A_{n1} & A_{n2} & A_{n3} & \cdots & A_{nn} \\
\end{pNiceArray}$
\end{document}
您需要进行多次编译(因为nicematrix
在后台使用了 PGF/Tikz)。