TikZ 节点新命令:传递颜色作为参数

TikZ 节点新命令:传递颜色作为参数

我需要创建一排圆圈(彩色标记),后面跟着一些文字。参见下图。

在此处输入图片描述

我使用以下代码实现了这一点。

\begin{tikzpicture}[scale=2]
\matrix[nodes={minimum width=0.05cm, minimum height=0.05cm},
 row sep=0.001cm, column sep=0.1cm] {
 \node[circle, fill=red ] {}; & 
 \node[circle, fill=blue ] {}; & 
 \node[circle, fill=green ] {}; & 
 \node[circle, fill=orange ] {}; & 
 \node[circle, fill=pink ] {}; & 
 \node[draw=none, fill=none, text width=4cm]{Some Text};\\}; 
\end{tikzpicture}

由于我需要重复产生此输出,因此我想用上面的代码定义一个新命令。这是我定义的命令。

\newcommand{\MarkersAndText}{6}{
\begin{tikzpicture}[scale=2]
    \matrix[nodes={minimum width=0.05cm, minimum height=0.05cm},
        row sep=0.001cm, column sep=0.1cm] {
    \node[circle, fill=#1] {}; &  
    \node[circle, fill=#2] {}; &  
    \node[circle, fill=#3] {}; & 
    \node[circle, fill=#4] {}; & 
    \node[circle, fill=#5] {}; & 
    \node[draw=none, fill=none, text width=4cm]{#6};\\}; 
\end{tikzpicture}

但是,我收到以下错误,

Illegal parameter number in definition of \tikz@temp. <to be read again> 1 l.19 \node[circle, fill=#1] {}; & 

有人能帮助我了解如何解决这个问题吗?

编辑:David Carlisle 的答案解决了上述错误。当我使用命令时,编译会产生另一个错误\MarkersAndText。新的错误是,

Package pgf Error: Single ampersand used with wrong catcode

通过将代码块更改为以下内容可以修复该错误,

\matrix[nodes={minimum width=0.05cm, minimum height=0.05cm}, row sep=0.001cm, column sep=0.1cm, ampersand replacement=\&] { \node[circle, fill=#1] {}; \&

我很好奇为什么没有&符号替换的代码在外面时可以起作用\newcommand

答案1

\newcommand{\MarkersAndText}{6}

应该

\newcommand{\MarkersAndText}[6]

因为你定义的\MarkersAndText6

相关内容