Consider this MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of nodes] {
a \\
b \\
c \\
};
\end{tikzpicture}
\end{document}
It might be convenient to fill the matrix with a foreach loop:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of nodes] {
\foreach \c in {a,b,c}{
\c \\
}
};
\end{tikzpicture}
\end{document}
This however fails with the message
! Extra }, or forgotten
\endgroup.
It seems like the ending brace of \foreach
bothers the matrix
node. Can a matrix be populated with \foreach
and how?
Best Answer
\foreach
isn't expandable and the grouping is most likely causing some issues as well. I would recommend to use the loop outside the matrix and accumulate the rows in a macro which then only has to be expanded. Theetoolbox
package provides\gappto
(global append to;\xappto
would cause issues with fragile content) which can be used here. There is also\g@addto@macro
provided by the LaTeX kernel, if you don't want to rely on e-TeX and don't mind to have to use\makeatletter
/\makeatother
.