如何使用 tikz 注释矩阵

如何使用 tikz 注释矩阵

所以不太确定如何实现这一点,到目前为止,我曾尝试使用 tikznode 来实现这一点,但没有得到我想要的效果,当然,我也不太确定自己在做什么。这是我试图获得的输出:

期望输出

这是我正在使用的基本代码,没有添加任何注释:

\documentclass{article}
\usepackage{amsmath,mathrsfs}
\usepackage[usenames, dvipsnames,svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{intersections, decorations.pathreplacing,shapes,shapes.geometric,hobby,patterns,babel,matrix,calc}
\DeclareMathOperator{\Mat}{Mat}
\begin{document}
$L_{ij}(k) \rightarrow E_{ij}(k) =  \begin{pmatrix}
1 & & & \\
& 1 & & \\
k & & \ddots & \\
& & & 1
\end{pmatrix}$
\end{document}

答案1

这是 答案的变体user121799

除了使用tikzmark,还可以使用。该包提供了类似于经典环境(包 )的nicematrix环境,但它在单元格、行和列下创建 PGF/Tikz 节点。{pNiceMatrix}{pmatrix}amsmath

可以按照user121799他在回答中所做的方式将这些节点与 Tikz 一起使用。

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

$L_{ij}(k) \rightarrow E_{ij}(k) =  
\begin{pNiceMatrix}
  1 & &        & \\
    & 1 &      & \\
  k & & \ddots & \\
    & &        & 1
\CodeAfter
  \begin{tikzpicture}
  \draw[<-] (2) to[out=45,in=180] ([xshift=2.5cm]1-1) 
           node[right,anchor=north west,align=left,yshift=\baselineskip]{some long text\\ and more text};
  \draw[<-,shorten <=3pt] (3-1.west) --++ (-0.4,0) node[left] {text};
  \draw[<-,shorten <=3pt] (3-1.south) --++ (0,-0.8) node[below] {more text};
\end{tikzpicture}
\end{pNiceMatrix}$

\end{document}

由于 PGF/Tikz 节点,您需要进行多次编译。

上述代码的输出

答案2

新版本的tikzmark即将成为标准 TeX 发行版的一部分。它包含一个命令\tikzmarknode,可按如下方式使用:

\documentclass{article}
\usepackage{amsmath,mathrsfs}
\usepackage[usenames, dvipsnames,svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\DeclareMathOperator{\Mat}{Mat}
\begin{document}
$L_{ij}(k) \rightarrow E_{ij}(k) =  \begin{pmatrix}
\tikzmarknode{l1}{1} & & & \\
& \tikzmarknode{l2}{1} & & \\
\tikzmarknode{k}{k} & & \ddots & \\
& & & \tikzmarknode{l3}{1}
\end{pmatrix}$
\begin{tikzpicture}[overlay,remember picture]
\draw[<-] ($(l1.center)!0.5!(l2.center)$) to[out=45,in=180] 
($(l1)+(2.5cm,0)$) node[right,anchor=north west,align=left,yshift=\baselineskip]{some long text\\
and more text};
\draw[<-,shorten <=3pt] (k.west) --++ (-0.4,0) node[left] {text};
\draw[<-,shorten <=3pt] (k.south) --++ (0,-0.8) node[below] {more text};
\end{tikzpicture}
\end{document}

在此处输入图片描述

请注意,您可能必须更新您的 TeX 发行版才能运行此功能(如果您还没有最新版本的tikzmark库)。

相关内容