在 TiKZ 图片中定义宏时出现错误

在 TiKZ 图片中定义宏时出现错误

我喜欢 Ti 中的某种顶点样式Z 绘图,所以我想定义一个宏来节省格式化时间。它有两个参数,一个命名节点,另一个是其位置。它应该有一个空白标签。这是我的代码摘录:

\newcommand{\vertex}[2]{\node[circle, inner sep = 2pt, draw=black, fill=black] (#1) at #2 {}}

\begin{tikzpicture}

% Placing nodes in upper partition
\foreach \cnt in {1,...,5}
    \vertex{\cnt, (\cnt,0)};

\end{tikzpicture}

当我尝试编译它时,我得到:

Package tikz Error: A node must have a (possibly empty) label text.

标签就在那里,所以我不知道如何解决这个问题。

答案1

\vertex定义为参数。但在\foreach循环内部,它只被赋予一个参数。相反,它应该这样调用\vertex{\cnt}{(\cnt, 0)}

\documentclass{article}
\usepackage{tikz}

\begin{document}
\newcommand*{\vertex}[2]{%
  \node[
    circle,
    inner sep = 2pt,
    draw=black,
    fill=black
  ]
    (#1) at #2 {}%
}

\begin{tikzpicture}

  % Placing nodes in upper partition
  \foreach \cnt in {1,...,5}
    \vertex{\cnt}{(\cnt,0)};

\end{tikzpicture}
\end{document}

结果

答案2

你让生活变得复杂了。tikz有通过 定义样式的工具\tikzset。因此,定义样式并使用它。无需宏。

\documentclass{article}
\usepackage{tikz}

\tikzset{vertex/.style={
    circle,
    inner sep = 2pt,
    draw=black,
    fill=black
  }
}

\begin{document}
\begin{tikzpicture}
  \foreach \cnt in {1,...,5}{
    \node[vertex] (\cnt) at (\cnt,0) {};
    }
\end{tikzpicture}
\end{document}

相关内容