对于以下 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}