TikZ-matrix:从两个嵌套的 foreach 循环生成表

TikZ-matrix:从两个嵌套的 foreach 循环生成表

对于以下 MWE,我想知道如何通过两个嵌套的 for 循环来减少代码。

\documentclass[border=10mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix (A) [matrix of nodes,row sep=3mm,column sep=3mm,nodes in empty cells]
{
    $a_{11}$ & $a_{12}$ & $a_{13}$ & $a_{14}$ & $a_{15}$ &  $\dots$ \\
    $a_{21}$ & $a_{22}$ & $a_{23}$ & $a_{24}$ & $a_{25}$ &          \\
    $a_{31}$ & $a_{32}$ & $a_{33}$ & $a_{34}$ & $a_{35}$ &          \\
    $a_{41}$ & $a_{42}$ & $a_{43}$ & $a_{44}$ & $a_{45}$ &          \\
    $a_{51}$ & $a_{52}$ & $a_{53}$ & $a_{54}$ & $a_{55}$ &          \\
    $\vdots$ &          &          &          &          & $\ddots$ \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

这有点棘手,有几种方法可以做到这一点。我正在使用这个,但我并不是说这一定是最好的。

\documentclass[tikz,border=10mm]{standalone}
\usetikzlibrary{matrix}
\usepackage{etoolbox}
\begin{document}
% based on https://tex.stackexchange.com/a/349378/121799
\newcommand*\mytablecontents{}
\foreach \i in {1,...,5}{
  \foreach \j in {1,...,5}{
    \xappto\mytablecontents{$a_{\i\j}$ \&}
  }
  \ifnum\i=1
  \gappto\mytablecontents{$\cdots$}
  \fi
  \gappto\mytablecontents{\\}
}
\begin{tikzpicture}
\matrix (A) [matrix of nodes,row sep=3mm,column sep=3mm,nodes in empty cells,
ampersand replacement=\&]
{
\mytablecontents
$\vdots$ \&          \&          \&          \&          \& $\ddots$ \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容