尽管使用 tikz 包的 \newcommand 仍未定义控制序列

尽管使用 tikz 包的 \newcommand 仍未定义控制序列

我想创建一个新命令来使用 tikz 绘制某个图表。代码如下:

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand{\D}[4]{
\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,row sep=1.5em,column
    sep=1.5em,minimum width=2em]
          {
            &#1&\\
            #2& &#3\\
            &#4&\\};
           \path[thick]
           (m-1-2) edge (m-2-1)
           edge (m-2-3)
           (m-3-2) edge (m-2-1)
           edge (m-2-3);
\end{tikzpicture}
}
\begin{document}
\D{a}{b}{c}{d}
\end{document}

但我收到了这条消息:

! Undefined control sequence.
<argument> \pgf@matrix@last@nextcell@options 

l.23 \D{a}{b}{c}{d}

我该如何解决?

答案1

正如符号 1 在评论中提到的,这是因为&,但您可以在选项ampersand replacement=\&中使用matrix,并使用\& 而不是&

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand{\D}[4]{
\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,row sep=1.5em,column
    sep=1.5em,minimum width=2em,ampersand replacement=\&]
          {
            \&#1\&\\
            #2\& \&#3\\
            \&#4\&\\};
           \path[thick]
           (m-1-2) edge (m-2-1)
           edge (m-2-3)
           (m-3-2) edge (m-2-1)
           edge (m-2-3);
\end{tikzpicture}
}
\begin{document}
\D{a}{b}{c}{d}
\end{document}

相关内容