如何使自定义节点集包含 Tikz 上树包中的一些节点

如何使自定义节点集包含 Tikz 上树包中的一些节点

请告诉我如何使用\tikzset或制作由一些节点组成的自定义节点集\tikzstyle

在下面的代码中,我想将node第 (1)-(3) 行设置为由 设置的自定义节点\tikzset。在 Tikz 树包中,问题在于很难将节点命令一起设置为\tikzset。因为节点描述在不同的位置。例如,第 (2) 行距离第 (3) 行有 4 行。

\documentclass{article}
\usepackage[dvipdfmx]{graphicx,xcolor}
\usepackage{tikz}
\usetikzlibrary{trees} 
\usetikzlibrary{positioning}

\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
  \begin{tikzpicture}[%
grow via three points={one child at (0.6,-0.7) % 
    and two children at (0.5,-0.7) and (0.5,-0.5)},%
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node {Root}
  child {
  node (child1){Child1} % (1)
  child { node {Child2}
      child { node {Child3}
    }
    }
  node[right=3mm of child1,draw=orange]{msglabel!} %(2)
  node[right=24mm of child1,draw=purple]{msglabel2!} % (3)
};
\end{tikzpicture}  
\end{document}

答案1

欢迎来到 TeX.SE。我不确定这是否是您要找的内容,但您可以这样做:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees, positioning}

\newcommand{\foobar}[3]{#1 #3 #2}

\begin{document}

\begin{tikzpicture}[
  every node/.style={draw=black, thick, anchor=west},
  grow via three points={one child at (0.6,-0.7)
                         and two children at (0.5,-0.7) and (0.5,-0.5)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}
  ]
  \node {Root}
    child {
      \foobar
        { node (child1) {Child1} } % (1)
        {
          node[right=3mm of child1, draw=orange]{msglabel!}   %(2)
          node[right=24mm of child1, draw=purple]{msglabel2!} % (3)
        }
        {
          child
            {
              node {Child2}
                child { node {Child3} }
            }
        }
    };
\end{tikzpicture}

\end{document}

在此处输入图片描述

注意:\tikzstyle已过时,最好使用\tikzset,例如:

\tikzset{
  every node/.style={draw=black, thick, anchor=west},
}

tikzpicture但由于这个特定设置相当具有侵入性,我更喜欢在需要的地方的选项中进行设置。这样,它就不会影响tikzpicture同一文档的其他环境(参见上面的例子)。

相关内容