我需要创建一排圆圈(彩色标记),后面跟着一些文字。参见下图。
我使用以下代码实现了这一点。
\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]
因为你定义的\MarkersAndText
是6