tikz 节点矩阵的新环境

tikz 节点矩阵的新环境

我正在尝试编写一个新环境,该环境采用矩阵并将其绘制为 tikz 中的节点矩阵。这是一个最小的例子:

\documentclass[a4aper,pagesize]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{matrix}

\newenvironment{diagram}{
    \begin{tikzpicture}
        \matrix (m) [matrix of math nodes]
}{
\end{tikzpicture}
}

\begin{document}
    \begin{diagram}
        {
         A & B & C \\
         D & E & F \\
        };
    \end{diagram}
\end{document}

不过,我希望能够像编写表格一样编写图表环境,并忽略{ ...};环境内部的使用。

我曾尝试使用\begingroup ... \endgroup;,但我认为 tikz 确实需要花括号,而且我不知道如何将它们放在新环境定义中而不弄乱我的语法。

我想另一种选择是使用\newcommand,但这样我就必须使用&符号替换字符,而这也不是我想要的。

这是应该生成的典型图片:在此处输入图片描述

答案1

您可以抓住环境主体但安排&有正确的 catcode。

在此处输入图片描述

\documentclass[a4aper,pagesize]{scrartcl}
%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{matrix}

\NewDocumentEnvironment{diagram}{b}{%
    \begin{tikzpicture}%
     \matrix (m) [matrix of math nodes]{#1};%
     \end{tikzpicture}%
}{}

\AddToHook{env/diagram/begin}{\catcode`\&\active}
\begin{document}
    \begin{diagram}
         AA & B & C \\
         D & E & F \\
    \end{diagram}
\end{document}

以上内容使用当前版本的 LaTeX,如果您有旧版 LaTeX,也可以在软件包中使用类似的功能。这是使用 Overleaf texlive 2017 图像测试的

\documentclass[a4aper,pagesize]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}

\usetikzlibrary{matrix}

\usepackage{environ}
\usepackage{etoolbox}

\NewEnviron{diagram}{%
    \begin{tikzpicture}%
     \matrix (m) [matrix of math nodes]{\BODY};%
     \end{tikzpicture}%
}

\AtBeginEnvironment{diagram}{\catcode`\&\active}
\begin{document}
    \begin{diagram}
         AA & B & C \\
         D & E & F \\
    \end{diagram}
\end{document}

相关内容