我喜欢 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}