我在 Tikz 中有以下代码
\documentclass[tikz,border=10pt]{standalone}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{float}
\usepackage{enumitem}
\usepackage{pifont}
\usepackage{hyperref}
\usepackage{tikz}
\usepackage{tikzpeople}
\usepackage{pgfplots}
\usepackage{graphicx}
\usepackage{smartdiagram}
\usetikzlibrary{arrows}
\usetikzlibrary{shapes}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{quotes}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\begin{document}
\sffamily
\tikzset {
mystyle/.style = {
text = white,
shape = #1,
ball color = #2
}
}
\begin{tikzpicture}
\node[mystyle = {ellipse, green}]
at (3, 4) (node1) {This is my node};
\end{tikzpicture}
\end{document}
但是当我运行这个时,我收到一条错误消息,指示 2 在我的样式声明中是非法参数号。我不知道如何解决这个问题。据我记得,样式的参数前面是 # 字符,后面是样式定义中的数字,不是吗?
好吧,我发现了问题。这是正确的语法:
\tikzset {
mystyle/.style 2 args = {
text = white,
shape = #1,
ball color = #2
}
}
\begin{tikzpicture}
\node[mystyle = {ellipse}{green}]
at (3, 4) (node1) {This is my node};
\end{tikzppicture}
显然,有一个更通用的语法:
对于带有 n 个参数的 for 样式(n >= 1 且 n <= 9) you write :
\tikzset { StyleName/.style n args = {n}
{ <... Your n arguments go here ...> } }
因此,如果我们想用 4 个参数重写上面相同的示例,那么我们可以这样进行:
\tikzset {
mystyle/.style n args = {4}{
font = #1,
text = #2,
shape = #3,
ball color = #4
}
}
\begin{tikzpicture}
\node[mystyle = {\sffamily\bfseries}{blue}{ellipse}{green}]
at (3, 4) (node1) {This is my node};
\end{tikzpicture}
希望这可以帮助那些可能遇到同样问题的人。