tikz 中的程序矩阵

tikz 中的程序矩阵

有没有办法以程序方式而不是手动方式排版 tikz 矩阵?例如,这是一个 4x4 单位矩阵的 MWE:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
    \matrix[matrix of nodes] {
        1 & 0 & 0 & 0\\
        0 & 1 & 0 & 0\\
        0 & 0 & 1 & 0\\
        0 & 0 & 0 & 1\\
    };
\end{tikzpicture}
\end{document}

我想要做的是创建一个宏/命令,它将自动生成这个,但适用于任何尺寸n。上面的情况当然适用于n=4

这可能吗?我考虑过使用physics包的\imat命令,但这会出现以下错误:

! Undefined control sequence.
<argument> \pgf@matrix@last@nextcell@options

l.9                     \imat{4}

?
! Emergency stop.

答案1

也许你会感兴趣nicematrix。此环境提供了一个命令\pAutoNiceMatrix来构建矩阵,矩阵的每个单元下都有一个 Tikz 节点(但是,这些矩阵是不是数组tikz-matrix)。

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

\begin{document}

\NewDocumentCommand{\Identity}{O{}m}
{\pAutoNiceMatrix[#1]{#2-#2}{\ifthenelse{\arabic{iRow}=\arabic{jCol}}{1}{0}}}

\bigskip
$\Identity{3}$

\bigskip
$\Identity[name=A]{4}$

\begin{tikzpicture}[overlay, remember picture]
  \draw (A-2-2) circle (5pt) ; 
\end{tikzpicture}

\end{document}

上述代码的输出

相关内容