使用 foreach 循环创建二维矩阵

使用 foreach 循环创建二维矩阵

此示例复制自但我希望用 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}

在此处输入图片描述

相关内容