此示例复制自这但我希望用 foreach 循环创建一个二维矩阵\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{etoolbox}
\begin{document}
\begin{tikzpicture}
\let\desc\empty
\foreach \x/\y in {a/b,b/c,c/d}{%
\xappto\desc{\expandonce{\x \\}}
%\xappto\desc{\expandonce{\x & \y \\}}
}
\matrix [matrix of nodes] {
\desc
};
\end{tikzpicture}
\end{document}
但如果我打开注释行而不是一维版本,编译将失败!
我应该如何修改这个例子来支持用 foreach 循环创建二维矩阵?
答案1
我或多或少是在抄袭这个答案这里。重要的一点是使用ampersand replacement
。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\usepackage{etoolbox}
\begin{document}
\begin{tikzpicture}
\let\desc\empty
\foreach \x/\y in {a/b,b/c,c/d}{%
\xappto\desc{\x \& \y\\}%
}%
\matrix [matrix of nodes,ampersand replacement=\&] {
\desc
};
\end{tikzpicture}
\end{document}
附录:我希望这个问题是关于\foreach
在矩阵中使用。如果你只想得到输出,你当然可以这样做
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes]{a&b\\ c&d\\ e&f\\};
\end{tikzpicture}
\end{document}
最短为史蒂文的回答但还有额外的可能性,可以添加各种 pgf 键,以获得类似
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes,column sep=0pt,row sep=0pt,
cells={nodes={top color=blue,bottom color=red,text=white,
minimum size=1.8em,anchor=center}}]{a&b\\ c&d\\ e&f\\};
\end{tikzpicture}
\end{document}
答案2
只要堆叠的 TAB 和 EOL 都不是/
斜线字符,简单的 TABstack 就可以直接执行此操作。
\documentclass{standalone}
\usepackage{tabstackengine}
\begin{document}
\setstackTAB{?}%
\setstackEOL{,}%
\setstacktabbedgap{1ex}%
\Matrixstack{a?b,b?c,c?d}
\end{document}
如果您希望它以文本模式而非数学模式使用,只需将其更改\Matrixstack{a?b,b?c,c?d}
为\tabbedCenterstack{a?b,b?c,c?d}
。