如何创建自定义 Tikz 节点?

如何创建自定义 Tikz 节点?

我不想只改变样式。我想创建接受 3 个数字的节点,并用适当的装饰显示它们。例如:

\mynode{5,6,7} 

应在 3 行内显示包含“a=5”、“b=6”和“c=7”的节点。

更新:

我有这个代码:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{amsmath}

\newcommand{\statnode}[3]{
  \node[rectangle, draw]{
    $\begin{aligned}
      n &= #1 \\ 
      \text{sum} &= #2 \\ 
      \mu &= #3
    \end{aligned}$
  }
}

\newcommand{\statnodex}[3]{
  node[rectangle, draw]{
    $\begin{aligned}
      n &= #1 \\ 
      \text{sum} &= #2 \\ 
      \mu &= #3
    \end{aligned}$
  }
}

\begin{document}

\begin{tikzpicture}[
    level distance=100,
  ]

  \statnode{1}{10}{0.1}
  child {
    \statnodex{1}{10}{0.1}
  };
\end{tikzpicture}
\end{document}

但:

  • 有两个命令太丑了
  • 由于某种原因,渲染不正确

答案1

  • 将两个命令的共同部分放入另一个宏中。
  • anchor=north如果你想把线画到顶部,但不要画得更远,请使用

答案2

TikZ“链”库适合您的应用程序吗?

快速破解您的代码以演示:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\usetikzlibrary{positioning}
\usepackage{amsmath}

\newcommand{\statnode}[3]{
  \node[rectangle, draw, on chain]{
    $\begin{aligned}
      n &= #1 \\ 
      \text{sum} &= #2 \\ 
      \mu &= #3
    \end{aligned}$
  }
}

\newcommand{\statnodex}[3]{
  \node[rectangle, draw, on chain=going below, join]{
    $\begin{aligned}
      n &= #1 \\ 
      \text{sum} &= #2 \\ 
      \mu &= #3
    \end{aligned}$
  }
}

\begin{document}

\begin{tikzpicture}[
    start chain,
    node distance=5mm
  ]

  \statnode{1}{10}{0.1};
  \statnodex{1}{10}{0.1};

\end{tikzpicture}
\end{document}

答案3

如果您更改绘制树的代码,则只能使用其中一个自定义节点宏:

  \draw \statnodex{1}{10}{0.1}
        child {
               \statnodex{1}{10}{0.1}
        };

\node只是 的语法糖\draw node

现在,您可以真正地发挥想象力并定义一个新的多部分节点(请参阅 PGF 手册中的“具有多个文本部分的形状”,即 2.00 版本中的第 39.6 节),但除非您想在许多文档中执行此操作,否则宏似乎没问题。

相关内容