多参数样式在 Tikz 中不起作用

问题描述 投票:0回答:1

我在 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 在我的样式声明中是非法参数号。我不知道如何解决这个问题。据我记得,样式的参数前面是 # 字符,后面是样式定义中的数字,不是吗?

latex tikz pgf
1个回答
0
投票

好吧,我发现了问题。这是正确的语法:

\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}

希望这可以帮助那些可能遇到同样问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.